While in einer For Schleife?

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

  • While in einer For Schleife?

    Hi,
    ich gehe eine For schleife so oft durch, wie es Tage in einem bestimmtem Monat gibt.
    In der For schleife wird nun eine While Schleife durchlaufen, welche alle Datensätze die vorher mit einer queryabfrage abgerufen wurden, auf den Tag überprüft.
    Ist der Tag eines Datensatzes gleich, so wird der Tag ausgegeben.
    Jedoch wird die While Schleife nur EINMAL ausgeführt in der For Schleife.
    Läuft die Forschleife ein zweites, drittes.... mal durch, so läuft die whileschleife aber nicht mehr !
    Kann es sein, das der zeiger der Whileschleife noch auf dem letzten Datensatz liegt und somit die Bedingung der while schleife erfüllt ist und sie nicht nocheinmal durchläuft?

    Der Code:
    PHP-Code:
    for ($i=1$i<=date("t"mktime(000$datumdate("d"), date("Y"))); $i++) //Jeder Tag im Monat 1 Durchlauf
        
    {
            
    $buffer = array();
            while(
    $row mssql_fetch_object($mssqlresult)) //Die einzelnen Datensätze der ID xxx
            
    {
                    if (
    substr($row->Z_Zeit,0,2) == $i//Fortlaufende Tage mit $i
                    
    {
                        
    $buffer[1]++;
                        
    $buffer[2] = substr($row->Z_Zeit,,10);
                        
    $buffer[4] = substr($row->Z_Zeit,-5);
                        if (
    $buffer[1] == 1) { $buffer[3] = substr($row->Z_Zeit,-5);  }
                    }
            }
            echo 
    '<tr>';
            echo 
    "<td width=40>$i</td>";
            echo 
    "<td width='180'>$buffer[2]</td>";
            echo 
    "<td>$buffer[3]</td>";        
            echo 
    "<td>$buffer[4]</td>";        
            echo 
    '<td>&nbsp;</td>';        
            echo 
    '<td>&nbsp;</td>';        
            echo 
    '<td>&nbsp;</td>';
            echo 
    '<td>&nbsp;</td>';    
            echo 
    '</tr>';
        } 

  • #2
    mysql_data_seek

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      ist auch kein Wunder, denn $row liefert nach dem ersten for Durchlauf auch false bzw null, weil das $mssqlresult ja nicht in jedem for Durchlauf neu belegt wird und du am ende des $mssqlresult angelangt bist. Was du willst ist wahrscheinlich jedes Mal das gleiche Array durchlaufen, dazu legst du die Daten aus $mssqlresult vor der For-Schleife in einem Array ab:

      PHP-Code:
      $rows = array();
      while(
      $row mssql_fetch_object($mssqlresult)) {
       
      $rows[] = $row;
      }

      for (
      $i=1$i<=date("t"mktime(000$datumdate("d"), date("Y"))); $i++) //Jeder Tag im Monat 1 Durchlauf
          
      {
              
      $buffer = array();
              foreach(
      $rows as $row)//Die einzelnen Datensätze der ID xxx
              
      {
                      if (
      substr($row->Z_Zeit,0,2) == $i//Fortlaufende Tage mit $i
                      
      {
                          
      $buffer[1]++;
                          
      $buffer[2] = substr($row->Z_Zeit,,10);
                          
      $buffer[4] = substr($row->Z_Zeit,-5);
                          if (
      $buffer[1] == 1) { $buffer[3] = substr($row->Z_Zeit,-5);  }
                      }
              }
              echo 
      '<tr>';
              echo 
      "<td width=40>$i</td>";
              echo 
      "<td width='180'>$buffer[2]</td>";
              echo 
      "<td>$buffer[3]</td>";        
              echo 
      "<td>$buffer[4]</td>";        
              echo 
      '<td>&nbsp;</td>';        
              echo 
      '<td>&nbsp;</td>';        
              echo 
      '<td>&nbsp;</td>';
              echo 
      '<td>&nbsp;</td>';    
              echo 
      '</tr>';
          } 
      so in etwa

      Kommentar


      • #4
        $buffer hört sich ja auch sehr geheimnisvoll an. Für sinnvolle Variablennamen hat wohl das Geld nicht mehr gereicht.

        Kommentar

        Lädt...
        X