Abbruch einer "mysql_fetch_assoc"
Nick
- datenbank
Hallo Liebe Leute,
ich habe den Inhalt meiner Datenbank mit vielen Zeilen in meine Variable $test_set geschrieben. Folgend gebe ich nun Zeile für Zeile aus:
[...
while ($test_row = mysql_fetch_assoc($test_set))
{
...] hier findet die Ausgabe statt [...
}
...]
Da die Datenbank jedoch recht viele Zeilen beinhaltet, möchte ich die Ausgabe der Zeilen selbst bestimmen, was ich eigentlich so realisieren wollte, dass der User eine Zahl bestimmt. Ich zähle dann einfach einen $counter bei jeder Zeilenausgabe hoch, bis die entsprechende Anzahl ausgegeben wurde. Sobald das der Fall ist, soll also die Ausgabe abbrechen, was ich einfach folgendermaßen umsetzen wollte:
$max = Anzahl der Ausgaben
[...
$counter="0";
while ($test_row = mysql_fetch_assoc($test_set))
{
...] hier findet die Ausgabe statt [...
$counter++;
if ($counter==$max)
{
$buch_set="";
}
}
...]
Ich hau da also mal so richtig mit nem Vorschlaghammer dazwischen ;)
Der Abbruch erfolgt zwar, jedoch kommt leider auch eine Fehlermeldung:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ...
Gibt es da eine schönere Lösung?
Aber bitte nicht so viel Fachchinesisch, ich bin nur Hobby-Programmierer
Danke
Hi,
Ich hau da also mal so richtig mit nem Vorschlaghammer dazwischen ;)
Nein, mit dem wurde jemandem auf den Kopf gehauen, wenn er das Gewuenschte auf diese Weise umzusetzen gedenkt.
Gibt es da eine schönere Lösung?
Natuerlich, MySQL kennt die LIMIT-Klausel. Jede andere Vorgehensweise waere extrem unsinnig.
MfG ChrisB
HI, ChrisB
Vielen Dank für Deinen Tipp - klappt soweit.
Kannst Du mir vielleicht noch einen kleinen Tipp geben?
Ich habe jetzt z.B. 10 von 50 Datensätzen ausgegeben.
Wenn der User jetzt auf einen Link klickt, möchte ich gerne die nächsten 10 ausgeben. Die ersten 10, sollen also NICHT ausgegeben werden.
Bei einem Gästebuch z.B. kann man ja meistens umblättern. Wie machen die das?
Danke vorab schon mal
Gruß Nick
Hi,
Ich hau da also mal so richtig mit nem Vorschlaghammer dazwischen ;)
Nein, mit dem wurde jemandem auf den Kopf gehauen, wenn er das Gewuenschte auf diese Weise umzusetzen gedenkt.
Gibt es da eine schönere Lösung?
Natuerlich, MySQL kennt die LIMIT-Klausel. Jede andere Vorgehensweise waere extrem unsinnig.
MfG ChrisB
Oh, da hat Marco GEdanken gelesen ;)
Oh, da hat Marco GEdanken gelesen ;)
Kein Problem ;-)
Hi,
Ich habe jetzt z.B. 10 von 50 Datensätzen ausgegeben.
Wenn der User jetzt auf einen Link klickt, möchte ich gerne die nächsten 10 ausgeben. Die ersten 10, sollen also NICHT ausgegeben werden.
Bei einem Gästebuch z.B. kann man ja meistens umblättern. Wie machen die das?
"Die" Zitieren erst mal vernuenftig, wenn sie auf Postings antworten.
Und dann haben "die" vermutlich einfach mal nach einem Stichwort wie Blaetterfunktion o.ae. gesucht.
MfG ChrisB
ich habe den Inhalt meiner Datenbank mit vielen Zeilen in meine Variable $test_set geschrieben. Folgend gebe ich nun Zeile für Zeile aus:
Schreibe nur die Zeilen rein, die auch ausgegeben werden sollen:
SELECT * FROM deinetabelle ORDER BY id DESC LIMIT 5
So werden bspw. die 5 Zeilen mit der größten ID genommen.
LIMIT 5, 10 -> so würden 5 Stück ausgegeben werden, beginnend ab dem 10.
Hello,
Schreibe nur die Zeilen rein, die auch ausgegeben werden sollen:
SELECT * FROM deinetabelle ORDER BY id DESC LIMIT 5
So werden bspw. die 5 Zeilen mit der größten ID genommen.
LIMIT 5, 10 -> so würden 5 Stück ausgegeben werden, beginnend ab dem 10.
umgekehrt: Bei Angabe von zwei Parametern bedeutet es $offset, $anzahl
Also werden 10 datensätze ab dem 6. Datensatz in der selekierten Menge ausgegeben.
Die Start-Position ist also abhängig von der Selektion. Sie hat nichts mit dem Datensatz selber zu tun.
Außerdem is select * nicht schön. Besser wäre es, sich gleich an "select $fieldlist" zu gewöhnen, wobei $fieldlist eine kommaseparierte Liste der anzuzeigenden Felder darstellt. Nur bei (horizontal) ganz kleinen Tabellen, bei denen sowieso (fas) alle Spalten ausgegebn werden sollen, ist es egal. Anderenfalls sollte man die Ergebnismenge immer so klein, wie gerade benötigt, halten.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg