muenzchen: MySQL Abfrage muss nach while Schleife wiederholt werden?

Hallo!

Ich habe eine MySQL Abfrage, deren zurückgegebene Daten ich danach mit PHP in einer while Schleife abfrage und ausgebe:

while ($part = mysql_fetch_array($get_query)) {
...
}

Wenn ich nach dieser while Schleife nochmals andere Daten aus der MySQL Abfrage ausgeben will, tut sich einfach nichts mehr. Nicht mal eine Fehlermeldung kommt. Sind die Daten da etwa schon gelöscht, oder was ist da los?

Wenn ich die gleiche Abfrage nach der 1. while Schleife nochmal starte, gehts wieder.

MfG, muenzchen

  1. Hallo muenzchen,

    Wenn ich nach dieser while Schleife nochmals andere Daten aus der MySQL Abfrage ausgeben will, tut sich einfach nichts mehr.

    mysql_fetch_array liefert ein Array, mit dem inhalt der Abfrage, durch die while-Schleife wird dieser Array durchlaufen, und in $part zwischengespeichert und dann verwendet wird. Deswegen funktioniert das zugreifen auf den Inhalt nach der Schleife nicht mehr. Wenn du nach der Schleife noch auf die Inhalte zugreifen willst, könntest du das ganze in einem Array speichern:
    $i=0;
    while($part = ...){
    ...
    $abfrageninhalt[$i][id] = $part[id]; //und das eben für jede spalte
    $i++;
    }
    hth - und ist auch halbwegs verständlich :-)

    Grüße aus Nürnberg
    Tobias

    1. Hm, stimmt, faran habe ich ja gar nicht gedacht, dass der Array nur für die erste while Schleife gilt.

      Ich denke ich habs kapiert, danke :)

      MfG, muenzchen

      1. Hallo,

        wenn nicht ein besonderer Grund dafür besteht, dann würde ich nicht mysql_fetch_array() benutzen, sondern die spezialisierten Lösungen mysql_fetch_row() (liefert ein indiziertes Array) oder mysql_fetch_assoc() (liefert ein assoziatives Array, wie es meistens gebraucht wird)

        mysql_fetch_array() leifert BEIDE Arrays. Die haben aber nichts miteinander zu tun. Wenn sie erstellt sind, besteht keine Verbindung mehr zischen ihnen. Sie kosten nur unnötig Speicherplatz und Erstellungs-Power.

        mysql_fetch_xxx() funktioniert do ähnlich wie ein readln() bei guten alten Hochsprachen. Der Dateizeiger rückt immer auf den Anfang des nächsten Datensatzes des Resultsets weiter.

        Mit mysql_data_seek($result,$row) kann man diesen Zeiger neu positionieren und zwar zeilenweise (also "satzweise").

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
  2. Wenn ich nach dieser while Schleife nochmals andere Daten aus
    der MySQL Abfrage ausgeben will, tut sich einfach nichts mehr.
    Nicht mal eine Fehlermeldung kommt. Sind die Daten da etwa
    schon gelöscht, oder was ist da los?

    du kannst in deinem fall nur innerhalb der while-schleife auf die datenbankinhalte zugreifen. da du mit einer while-schleife MEHRERE datensätze gleichzeitig abrufst, weiß ich auch nich wieso du später ohne schleife wieder mehrere datensätze anzeigen möchtest? entweder speicherst du innerhalb der while-schleife gewünschte infos in einem array oder rufst die schleife erneut auf.

    bisschen wenig code um genaueres zu sagen.
    viel erfolg.

  3. Hi,

    Ich habe eine MySQL Abfrage, deren zurückgegebene Daten ich danach mit PHP in einer while Schleife abfrage und ausgebe:
    Wenn ich nach dieser while Schleife nochmals andere Daten aus der MySQL Abfrage ausgeben will, tut sich einfach nichts mehr.

    mysql_data_seek ?

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.