Moin!
Ich hatte aus Versehen vor der Ausgabe-Schleife nochmal mysql_fetch_array() stehen, dadurch fehlte immer der erste Datensatz so wie Sönke mir schon unten zu einem anderen Thema geschrieben hat, aber vestehen tue ich das nicht. Man bezieht sich dann doch immer auf den array, wieso kommt man automatisch bei jeder Abfrage an den Array zum nächsten Datensatz?
mysql_fetch_array() macht folgendes: Es liest den aktuellen Datensatz und schiebt den Datensatzzeiger eins weiter.
Die Erwähnung von "aktueller Datensatz" und "schiebt eins weiter" legt nahe, daß es irgendeinen Zeiger gibt, der nach mysql_query() zunächst wohl auf den ersten Datensatz zeigt, damit dieser vom ersten mysql_fetch_array() gelesen werden kann.
Jeder Aufruf von mysql_fetch_array() fordert also aus der Ergebnisliste die nächste Zeile ab, sofern nicht von außen eingegriffen wird.
Diesen Eingriff von außen kann man beispielsweise mit der Funktion mysql_data_seek() erreichen.
http://www.php.net/manual/de/function.mysql-data-seek.php
Bemerke, daß durch mysql_fetch_array() keinesfalls immer das gleiche Array angesprochen wird. Es existiert nach einer SQL-Abfrage garkein Array auf Seiten von SQL. Mit mysql_fetch_array() weist du eine Ergebniszeile an ein Array zu. Hinterher hat das Array die Informationen der Ergebniszeile - ganz unabhängig davon, was vorher war, wird ein eventuell enthaltener Inhalt des Arrays dabei überschrieben.
Und noch eine Eigenschaft ist praktisch: Wenn mysql_fetch_array() keine Ergebniszeile mehr zuweisen kann, wird das Ergebnis der Zuweisung "false". Man kann also ganz prima ohne Wissen darum, wie viele Ergebniszeilen es gibt mit
while ($array = mysql_fetch_array($result))
{
//Zeile bearbeiten und ausgeben
}
alle Zeilen abarbeiten.
- Sven Rautenberg