Ankündigung

Einklappen
Keine Ankündigung bisher.

for- und whileschleife verschachteln

Einklappen

Neue Werbung 2019

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

  • for- und whileschleife verschachteln

    Guten Tag,

    ich habe folgendes Problem.
    Ich habe eine For-Schleife und würde gern in dieser For-Schleife eine While einbauen. Im ersten Durchlauf der for-schleife wird auch die while-schleife durchgegangen aber in allen anderen durchläufen der for-schleife wird die while ignoriert
    hier mein code...
    PHP-Code:
    for($i=0;$i<count($datumArr);$i++){
            echo 
    "for $i <br>";
        while(
    $rowTermin mysqli_fetch_array($resultTermin)){
            echo 
    "while $i <br>";    
        }

    Ausgabe:
    for 0
    while 0
    while 0
    while 0
    while 0
    while 0
    while 0
    while 0
    while 0
    while 0
    while 0
    for 1
    for 2
    for 3
    for 4
    Könnt ihr mir sagen woran es liegt?

  • #2
    PHP-Code:
    while($rowTermin mysqli_fetch_array($resultTermin)){ 
    dein $rowTermin ist glaube ich nach dem ersten Durchlauf dann false.
    Deswegen geht er nichtmehr in die Schleife.

    Erkundige dich mal was die mysqli_fetch_array(); genau macht.
    http://php.net/manual/de/mysqli-result.fetch-array.php

    Soweit ich weiß wird da das Ergebnis der Mysql Abfrage (result) durchgegangen (Der Datenzeiger immer ein weiter gesetzt) und am Ende, wenn nichts mehr der Variable zugewiesen werden kann, wird "false" zurückgegeben...


    Edit:
    Du müsstest also glaube ich bei jedem neuen Durchlauf ein neues Ergebnis ($resultTermin) der Mysqli Abfrage durchprüfen (Außerhalb der While-Schleife $resultTermin einen neuen Wert zuweisen)?
    (Um das zu erreichen, was du erreichen willst)

    Kommentar


    • #3
      Wieso willst du den gleichen Datensatz x-mal ausgeben? Das geht nämlich 100mal eleganter und wird dein Problem auch lösen.
      Edit: Und wie der Vorposter schon sagte. Deine Response ist nach dem ersten Durchlauf false.
      Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

      Kommentar


      • #4
        also es geht um ne art terminkalender.
        mit der for-schleife geh ich die 5 tage der woche ab, und mit der while wollte ich die termine dieses tages abrufen. sollten nicht immer die gleichen ausgaben werde
        ich schau mal wie ich das mit dem false bereinigt kriege, danke schonmal

        Kommentar


        • #5
          Ich weiß nicht, ob es
          100mal eleganter
          geht,
          aber dann müsstest du IN der for Schleife (VOR der while Schleife) die Termine für den Tag der Variable $resultTermin zuweisen. Jedesmal. Für jeden Tag.

          Kommentar


          • #6
            habs anders gelöst. hab die termine in ein extra array gepackt, dass ich dann durchlaufe. dann gibts zumindest kein false.
            danke für die hilfe. kann geschlossen werden. unten der neue code...

            PHP-Code:
            $queryTermin "SELECT id, datum, vonzeit, biszeit, kursid, teilnehmer FROM termin ORDER BY vonzeit";
            $resultTermin mysqli_query($verbindung$queryTermin);
            while(
            $row mysqli_fetch_array($resultTermin)){
                
            $rowTermin[] = $row;
            }
                            
            //tag für tag
            for($i=0;$i<count($datumArr);$i++){
                echo 
            "for $i <br>";
                foreach(
            $rowTermin as $row){
                    echo 
            "while $i <br>";
                }

            Kommentar

            Lädt...
            X