• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

daten sortieren und ausgeben

mustang

Mitglied
hallo leute,

ich habe ein problem mit der ausgabe einer tabelle.
meine tabelle sieht folgendermaßen aus:
|---id---|--url--|-anzahl-|
|---1---|-1.php|---3----|
|---2---|-2.php|---1----|
|---3---|-3.php|---0----|
|---4---|-4.php|---9----|
|---5---|-5.php|---4----|
und ich möchte mir diese tabelle auf meiner seite nach der anzahl sortiert ausgeben lassen

ich habe mir jetzt schon eine abfrage zusammengebastelt:

$abfrage = mysql_query("SELECT id, url, anzahl FROM seiten ORDER BY anzahl");
$tabelle = mysql_fetch_array($abfrage, MYSQL_NUM);

mit "echo $tabelle[0];" bekomme ich 3,
mit "echo $tabelle[1];" bekomme ich 3.php und mit
mit "echo $tabelle[2];" bekomme ich 0 heraus.

das entspricht also dem datensatz mit den wenigsten seitenzugriffen.
aber wie komme ich denn jetzt an den nächsten datensatz?
sprich mit id="2", url="2.php" und anzahl="1";
 
ah ok habs. wusste ich gar nicht, dass es sowas wie eine myswl-while-schleife gibt^^
für alle nachfolgenden:

PHP:
<table>
<?php $abfrage = mysql_query("SELECT id, url, anzahl FROM seitenbesucht ORDER BY anzahl");
while ($tabelle = mysql_fetch_array($abfrage, MYSQL_NUM)) {
echo "<tr><td>".$tabelle[0]."</td><td>".$tabelle[1]."</td><td>".$tabelle[2]."</td></tr>";
}
?>
</table>
wenn ich das jetzt richtig verstanden habe, dann ist in dem fall die bedingung, dass noch daten vorhanden und ausgegeben werden, oder? also solange etwas an die variable $tabelle ausgegeben wird, solange funktionert die schleife?!
 
Ja, im Prinzip schon.

Code:
while ($tabelle = mysql_fetch_array($abfrage, MYSQL_NUM)) {

Diese Zeile weist $tabelle jeweils den nächsten Eintrag aus dem MySQL-Rückgabeset zu beziehungsweise den Wert false, wenn keine weiteren Einträge mehr vorliegen. Der Wert von $tabelle wird dann als Bedingung für die while-Schleife ausgewertet. Hier wird der Umstand ausgenutzt, dass ein nicht-leeres Array als (bool) true gilt und somit die Schleife weiterläuft, solange bis $tabelle schließlich mit dem Wert false belegt wird.

Die Zeile oben ließe sich auch so schreiben:

Code:
$tabelle = mysql_fetch_array($abfrage, MYSQL_NUM)
while ($tabelle != false) {
    // ...
    $tabelle = mysql_fetch_array($abfrage, MYSQL_NUM)
}
 
Zurück
Oben