Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] While-Schleife mehrmals durchlaufen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] While-Schleife mehrmals durchlaufen

    Hi,

    ich möchte in eine Tabelle Datensätze aus einer Sql-db einlesen.

    So sieht mein Script aus:
    PHP-Code:
    echo ' <table style="border: 1px solid #cccccc; border-collapse:collapse;" cellspacing="0" cellpadding="5">
      <tr>'
    ;
    while(
    $benutzer mysql_fetch_array($sqlfr1)) {
    $benutzer['vorname_neu'] = preg_replace($umlaute$replace$benutzer['vorname']);
    $benutzer['nachname_neu'] = preg_replace($umlaute$replace$benutzer['nachname']);
    echo 
    '<td class="wer-macht-was-border"><img src="../../images/stories/mitarbeiter/'.strtolower($benutzer['nachname_neu']).'_'.strtolower($benutzer['vorname_neu']).'.jpg" alt="" style="max-height:200px; max-width:150px;" /></td>';
    }
    echo 
    '</tr><tr>';
    while(
    $benutzer mysql_fetch_array($sqlfr1)) {
    echo 
    '<td>'.$benutzer['vorname'].' '.$benutzer['nachname'].'</td>';
    }
    echo 
    '</tr><tr>';
    while(
    $benutzer mysql_fetch_array($sqlfr1)) {
    echo 
    '<td><div id="mobilcontainer">'.$benutzer['mobil'].'</div></td>';
    }
    echo 
    '</tr><tr>';
    while(
    $benutzer mysql_fetch_array($sqlfr1)) {
    echo 
    '<td>'.$benutzer['position'].'</td>';

    Ich möchte bezwecken, dass erst alle Bilder gezeigt werden, in der nächsten Zeile alle Namen, in der nächsten Zeile alle Mobilnummern und danach alle Positionen.

    Dafür muss ich die while-schleifen unterbrechen, denn ich muss ja
    PHP-Code:
    echo '</tr><tr>'
    ausgeben, um in die nächste Zeile zu kommen.

    Wie kann ich die while-schleife unterbrechen und später "fortsetzen"?

    LG


  • #2
    mit "continue" springst du direkt in den nächsten schleifendurchgang. ob das allerdings die geschickteste lösung für dein problem ist....?

    Kommentar


    • #3
      Habe einige Beispiele gefunden, allerdings weiß ich nicht, wo ich in meinem Fall continue; einsetzen muss.

      So klappt es einfach nicht:

      PHP-Code:
      while($benutzer mysql_fetch_array($sqlfr1)) {
      $benutzer['vorname_neu'] = preg_replace($umlaute$replace$benutzer['vorname']);
      $benutzer['nachname_neu'] = preg_replace($umlaute$replace$benutzer['nachname']);
      echo 
      '<td class="wer-macht-was-border"><img src="http://www.php.de/../joomla/images/stories/mitarbeiter/'.strtolower($benutzer['nachname_neu']).'_'.strtolower($benutzer['vorname_neu']).'.jpg" alt="" style="max-height:200px; max-width:150px;" /></td>';
      continue;
      }
      echo 
      '</tr><tr>';
      while(
      $benutzer mysql_fetch_array($sqlfr1)) {
      echo 
      '<td>'.$benutzer['vorname'].' '.$benutzer['nachname'].'</td>';
      continue;
      }
      echo 
      '</tr><tr>';
      while(
      $benutzer mysql_fetch_array($sqlfr1)) {
      echo 
      '<td><div id="mobilcontainer">'.$benutzer['mobil'].'</div></td>';
      continue;
      }
      echo 
      '</tr><tr>';
      while(
      $benutzer mysql_fetch_array($sqlfr1)) {
      echo 
      '<td>'.$benutzer['position'].'</td>';

      Kommentar


      • #4
        PHP: mysql_data_seek - Manual
        http://hallophp.de

        Kommentar


        • #5
          Muss ich verstehen, was das ist?

          Ich benötige eine Funktion, die mich eine while-schleife unterbrechen lässt. Was ist denn ein Ergebnis-Zeiger?

          Ich möchte alle Datensätze abrufen und nicht nur einen.

          Kommentar


          • #6
            Wenn du alle Zeilen einmal durchgeschleift hast, steht der Ergebniszeiger auf mysql_num_rows()-1. Damit du eine zweite Schleife mit demselben Abfrageergebnis durchlaufen kannst, musst du den Ergebniszeiger zurück auf 0 setzen oder die Abfrage neu abschicken, wobei das inperformant und daher nicht zu empfehlen ist.
            http://hallophp.de

            Kommentar


            • #7
              Also ich würd mir das DB-Array vernünftig zurechtrücken und das ganze dann durchlaufen.
              Hab jetzt noch nicht getestet, aber mir fällt spontan ne Lösung mit max. 2 for()-Schleifen ein...
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar


              • #8
                Ah okay, wusste ich nicht.

                Jetzt bekomme ich aber eine Fehlermeldung: "Warning: mysql_data_seek(): supplied argument is not a valid MySQL result resource in [..] on line 59"

                PHP-Code:
                while($benutzer mysql_fetch_array($sqlfr1)) {
                $benutzer['vorname_neu'] = preg_replace($umlaute$replace$benutzer['vorname']);
                $benutzer['nachname_neu'] = preg_replace($umlaute$replace$benutzer['nachname']);
                echo 
                '<td class="wer-macht-was-border"><img src="http://www.php.de/../joomla/images/stories/mitarbeiter/'.strtolower($benutzer['nachname_neu']).'_'.strtolower($benutzer['vorname_neu']).'.jpg" alt="" style="max-height:200px; max-width:150px;" /></td>';
                }
                mysql_data_seek($benutzer0);
                echo 
                '</tr><tr>';
                while(
                $benutzer mysql_fetch_array($sqlfr1)) {
                echo 
                '<td>'.$benutzer['vorname'].' '.$benutzer['nachname'].'</td>';
                continue;
                }
                mysql_data_seek($benutzer0);
                echo 
                '</tr><tr>';
                while(
                $benutzer mysql_fetch_array($sqlfr1)) {
                echo 
                '<td><div id="mobilcontainer">'.$benutzer['mobil'].'</div></td>';
                continue;
                }
                mysql_data_seek($benutzer0);
                echo 
                '</tr><tr>';
                while(
                $benutzer mysql_fetch_array($sqlfr1)) {
                echo 
                '<td>'.$benutzer['position'].'</td>';

                Kommentar


                • #9
                  PHP-Code:
                  mysql_data_seek($sqlfr10); 
                  $benutzer ist keine DB-Resource !!!
                  Competence-Center -> Enjoy the Informatrix
                  PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                  Kommentar


                  • #10
                    Ich benötige eine Funktion, die mich eine while-schleife unterbrechen lässt.
                    Ist doch Unsinn! <tr> hat doch nichts mit der Schleife zu tun.

                    Ich möchte bezwecken, dass erst alle Bilder gezeigt werden, in der nächsten Zeile alle Namen, in der nächsten Zeile alle Mobilnummern und danach alle Positionen.
                    Umständlich beschrieben. Kann man nicht sagen, Du willst alle Datensätze spaltenweise ausgeben? Oder was noch?
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Ups, sorry :/

                      @nikosch: Natürlich hat <tr> nichts mit einer while-Schleife zu tun. Aber wenn ich kein <tr> ausgebe, bekomme nicht das ausgegeben, was ich sehen möchte. Hast Du einen besseren Vorschlag?

                      Kommentar


                      • #12
                        Ich möchte alle Datensätze Spaltenweise angeben. Den 1. in der 1. Spalte (column), den 2. in der 2. Spalte, den 3. in der 3. Spalte, den 4. in der 4. Spalte, den 5. in der 1. Spalte unter dem 1. usw...

                        Kommentar


                        • #13
                          Benutz keine Tabelle sondern gefloatete Container.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            Mein komplettes Script sieht jetzt so aus:

                            PHP-Code:
                            $sqlfr = array ("mysql_query($query.' LIMIT 0, 4');",
                            "mysql_query($query.' LIMIT 4, 4');",
                            "mysql_query($query.' LIMIT 8, 4');",
                            "mysql_query($query.' LIMIT 12, 4');",
                            "mysql_query($query.' LIMIT 16, 4');",
                            "mysql_query($query.' LIMIT 20, 4');",
                            "mysql_query($query.' LIMIT 24, 4');",
                            "mysql_query($query.' LIMIT 28, 4');",
                            "mysql_query($query.' LIMIT 32, 4');",
                            "mysql_query($query.' LIMIT 36, 4');",
                            "mysql_query($query.' LIMIT 40, 4');",
                            "mysql_query($query.' LIMIT 44, 4');",
                            "mysql_query($query.' LIMIT 48, 4');",
                            "mysql_query($query.' LIMIT 52, 4');",
                            "mysql_query($query.' LIMIT 56, 4');",
                            "mysql_query($query.' LIMIT 60, 4');",
                            "mysql_query($query.' LIMIT 64, 4');",
                            "mysql_query($query.' LIMIT 68, 4');",
                            "mysql_query($query.' LIMIT 72, 4');",
                            "mysql_query($query.' LIMIT 76, 4');",
                            "mysql_query($query.' LIMIT 80, 4');");

                            $umlaute = Array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
                            $replace = Array("ae","oe","ue","Ae","Oe","Ue","ss");


                            echo 
                            ' <table style="border: 1px solid #cccccc; border-collapse:collapse;" cellspacing="0" cellpadding="5">';
                            while(
                            $sql $sqlfr) {
                            echo 
                            '  <tr>';
                            while(
                            $benutzer mysql_fetch_array($sql)) {
                            $benutzer['vorname_neu'] = preg_replace($umlaute$replace$benutzer['vorname']);
                            $benutzer['nachname_neu'] = preg_replace($umlaute$replace$benutzer['nachname']);
                            echo 
                            '<td class="wer-macht-was-border"><img src="http://www.php.de/../joomla/images/stories/mitarbeiter/'.strtolower($benutzer['nachname_neu']).'_'.strtolower($benutzer['vorname_neu']).'.jpg" alt="" style="max-height:200px; max-width:150px;" onmouseover="getElementById(mobilcontainer).style.visibility=visible;"  onmouseout="getElementById(mobilcontainer).style.visibility=hidden;" /></td>';
                            }
                            mysql_data_seek($sql0);
                            echo 
                            '  </tr><tr>';
                            while(
                            $benutzer mysql_fetch_array($sql)) {
                            echo 
                            '   <td>'.$benutzer['vorname'].' '.$benutzer['nachname'].'</td>';
                            }
                            mysql_data_seek($sql0);
                            echo 
                            '  </tr><tr>';
                            while(
                            $benutzer mysql_fetch_array($sql)) {
                            echo 
                            '<td>
                                <div id="mobilcontainer">'
                            .$benutzer['mobil'].'</div>
                               </td>
                            '
                            ;
                            }
                            mysql_data_seek($sql0);
                            echo 
                            '  </tr><tr>';
                            while(
                            $benutzer mysql_fetch_array($sql)) {
                            echo 
                            '   <td>'.$benutzer['position'].'</td>
                            '
                            ;
                            }

                            echo 
                            '</tr>';
                            }
                            echo 
                            '
                             </table>
                            </body>'

                            Jetzt bekomme ich allerdings Fehlermeldungen bis zum geht-nicht-mehr.

                            Ich möchte also die while-Schleifen so oft ausführen, wie Daten im array $sqlfr sind (mit einer übergeordneten while-Schleife), was wahrscheinlich so nicht geht, richtig?
                            Wie geht es?

                            Kommentar


                            • #15
                              Sieht ja eklig aus!

                              Da würde ich fast sagen: Fang' am Besten noch mal von vorne an und lies dir dabei noch mal unsere Hinweise durch.
                              http://hallophp.de

                              Kommentar

                              Lädt...
                              X