Daten aus DB ausgeben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abstand
anzahl
ausgeben
code
dank
element
ende
hilfe
kategorie
ordern
reihe
rezept
schauen
schleife
sortieren
sortierung
spalte
tag
vermeiden
-
Hi !
Ich habe hier ein Script, mit dem ich Datensätze aus meiner DB in 3 tag/reihe">Reihen ausgeben kann:
<?php echo '<table border="0" width="40%">'; $neue_zeile = 3; $ende_zeile = false; $result = mysql_query("SELECT * FROM rezepte WHERE kategorie = 'backrezepte';"); while($rows = mysql_fetch_array($result)) { if($neue_zeile==3) { echo '<tr>'; $neue_zeile = 2; $ende_zeile = false; $abstand = true; } else if($neue_zeile==2) { $neue_zeile = 1; $ende_zeile = false; $abstand = true; } else if($neue_zeile==1) { $ende_zeile = true; $neue_zeile = 3; $abstand = false; } echo '<td style="width:30%"><table border="0" width="100%">'; echo '<tr><td><img src="'.$rows['bild'].'" height="50px" /></td>'; echo '<td><a href="rezept.php?zept='.$rows['rezeptname'].'">'.$rows['rezeptname'].'</a></td></tr></table></td>'; if($abstand) echo '<td style="width:5%"> </td>'; if($ende_zeile) echo '</tr>'; } // ende while echo '</table>'; ?>
Wenn ich ein neues Rezept eintrage, wird das ja immer am Ende angezeigt.
Wäre es vielleicht möglich, die Rezepte alphabetisch zu sortieren?
Also auch so in 3 Reihen
Mfg David ! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
<?php echo '<table border="0" width="40%">'; $result = mysql_query("SELECT * FROM rezepte WHERE kategorie = 'backrezepte' order by rezeptname;"); $count = 0; while($rows = mysql_fetch_array($result)) { if ($count % 3 == 0) echo '<tr>'; echo '<td style="width:30%"><table border="0" width="100%">'; echo '<tr><td><img src="'.$rows['bild'].'" height="50px" /></td>'; echo '<td><a href="rezept.php?zept='.$rows['rezeptname'].'">'.$rows['rezeptname'].'</a></td></tr></table></td>'; echo ($count % 3 == 2) ? '</tr>' : '<td style="width:5%"> </td>'; $count ++; } echo '</table>'; ?>
Das "order by" im SQL sortiert dir die Elemente. Das ganze $ende_zeile und $dingsbums_zeile hab ich auch mal rausgenommen. Sah ja ziemlich wüst aus.
Beitrag zuletzt geändert: 30.7.2009 22:58:50 von census -
Hi,
wenn ich dich richtig verstehe, dann reicht es, wenn du bereits die Sortierung in der sql Abfrage einbaust mit ORDER BY:
$result = mysql_query("SELECT * FROM rezepte WHERE kategorie = 'backrezepte' ORDER BY [gewünschte Sortierspalte];");
Gruß
Manni -
Noch etwas, falls die Anzahl der Rezepte nicht durch 3 teilbar ist, wird das ganze zwar noch richtig dargestellt, aber du hast kein valides HTML mehr, weil der </tr>-Tag fehlt. Um das zu vermeiden, solltest du nach der Schleife noch schauen in welcher Spalte du stehst und evtl die table row schließen:
<?php echo '<table border="0" width="40%">'; $result = mysql_query("SELECT * FROM rezepte WHERE kategorie = 'backrezepte' order by rezeptname;"); $count = 0; while($rows = mysql_fetch_array($result)) { if ($count % 3 == 0) echo '<tr>'; echo '<td style="width:30%"><table border="0" width="100%">'; echo '<tr><td><img src="'.$rows['bild'].'" height="50px" /></td>'; echo '<td><a href="rezept.php?zept='.$rows['rezeptname'].'">'.$rows['rezeptname'].'</a></td></tr></table></td>'; echo ($count % 3 == 2) ? '</tr>' : '<td style="width:5%"> </td>'; $count ++; } if ($count % 3 != 0) echo '</tr>'; echo '</table>'; ?>
Beitrag zuletzt geändert: 30.7.2009 23:03:00 von census -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage