Patrick Schröder: MySQL-Abfrage: erster Datensatz wird nicht ausgegeben

Hallo Ihr!

Ich schlage mich jetzt seit ein paar Stunden mit einer MySQL-Abfrage herum, wo mir das Ergebnis einfach schleierhaft ist.

Ich mache einen query und bekomme das Ergebnis per while-Schleife in einer Tabelle ausgegeben.
Wenn ich per mysql_num_rows oder auch mysql_affected_rows die Anzahl der Ergebnisse abfrage, kommt in meinem speziellen Fall 9 heraus. Trotzdem werden aber nur 8 ausgegeben. Die Datensätze werden nach drei Kriterien sortiert und es werden partou nur 8 der 9 Ergebnisse ausgegeben.

Der Quelltext als solches ist durch zusätzliche Abfragen zu umfangreich, als dass es hier Sinn machen würde, ihn komplett einzukopieren. Daher nur der Aussschnitt, der effektiv wichtig für die Schleife ist.

//---------------------------
$sql = "SELECT * FROM wohnungen WHERE firma = '$firma' && ort = '$ort' && name = '$name' ORDER BY strasse, xxx, nr";
$result = mysql_query($sql);

if (!$row = mysql_fetch_array($result)) echo "<tr><td align="center"><b>Derzeit keine Einträge vorhanden</b></td><tr>";

while ($row = mysql_fetch_array($result)) {
    // Daten werden per Tabelle ausgegeben
}
//---------------------------

Hat jemand eine Erklärung dafür? Wenn ich mich recht entsinne, ist mir sowas mit einer entsprechenden Schleife bisher noch nicht passiert. Oder seh ich den Wald vor lauter Bäumen nicht mehr?

Danke für eure Hilfe.

Gruß Patrick

  1. Hi,

    Ich schlage mich jetzt seit ein paar Stunden mit einer MySQL-Abfrage herum, wo mir das Ergebnis einfach schleierhaft ist.

    Ich mache einen query und bekomme das Ergebnis per while-Schleife in einer Tabelle ausgegeben.
    Wenn ich per mysql_num_rows oder auch mysql_affected_rows die Anzahl der Ergebnisse abfrage, kommt in meinem speziellen Fall 9 heraus. Trotzdem werden aber nur 8 ausgegeben. Die Datensätze werden nach drei Kriterien sortiert und es werden partou nur 8 der 9 Ergebnisse ausgegeben.

    if (!$row = mysql_fetch_array($result)) echo "<tr><td align="center"><b>Derzeit keine Einträge vorhanden</b></td><tr>";

    Hier hast Du den ersten Datensatz gelesen, ohne ihn auszugeben.

    while ($row = mysql_fetch_array($result)) {

    und hier holst Du jedesmal den nächsten, bis keine mehr vorhanden sind, um sie anzuzeigen.
    Der erste ist aber schon weg

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    1. Hallo Andreas!

      Uppala... was soll ich sagen? Hast Recht!

      Danke dir trotzdem!

      Gruß Patrick

      1. Hi,

        Uppala... was soll ich sagen? Hast Recht!

        Danke dir trotzdem!

        trotzdem? Also ich danke sonst auch immer nur den Leuten, die mir was falsches sagen ;)

        mfg
        Philipp

  2. Hallo Patrick,

    Hallo Ihr!
    Ich schlage mich jetzt seit ein paar Stunden mit einer MySQL-Abfrage herum, wo mir das Ergebnis einfach schleierhaft ist.

    Einigen wir uns darauf, dass Dir die Ausgabe schleierhaft ist ;-)

    Wenn ich per mysql_num_rows oder auch mysql_affected_rows die Anzahl der Ergebnisse abfrage, kommt in meinem speziellen Fall 9 heraus. Trotzdem werden aber nur 8 ausgegeben. Die Datensätze werden nach drei Kriterien sortiert und es werden partou nur 8 der 9 Ergebnisse ausgegeben.
    //---------------------------
    $sql = "SELECT * FROM wohnungen WHERE firma = '$firma' && ort = '$ort' && name = '$name' ORDER BY strasse, xxx, nr";
    $result = mysql_query($sql);

    if (!$row = mysql_fetch_array($result)) echo "<tr><td align="center"><b>Derzeit keine Einträge vorhanden</b></td><tr>";

    Hier liest Du den ersten Datensatz aus, falls einer vorhanden ist

    while ($row = mysql_fetch_array($result)) {

    Und hier überschreibst Du das mit dem zweiten Datensatz

    // Daten werden per Tabelle ausgegeben
    }
    //---------------------------

    Hat jemand eine Erklärung dafür? Wenn ich mich recht entsinne, ist mir sowas mit einer entsprechenden Schleife bisher noch nicht passiert. Oder seh ich den Wald vor lauter Bäumen nicht mehr?

    Da Du Deinen ersten Datensatz grundsätzlich überschreibst, gibst Du stets einen Datensatz weniger aus als Deine Abfrage zurückliefert.

    Danke für eure Hilfe.

    Aber bitte :-)

    Gruß Patrick

    Freundliche Grüße,

    Vinzenz