Ordenen volgens reactie
Frederic - 13/04/2005 13:57
PHP ver gevorderde
Ik heb op mijn forum volgend systeem om alle gegevens op te halen, maar nu is mijn vraag: hoe kan ik het instellen zodat de weergave gebeurt zoals hier op SM: gerangschikt volgens laatste reactie, en indien er geen reacties zijn volgens datum van topic?
$sql = mysql_query("SELECT `*` FROM `forum` ORDER BY `id` DESC") or die(mysql_error());
$i=0;
while ($rij = mysql_fetch_assoc($sql)){
$kleur = ($kleur == "#E9E9E9" ? "#F0F0F0": "#E9E9E9");
$topicid = ($rij["id"]);
$datum = htmlspecialchars($rij["datum"]);
$titel = htmlspecialchars($rij["titel"]);
$naam = htmlspecialchars($rij["naam"]);
activeer_ubb($titel);
$hits = $rij["hits"];
$reacties_sql = mysql_query("SELECT id, naam, datum, tijd FROM forum_reactie WHERE topicid='".$topicid."' ORDER BY id DESC");
$reacties = mysql_num_rows($reacties_sql);
$rij_reacties = mysql_fetch_assoc($reacties_sql);
$reacties_naam = $rij_reacties["naam"];
$reacties_datum = $rij_reacties["datum"];
$reacties_tijd = $rij_reacties["tijd"];
//Datum onderzoeken
$vandaag = date('d-m');
$post_datum = substr($reacties_datum, 0, 5);
if($post_datum == $vandaag)
{
$reacties_datum = substr($reacties_tijd,0,5);
$reacties_datum = "<i>".str_replace(":", "u", $reacties_datum)."</i>";
}
else
{
$reacties_datum = substr($reacties_datum, 0, 5);
}
$laatste_reactie = "[".$reacties_datum."]".ucfirst($reacties_naam);
if ($reacties == 0)
{
$laatste_reactie = "Nog niemand";
}
//Navigatiepagina zoeken
$sql1 = mysql_query("SELECT COUNT(id) FROM forum_reactie WHERE topicid='".$topicid."'") or die("SQL1:". mysql_error());
$totaal_aantal = mysql_result($sql1, 0);
mysql_free_result($sql1);
$aantal_items_per_pagina = 15;
$aantal_paginas = ceil($totaal_aantal / $aantal_items_per_pagina);
$aantal_paginas+=1;
?>
<tr>
<td valign=top bgcolor="<?php echo $kleur; ?>" class="normaal-tabel"><div align="center"><img alt="Topic" title="Topic" src="afbeeldingen/klein/topic.gif"></div></td>
<td width="76" valign=top bgcolor="<?php echo $kleur; ?>" class="normaal-tabel"><a href="?Pagina=Forum&actie=toon&id=<?php echo $topicid; ?>&navigatiepagina=<?php echo $aantal_paginas - 1 ;?>"><?php echo $datum; ?></a></td>
<td width="156" valign=top bgcolor="<?php echo $kleur; ?>" class="normaal-tabel"><a href="?Pagina=Forum&actie=toon&id=<?php echo $topicid; ?>&navigatiepagina=<?php echo $aantal_paginas - 1 ;?>"><?php echo $titel; ?></a></td>
<td width="107" valign=top bgcolor="<?php echo $kleur; ?>" class="normaal-tabel"><a href="?Pagina=Forum&actie=toon&id=<?php echo $topicid; ?>&navigatiepagina=<?php echo $aantal_paginas - 1 ;?>"><?php echo $naam; ?></a></td>
<td width="54" valign=top bgcolor="<?php echo $kleur; ?>" class="normaal-tabel"><div align="right"><a href="?Pagina=Forum&actie=toon&id=<?php echo $topicid; ?>&navigatiepagina=<?php echo $aantal_paginas - 1 ;?>">
<?php
echo $reacties
?>
</a></div></td>
<td width="55" valign=top bgcolor="<?php echo $kleur; ?>" class="normaal-tabel"><div align="right">
<a href="?Pagina=Forum&actie=toon&id=<?php echo $topicid; ?>&navigatiepagina=<?php echo $aantal_paginas - 1 ;?>">
<?php
echo $hits
?>
</a></div></td>
<td width="140" valign=top bgcolor="<?php echo $kleur; ?>" class="normaal-tabel"><div align="right"><a href="?Pagina=Forum&actie=toon&id=<?php echo $topicid; ?>&navigatiepagina=<?php echo $aantal_paginas - 1 ;?>#nieuwste_"><?php echo $laatste_reactie; ?></a></div></td>
</tr>
<?php
$i++;
}
$sql = mysql_query("SELECT `*` FROM `forum` ORDER BY `id` DESC") or die(mysql_error());
$i=0;
while ($rij = mysql_fetch_assoc($sql)){
$kleur = ($kleur == "#E9E9E9" ? "#F0F0F0": "#E9E9E9");
$topicid = ($rij["id"]);
$datum = htmlspecialchars($rij["datum"]);
$titel = htmlspecialchars($rij["titel"]);
$naam = htmlspecialchars($rij["naam"]);
activeer_ubb($titel);
$hits = $rij["hits"];
$reacties_sql = mysql_query("SELECT id, naam, datum, tijd FROM forum_reactie WHERE topicid='".$topicid."' ORDER BY id DESC");
$reacties = mysql_num_rows($reacties_sql);
$rij_reacties = mysql_fetch_assoc($reacties_sql);
$reacties_naam = $rij_reacties["naam"];
$reacties_datum = $rij_reacties["datum"];
$reacties_tijd = $rij_reacties["tijd"];
//Datum onderzoeken
$vandaag = date('d-m');
$post_datum = substr($reacties_datum, 0, 5);
if($post_datum == $vandaag)
{
$reacties_datum = substr($reacties_tijd,0,5);
$reacties_datum = "<i>".str_replace(":", "u", $reacties_datum)."</i>";
}
else
{
$reacties_datum = substr($reacties_datum, 0, 5);
}
$laatste_reactie = "[".$reacties_datum."]".ucfirst($reacties_naam);
if ($reacties == 0)
{
$laatste_reactie = "Nog niemand";
}
//Navigatiepagina zoeken
$sql1 = mysql_query("SELECT COUNT(id) FROM forum_reactie WHERE topicid='".$topicid."'") or die("SQL1:". mysql_error());
$totaal_aantal = mysql_result($sql1, 0);
mysql_free_result($sql1);
$aantal_items_per_pagina = 15;
$aantal_paginas = ceil($totaal_aantal / $aantal_items_per_pagina);
$aantal_paginas+=1;
?>
<tr>
<td valign=top bgcolor="
<?php echo $kleur ; ?> " class="normaal-tabel"><div align="center"><img alt="Topic" title="Topic" src="afbeeldingen/klein/topic.gif"></div></td>
<td width="76" valign=top bgcolor="
<?php echo $kleur ; ?> " class="normaal-tabel"><a href="?Pagina=Forum&actie=toon&id=
<?php echo $topicid ; ?> &navigatiepagina=
<?php echo $aantal_paginas - 1 ; ?
> ">
<?php echo $datum ; ?> </a></td>
<td width="156" valign=top bgcolor="
<?php echo $kleur ; ?> " class="normaal-tabel"><a href="?Pagina=Forum&actie=toon&id=
<?php echo $topicid ; ?> &navigatiepagina=
<?php echo $aantal_paginas - 1 ; ?
> ">
<?php echo $titel ; ?> </a></td>
<td width="107" valign=top bgcolor="
<?php echo $kleur ; ?> " class="normaal-tabel"><a href="?Pagina=Forum&actie=toon&id=
<?php echo $topicid ; ?> &navigatiepagina=
<?php echo $aantal_paginas - 1 ; ?
> ">
<?php echo $naam ; ?> </a></td>
<td width="54" valign=top bgcolor="
<?php echo $kleur ; ?> " class="normaal-tabel"><div align="right"><a href="?Pagina=Forum&actie=toon&id=
<?php echo $topicid ; ?> &navigatiepagina=
<?php echo $aantal_paginas - 1 ; ?
> ">
<?php
?>
</a></div></td>
<td width="55" valign=top bgcolor="
<?php echo $kleur ; ?> " class="normaal-tabel"><div align="right">
<a href="?Pagina=Forum&actie=toon&id=
<?php echo $topicid ; ?> &navigatiepagina=
<?php echo $aantal_paginas - 1 ; ?
> ">
<?php
?>
</a></div></td>
<td width="140" valign=top bgcolor="
<?php echo $kleur ; ?> " class="normaal-tabel"><div align="right"><a href="?Pagina=Forum&actie=toon&id=
<?php echo $topicid ; ?> &navigatiepagina=
<?php echo $aantal_paginas - 1 ; ?
> #nieuwste_">
<?php echo $laatste_reactie ; ?> </a></div></td>
</tr>
<?php
$i ++;
}
4 antwoorden
Gesponsorde links
Disa - 13/04/2005 15:03
PHP interesse
alles in een array steken zou een mogelijkheid zijn maar ik dnek dat het ook wel via MySQL gaat.
disa
Frederic - 13/04/2005 15:59
PHP ver gevorderde
daar ben ik naar op zoek ja, naar de MySQL methode
Disa - 13/04/2005 16:08
PHP interesse
Sorteren volgens de comments date en met een join het topic afhalen:
SELECT COUNT(r.id) FROM forum_reactie r
LEFTJOIN forum f ON (f.topicid = r.topicid)
ORDER BY r.datum DESC
LIMIT 0,10
zoiets, ik weet wel niet of het helemaal hetzelfde is als jouw sql structuur.
disa
Frederic - 13/04/2005 16:23 (laatste wijziging 13/04/2005 20:06)
PHP ver gevorderde
Dit is mijn structuur:
CREATE TABLE `forum` (
`id` int(10) unsigned NOT NULL auto_increment,
`naam` varchar(100) default NULL,
`email` varchar(150) default NULL,
`homepage` text NOT NULL,
`titel` text,
`inhoud` text,
`datum` varchar(12) default NULL,
`tijd` time default NULL,
`hits` int(5) NOT NULL default '0',
PRIMARY KEY (`id`),
FULLTEXT KEY `titel` (`titel`,`inhoud`)
) TYPE=MyISAM AUTO_INCREMENT=57 ;
CREATE TABLE `forum` (
`id` int( 10 ) unsigned NOT NULL auto_increment,
`naam` varchar( 100 ) default NULL ,
`email` varchar( 150 ) default NULL ,
`homepage` text NOT NULL ,
`titel` text,
`inhoud` text,
`datum` varchar( 12 ) default NULL ,
`tijd`
time default NULL , `hits` int( 5 ) NOT NULL default '0' ,
FULLTEXT
KEY `titel`
( `titel`
, `inhoud`
) ) TYPE= MyISAM AUTO_INCREMENT= 57 ;
&
CREATE TABLE `forum_reactie` (
`id` int(10) unsigned NOT NULL auto_increment,
`topicid` varchar(100) default NULL,
`naam` varchar(100) default NULL,
`email` varchar(150) default NULL,
`homepage` text,
`bericht` text,
`datum` varchar(12) default NULL,
`tijd` time default NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `naam` (`naam`,`bericht`)
) TYPE=MyISAM AUTO_INCREMENT=2457 ;
CREATE TABLE `forum_reactie` (
`id` int( 10 ) unsigned NOT NULL auto_increment,
`topicid` varchar( 100 ) default NULL ,
`naam` varchar( 100 ) default NULL ,
`email` varchar( 150 ) default NULL ,
`homepage` text,
`bericht` text,
`datum` varchar( 12 ) default NULL ,
`tijd`
time default NULL , FULLTEXT
KEY `naam`
( `naam`
, `bericht`
) ) TYPE= MyISAM AUTO_INCREMENT= 2457 ;
//Edit:
Aan jouw code kan ik niet echt uit, wat is dat met die r's en die f's?
Gesponsorde links
Dit onderwerp is gesloten .