MySQL: Erster Eintrag wird ignoriert

  • Hallo

    Ich mache eine ganz einfache MySQL Abfrage, bei der ich alle Einträge abfrage.
    Diese möchte ich dann auflisten, doch es ignoriert einfach immer den ersten Eintrag.
    Warum, weiss ich nicht.

    Hier die Date, mit welcher die Abfrage duchgeführt wird:

    Vielleicht die Verbindungsdatei auch noch, doch ich denke, der Fehler liegt nicht da drin.

    Ausgabe:

    Zitat

    <option>Scheidegger</option><option>Rohner</option>

  • Wieso machst du denn erst $a_seller = mysql_fetch_array($mysql); und dann nochmal ein Loop ?

    Wenn ich deine "seller" ausgeben wollte, dann würde ich das so probieren:

    PHP
    <?php
    $sql = "SELECT `name` FROM `seller`";
    $query_seller = mysql_query($sql);
    
    
    while ($fseller = mysql_fetch_assoc($query_seller))
    {
        echo '<option>' . $fseller['name'] . '</option>';
    }
    ?>

    Normalerweise ist es auch nicht gut ohne LIMIT zu arbeiten, aber ich nehme mal an, dass die Anzahl der Datensätze überschaubar bleibt.

    Gruß crAzywuLf :D

    Einmal editiert, zuletzt von crAzywuLf (18. Dezember 2009 um 16:20)

  • @bandit600:
    Ich brauch eben alle Spalten.
    Ich weiss schon, dass ich nur die Spalten auswähen sollte, die ich wirklich brauche.
    Aber in diesem Beispiel habe ich einfach mal die anderen Spalten weggelassen.
    Ist mir natürlich klar ;)

    @crazy:
    Danke, die Lösung habe ich gerade eben auch gefunden.
    Ich hatte das geschrieben und nun vergessen, weg zu machen.

    Denn jetzt funktionierts einwandfrei, wieder mal eine Situation à la "Head-meets-Tischplatte". :D

    Aber weiss zufällig jemand, warum das so ist, dass der erste Eintrag ignoriert wird, wenn ich vorher bereits ein mysql_fetch_array() habe?
    Das leuchtet mir irgendwie nicht ein.

    Aber danke schon mal für die Antwort.

  • Ich arbeite immer mit mysqli(); und da läuft das so ab:
    Man sendet den query

    PHP
    $resultat=$db->query($sql);


    dann werden in $resultat alle datensätze, die vom query() zurückkomemn gespeichert.
    Und mit jedem

    PHP
    $ergeb=$resultat->fetch_array();


    wird der nächste datensatz geholt. Ain deim fall sähs so aus:

    PHP
    $sql="SELECT name FROM seller";
    if ($resultat=$db->query($sql)) {
        while ($ergeb=$resultat->fetch_array()) {
            echo "<option>".$ergeb['name']."</option>";
        }
    }


    Damit hats 100%ig was zu tun.

    P.S.: Die Codesnippets sind nur zur veranschualichung, nit zu Doku vom Objekt-SQL ;)

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Aber weiss zufällig jemand, warum das so ist, dass der erste Eintrag ignoriert wird, wenn ich vorher bereits ein mysql_fetch_array() habe?
    Das leuchtet mir irgendwie nicht ein.


    Haaaalllooooo??? Wieder mal keine Lust selber zu denken? Was passiert hier:

    PHP
    while ($fseller = mysql_fetch_assoc($query_seller))


    Da werden doch alle gefundenen Datensätze ausgelesen, oder? Und zwar vom ersten bis zum letzen Datensatz, oder? Was passiert also, wenn man ein mysql_fetch_assoc vor der Schleife hat?? Könnte es sein, dass dann der erste Datensatz gelesen wurde und der interne Pointer auf dem zweiten Datensatz steht???

  • Na, danke.

    Bin nicht zu faul zum Denken.
    Mir kam das nicht in den Sinn, dass das so sein könnte.
    Also bitte freundlicher erklären, habe bereits nach einer möglichen Erklärung gesucht und auch jemanden gefragt.

    Aber nun ist es ja geklärt.
    Hauptsache es funktioniert einfach.