Schleife mit Zähler - keine Funktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Schleife mit Zähler - keine Funktion

    Hallo Leute!

    Habe ein kleines (und wahrscheinlich total dummes) Problem mit meiner Schleife. Aber ich steh wohl momentan auf dem Schlauch:

    PHP-Code:
    <?php    $abfrage mysql_query("SELECT platten.platten_id FROM platten INNER JOIN platten_band_zuordnung ON platten.platten_id=platten_band_zuordnung.platten_id
                                        WHERE band_id = 
    $b_id;");
                
    $data mysql_fetch_array($abfrage);
                
    $abfrage1 mysql_query("SELECT * from platten where platten_id = $data[0];");
                
    $i=1;
                while (
    $data1 mysql_fetch_array($abfrage1)) // Schleife für Ausgabe der Datensätze
                
    {
                echo 
    " <tr align=\"center\"> "// Ausgabe der Datensätze, pro Datensatz eine Reihe
                
    echo " <td align=\"center\" width=\"170\">" $data1[$i]. "</td>";
                echo 
    " </tr> ";
                
    $i=$i+1;
                }
        
    ?>
    Die MySQL Abfrage stimmt, hab ich überprüft. Alle Daten aus der Tabelle sind vorhanden, aber die Ausgabe mit Hilfe des Zählers klappt nicht. Er springt immer wieder zurück auf die 1 und ich versteh nicht wieso

  • #2
    Setz mal
    PHP-Code:
    var_dump($data1); 
    in die while-Schleife ein!

    Kommentar


    • #3
      Hi,

      Ich glaube, dass deine Zählvariable keinen Sinn macht.

      Im ersten Durchlauf gibst du vom Array(1. Datensatz) den zweiten Wert aus, im zweiten Durchlauf gibts du vom 2. Datensatz den dritten Wert aus usw.

      Du benötigst entweder eine Schleife in der Schleife, die die einzelnen Array Elemente anspricht, oder du lässt dir einfach den festen Wert aus dem Array ausgeben (welches mit 0 und nicht mit 1 anfängt).

      Gruß Thomas

      Kommentar


      • #4
        Warum schreibst du nicht statt
        $i = $i + 1;
        das hier:

        $i++;
        ?

        Gruß
        icecream
        icedcream.de Webdesign Regensburg

        Kommentar


        • #5
          Also ich hab doch ein Array mit den Felder 0,1,2,3,4, usw.
          So, jetzt will ich in der Schleife diese Felder nacheinander, pro Zeile 1 Wert, ausgeben. (Das Array fängt mit 0 an aber der Wert hat keine Bedeutung, deswegen fang ich bei Feld 1 an)

          Ich versteh nicht so ganz warum es nicht klappt, die Zählvariable wird mit 1 initalisiert und am Ende der Schleife um 1 erhöht. Demnach müsste sie doch wenn es wieder in die Schleife geht um 1 höher sein oder?

          Kommentar


          • #6
            1. brich den code um!
            2. alrik hat recht, die benutzung von einem zähler ist an dieser stelle totaler unfug. du hast in $data1 immer einen aktuellen datensatz. die werte dieses arrays sind die _spalten_ - und es macht bei einer spalte keinen sinn irgendwas zu zählen. nimm an dieser stelle $data1[0] und schau dir an, was rauskommt.
            3.
            Er springt immer wieder zurück auf die 1 [...]
            was soll das bedeuten?
            4. icecream: jacke wie hose.

            Kommentar


            • #7
              Eija wenn ich auf $data1[0] stelle bekomme ich den ersten Wert des Arrays angezeigt. Nämlich die ID der Platte (Primärschlüssel), in diesem Falle "1". Und das war's. Nix mehr sonst.

              Kommentar


              • #8
                4. icecream: jacke wie hose.
                Schon klar, sieht aber schöner und übersichtlicher (meiner Meinung nach) aus .

                Gruß
                icecream
                icedcream.de Webdesign Regensburg

                Kommentar


                • #9
                  brich den code um!

                  und
                  PHP-Code:
                  echo $data[0] . $data[1]; 
                  etc. liefert etwa nicht das gewünschte?

                  Kommentar


                  • #10
                    Original geschrieben von penizillin
                    brich den code um!
                    Was bedeuted das? Wie bricht man einen Code um? Sorry.
                    Original geschrieben von penizillin

                    und
                    PHP-Code:
                    echo $data[0] . $data[1]; 
                    etc. liefert etwa nicht das gewünschte?
                    Doch natürlich, dann hätte ich selbstverständlich alle Datensätze. Aber die Tabelle ist nicht immer gleich gefüllt, d.h. die Anzahl der Datensätze variiert. Demnach brauche ich ja die Schleife die mir automatisch alle Datensätze der Tabelle ausgeben soll, so lange bis ich alle angezeigt bekommen. Vielleicht ist es jetzt verständlicher

                    Kommentar


                    • #11
                      Original geschrieben von el_espiritu
                      Was bedeuted das? Wie bricht man einen Code um?
                      RTFR
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Nabönd,

                        Dann Lass doch in deiner while Schleife noch eine foreach Schleife laufen.

                        Gruß Thomas

                        Kommentar


                        • #13
                          Hast anscheinend eine falsche Vorstellung, was dein $data1 angeht.

                          Dein SELECT liefert eine unbestimmte Anzahl Datensätze. Mit mysql_fetch_array() nimmst du dir einen davon.

                          In der While-Schleife wird $data1 also immer wieder neu belegt und zwar beim ersten Durchlauf mit dem ersten Datensatz, beim 2. Durchlauf mit dem zweiten ...
                          und beim letzten Durchlauf mit dem letzten Datensatz. Danach liefert mysql_fetch_array() nur false zurück und deswegen bricht die Schleife ab.

                          Wenn du dir in der Schleife $data1 mal ausgeben läßt (var_dump()), erkennst du dessen Struktur: Es ist ein einzeiliges Array mit so vielen Elementen, wie dein SELECT Spalten zurückliefert.

                          Kommentar

                          Lädt...
                          X