Ankündigung

Einklappen
Keine Ankündigung bisher.

problem mit While schleife.

Einklappen

Neue Werbung 2019

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

  • problem mit While schleife.

    Hallo ich bins schon wieder

    ich hab ein problem mit einer While schleife. ich lese damit alle Felder einer MySQL tabelle aus. aber das klappt nicht so wie ich das gern hätte.
    ersteinmal der code, und dann das ergebniss.

    PHP-Code:
    <?php
                             $counter 
    1;
                             while(
    $counter $next_c)
                             {
                                     
    $currentcomm "c_$counter";
                                     
    $viewcomment mysql_query("SELECT $currentcomm FROM $tab");
                                     if(
    $viewcomment)
                                     {
                                             while(
    $row mysql_fetch_object($viewcomment))
                                             {
                                                     
    $comment $row->$currentcomm;
                                                     
    $comm_part explode("<|>"$comment);
                                                     echo 
    "<div class='viewcomment'>";
                                                     echo 
    $comm_part[0];
                                                     echo 
    $comm_part[1];
                                                     echo 
    $comm_part[2];
                                                     echo 
    "</div>";
                                                     echo 
    "<br/>";
                                             }

                                     }
                                     
    $counter++;
                             }
    ?>
    Das ergebniss sieht dann so aus das zuerst die drei teile in dem gewolltem <div> aufgelistet werden. aber dann 4mal in folge das <div> und das <br/> geschrieben werden. Es sing genau 4 felder in der MySQL tabelle. aber ich weiß nicht wieso er diese while schleife so oft durchlaufen lässt....

    wenn ich die variablen der while schleife ausschreibe siehts so aus:
    PHP-Code:
    while($counter 4

  • #2
    Teste mal folgenden modifizierten Code, denke du wirst die Lösung danach selbst finden. Wenn nicht, einfach nochmal melden.
    PHP-Code:
    <?php
                             $counter 
    1;
                             
    $myCounter 1;
                             while(
    $counter $next_c)
                             {
                                     
    $currentcomm "c_$counter";
                                     
    $viewcomment mysql_query("SELECT $currentcomm FROM $tab");
                                     if(
    $viewcomment)
                                     {
                                             while(
    $row mysql_fetch_object($viewcomment))
                                             {
                                                     
    $comment $row->$currentcomm;
                                                     
    $comm_part explode("<|>"$comment);
                                                     echo 
    "<div class='viewcomment'>";
                                                     echo 
    $comm_part[0];
                                                     echo 
    $comm_part[1];
                                                     echo 
    $comm_part[2];
                                                     echo 
    '-----' $myCounter '-----';
                                                     echo 
    "</div>";
                                                     echo 
    "<br/>";
                                                     
    $myCounter++;
                                             }

                                     }
                                     
    $counter++;
                             }
    ?>

    Kommentar


    • #3
      Er wirft mir das hier aus:
      PHP-Code:
      Name09.04.2010 um 11:07Ihr Text-----1-----

      -----
      2-----

      -----
      3-----

      -----
      4-----

      -----
      5-----

      -----
      6-----

      Name09.04.2010 um 11:08Ihr Text
      -----7-----

      -----
      8-----

      -----
      9-----

      -----
      10-----

      -----
      11-----

      -----
      12-----

      Name09.04.2010 um 11:08Ihr Text loool-----13-----

      -----
      14-----

      -----
      15-----

      -----
      16-----
      ....... 
      aber ich versteh noch nicht wieso er das so oft durchläuft....
      es ist ja eigentlich so:
      durch $counter = 1; ist mein auzulesendes feld $currentcomm = "c_1";.
      dann müsste er die erste while schleife doch genau einmal von oben nach unten durchgehen. die 2te innere while schleife dürfte doch auch nur 1x durchgeführt werden weil. sich $currentcomm doch garnicht verändert.

      ich hab versucht die 2te schleife einzuschränken, aber dann gibt er nur ein einziges feld aus. aber die 4fache wiederholung des divs bleibt.

      Kommentar


      • #4
        ich hab mir jetzt andere gedanken gemacht.
        da ich den fehler mit der While schleife nicht verstehe, hab ich mir überlegt das ich erstmal einen array erstelle den ich dann später auslese.

        vlt hat jemand anderes ein ähnliches problem, daher poste ich den code den ich jetzt wohl verwenden werde.
        PHP-Code:
        <?php
                                 $counter 
        1;
                                 while(
        $counter $next_c)
                                 {
                                         
        $currentcomm "c_$counter";
                                         
        $viewcomment mysql_query("SELECT $currentcomm FROM $tab");
                                         if(
        $viewcomment)
                                         {
                                                 
        $daten = array();
                                                 while(
        $row mysql_fetch_object($viewcomment))
                                                 {

                                                         
        $comment $row->$currentcomm;
                                                         
        $daten[] = $comment;
                                                 }
                                                 echo 
        $daten[0];
                                                 echo 
        "<br/>";
                                                 echo 
        $daten[1];
                                                 echo 
        "<br/>";
                                                 echo 
        $daten[2];
                                         }
                                         
        $counter++;
                                 }

        ?>

        Kommentar


        • #5
          funktioniert es jetzt mit dem code?

          Kommentar


          • #6
            Zitat von CL90 Beitrag anzeigen
            PHP-Code:
            <?php
            $counter 
            1;
            while(
            $counter $next_c)
            {
                 
            $currentcomm "c_$counter";
                 
            $viewcomment mysql_query("SELECT $currentcomm FROM $tab");
                 if(
            $viewcomment)
                 {
                         
            $daten = array();
                         while(
            $row mysql_fetch_object($viewcomment))
                         {

                                 
            $comment $row->$currentcomm;
                                 
            $daten[] = $comment;
                         }
                         echo 
            $daten[0];
                         echo 
            "<br/>";
                         echo 
            $daten[1];
                         echo 
            "<br/>";
                         echo 
            $daten[2];
                 }
                 
            $counter++;
            }
            ?>
            Jetzt sind es ja immer noch zwei verschachtelte WHILE-Schleifen - wozu iegentlich? Die äußere wird laut deiner Aussge 4x durchlaufen und die innere auch. 4 x 4 = 16, bedeutet die Ausgabe ist korrekt. Versuch das mal auf die innere Schleife zu reduzieren...
            Je grösser der Dachschaden, desto schöner der Ausblick zum Himmel. - [WIKI]Karlheinz Deschner[/WIKI]

            Kommentar


            • #7
              Tabellen - im HTML wie in der Datenbank - sind Zeilenbasiert aufgebaut, dementsprechend müssen die Daten auch verarbeitet werden.

              Der Ansatz ist bereits falsch (der TE beginnt die Ausgabe mit den Spalten).

              PHP-Code:
              echo '<table>';
              while (
              row mysql_fetch_assoc(..)) { // Für jede Zeile...
                 
              echo '<tr>';
                 foreach(
              $row as $field) { // .. alle Felder ausgeben lassen
                    
              echo '<td>'.$field.'</td>';
                 }
                 echo 
              '</tr>';
              }
              echo 
              '</table>'
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar

              Lädt...
              X