Ankündigung

Einklappen
Keine Ankündigung bisher.

While-Schleife in While-Schleife

Einklappen

Neue Werbung 2019

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

  • While-Schleife in While-Schleife

    Hallo,

    Ich komme in meinem Projekt im moment einfach nicht weiter. Entweder habe ich einen Denkfehler oder sonst was.
    Leider habe ich im moment kein Code zur hand da ich das von unterwegs am handy schreibe.

    Ich möchte gerne ein art Kalender machen.
    Ich finde mit date herraus wie viele Tage der Monat hat und lasse per while Schleife pro Tag eine Tabelle machen.
    Nun möchte ich das einträge in einer datenbank die zu dem jeweiligem Tag gehören in die dazugehörige tabelle angezeigt werden.
    Soweit funktioniert alles!
    Wenn jetzt aber mehrere einträge für einen tag vorhanden sind stoße ich an meine grenzen.
    Ich habe versucht in der while-schleife eine weitere while-schleife einzufügen die alle einträge auflistet.
    Nun läd die Seite ewigkeiten bis eine zeitüberschreitung angezeigt wird.

    Habe schon gegoogelt und einträge hier im forum gelesen aber es hat mir bisher einfach nicht weitergeholfen

    Bitte um hilfe!


  • #2
    Zitat von Laminator-Berli Beitrag anzeigen
    Leider habe ich im moment kein Code zur hand da ich das von unterwegs am handy schreibe.
    Das ist schlecht.

    Zitat von Laminator-Berli Beitrag anzeigen
    Ich finde mit date herraus wie viele Tage der Monat hat und lasse per while Schleife pro Tag eine Tabelle machen.
    Das ist schlecht.

    Zitat von Laminator-Berli Beitrag anzeigen
    Wenn jetzt aber mehrere einträge für einen tag vorhanden sind stoße ich an meine grenzen.
    Das heißt, sobald mehr als ein Eintrag in einer Tabelle ist kommst du nicht weiter?

    Zitat von Laminator-Berli Beitrag anzeigen
    Ich habe versucht in der while-schleife eine weitere while-schleife einzufügen die alle einträge auflistet.
    Ich weiß zwar nicht warum du in einer while() noch eine while() packst aber ich erlaube mir mal davon auszugehen, dass es Quatsch ist. Aber ohne mehr Informationen und vorallem Quelltext kann man dazu nicht mehr sagen.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Das es schlecht ist das ich kein Code zur hand habe ist mir bewust aber es lässt mir keine ruhe. Der code wird demnächst dazu gefügt.

      Warum ist es schlecht mit date herraus zu finden wie viele tage der monat hat?

      An sich bekomme ich das hin mehrere einträge auszulesen aber halt nicht wenn 2 while schleifen vorhanden sind.

      Die erste while schleife ist dazu da um für jeden tag eine Tabelle zu erstellen.
      Die zweite while schleife ist dazu da um die einträge auszulesen

      Kommentar


      • #4
        Zitat von Laminator-Berli Beitrag anzeigen
        Warum ist es schlecht mit date herraus zu finden wie viele tage der monat hat?
        Das meine ich nicht. Pro Tag eine Tabelle anzulegen ist schlecht.

        Zitat von Laminator-Berli Beitrag anzeigen
        An sich bekomme ich das hin mehrere einträge auszulesen aber halt nicht wenn 2 while schleifen vorhanden sind.

        Die erste while schleife ist dazu da um für jeden tag eine Tabelle zu erstellen.
        Die zweite while schleife ist dazu da um die einträge auszulesen
        Du erstellst also per While-Schleife neue Tabellen und gleichzeitig ließt du aus der Tabelle aus? Das ergibt garkeinen Sinn?!

        EINE Tabelle reicht vollkommen, das macht auch das Arbeiten damit um einiges einfacher.
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          Ich bin nun Zuhause. Es tut mir Leid das ganze so kompliziert zu machen aber ich habe gehofft das der Text ausreicht um mein Problem zu schildern.

          der Code:
          PHP-Code:
          <?php
          $Person 
          $_SESSION["username"];
            
          $monate = array(
              
          1=>"Januar",
              
          2=>"Februar",
              
          3=>"M&auml;rz",
              
          4=>"April",
              
          5=>"Mai",
              
          6=>"Juni",
              
          7=>"Juli",
              
          8=>"August",
              
          9=>"September",
              
          10=>"Oktober",
              
          11=>"November",
              
          12=>"Dezember"
            
          );
            
          $monat date("n");

          $akttag date("j");
          $aktmonat $monate[$monat];
          $aktjahr date("Y");
          $anztag date("t");


          echo 
          "
          <table width='100%' border='1' cellspacing='0' cellpadding='0' >
           <tr>
            <td bgcolor='#5F5F5F' height='20' width='15%'><p align='center'>Datum</p></td>
            <td bgcolor='#5F5F5F' height='20' width='60' ><p align='center'>Uhrzeit</p></td>
            <td bgcolor='#5F5F5F' height='20' width='200'><p align='center'>Adresse</p></td>
            <td bgcolor='#5F5F5F' height='20' width=''><p align='center'>Kontakt</p></td>
            <td bgcolor='#5F5F5F' height='30' width='100'><p align='center'>Quadratmeter</p></td>
           </tr>
          </table>
          "
          ;

          echo 
          "
            <table width='100%' border='1' cellpadding='0' cellspacing='0'>
             <tr>
              <td>
          "
          ;


          $i 1;
          while (
          $i <= $anztag) {


          $sql "SELECT * FROM Terminkalender WHERE Person='$Person' AND Tag='$i' AND Monat='$aktmonat' AND Jahr='$aktjahr'";
          $db_erg mysqli_query$db$sql );
          while (
          $zeile mysqli_fetch_array$db_ergMYSQL_ASSOC))
          {

            
          $adresse $zeile['Adresse'];
            
          $uhrzeit $zeile['Uhrzeit'];
            
          $qm $zeile['qm'];
            
          $vorname $zeile['vorname'];
            
          $nachname $zeile['nachname'];
            
          $strasse $zeile['strasse'];
            
          $hausnummer $zeile['hausnummer'];
            
          $postleitzahl $zeile['postleitzahl'];
            
          $stadt $zeile['stadt'];
            
          $email $zeile['email'];
            
          $telefon $zeile['telefon'];





          echo 
          "
          <table border='1' width='100%' cellspacing='0' cellpadding='0'>
           <tr>
            <td width='15%' height='50'><p align='center'>"
          .$i++."&nbsp;".$aktmonat."&nbsp;".$aktjahr."</p></td>
            <td height='50' width='60' ><p align='center'>"
          .$uhrzeit."</p></td>
            <td height='50' width='200' >

            <table width='200' border='0' cellpadding='0' cellspacing='0'>
             <tr>
              <td><p align='center'>"
          .$vorname."&nbsp;".$nachname."</p></td>
             </tr>
             <tr>
              <td><p align='center'>"
          .$strasse."&nbsp;".$hausnummer."</p></td>
             </tr>
             <tr>
              <td><p align='center'>"
          .$postleitzahl."&nbsp;".$stadt."</p></td>
             </tr>
            </table>

            </td>
            <td>

            <table width='200' border='0' cellpadding='0' cellspacing='5'>
             <tr>
              <td><p align='center'>"
          .$email."</p></td>
             </tr>
             <tr>
              <td><p align='center'>"
          .$telefon."</p></td>
             </tr>
            </table>

            </td>
            <td width='100' height='50'><p align='center'>"
          .$qm."&nbsp;²m</p></td>
           </tr>
          </table>
          "
          ;


          $adresse "";
          $uhrzeit "";
          $qm "";
          $vorname "";
          $nachname "";
          $strasse "";
          $hausnummer "";
          $postleitzahl "";
          $stadt "";
          $email "";
          $telefon "";
          }
          }




          echo 
          "
              </td>
             </tr>
            </table>
          "
          ;




          ?>

          Kommentar


          • #6
            Ach, es geht um eine HTML-Tabelle pro Tag, okay. Trotzdem würde ich da eine einzige Tabelle nehmen und pro Tag eine Spalte.

            Die SQL-Query solltest du aus der While-Schleife rausnehmen. Zuerst holst du dir alle Termine im Aktuellen Monat und speicherst sie in einem Array zwischen, dann gehst du alle Tage durch und schaust nach, ob in dem Array für den jeweiligen Tag Termine vermerkt sind.
            Zitat von nikosch
            Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

            Kommentar


            • #7
              Ich verstehe was du meinst aber ich bekomme das absolut nicht umgesetzt.

              Hast du vielleicht noch ein paar Tipps, Anhaltspunkte oder bessere Erklärung?

              Kommentar


              • #8
                Hast du deinen bisherigen Code, dann sagen wir dir wo du ansetzten musst .
                GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

                Kommentar


                • #9
                  Den Code den habe ich hier bereits gepostet.
                  Ansonsten habe ich anstalten gemacht die nicht funktioniert haben etc.

                  Kommentar


                  • #10
                    Termine auslesen -> in ein Array verpacken -> foreach Schleife anwenden für die Ausgabe mehrere Termine an diesen Tag


                    PHP-Code:
                    while ($zeile mysqli_fetch_array$db_ergMYSQL_ASSOC))
                    {

                      
                    $adresse $zeile['Adresse'];
                      
                    $uhrzeit $zeile['Uhrzeit'];
                      
                    $qm $zeile['qm'];
                      
                    $vorname $zeile['vorname'];
                      
                    $nachname $zeile['nachname'];
                      
                    $strasse $zeile['strasse'];
                      
                    $hausnummer $zeile['hausnummer'];
                      
                    $postleitzahl $zeile['postleitzahl'];
                      
                    $stadt $zeile['stadt'];
                      
                    $email $zeile['email'];
                      
                    $telefon $zeile['telefon'];





                    echo 
                    "
                    <table border='1' width='100%' cellspacing='0' cellpadding='0'>
                     <tr>
                      <td width='15%' height='50'><p align='center'>"
                    .$i++."&nbsp;".$aktmonat."&nbsp;".$aktjahr."</p></td>
                      <td height='50' width='60' ><p align='center'>"
                    .$uhrzeit."</p></td>
                      <td height='50' width='200' > 
                    Würde ich niemals machen.

                    PHP-Code:
                        $result mysql_query($sql_query,$db) OR die(mysql_error());
                        while (
                    $row mysql_fetch_assoc($result)) {
                                
                    $ret[] = $row;
                            } 

                    Kommentar


                    • #11
                      Ich habe nicht ganz verstanden wie ich das in die Arrays schreiben soll damit ich es später auch richtig wiedergeben kann.
                      Ich hoffe das es so richtig ist:

                      PHP-Code:
                      <?php
                      $Person 
                      $_SESSION["username"];
                        
                      $monate = array(
                          
                      1=>"Januar",
                          
                      2=>"Februar",
                          
                      3=>"M&auml;rz",
                          
                      4=>"April",
                          
                      5=>"Mai",
                          
                      6=>"Juni",
                          
                      7=>"Juli",
                          
                      8=>"August",
                          
                      9=>"September",
                          
                      10=>"Oktober",
                          
                      11=>"November",
                          
                      12=>"Dezember"
                        
                      );
                        
                      $monat date("n");

                      $akttag date("j");
                      $aktmonat $monate[$monat];
                      $aktjahr date("Y");
                      $anztag date("t");


                      $Person = array();

                      $sql "SELECT * FROM Terminkalender";
                      $db_erg mysqli_query$db$sql );
                      if ( ! 
                      $db_erg )
                      {
                        die(
                      'Ungültige Abfrage: ' mysqli_error());
                      }

                      while (
                      $inhalt mysqli_fetch_array$db_ergMYSQL_ASSOC)) {
                        
                      $Person[] = $inhalt['Person'];
                        
                      $Tag[] = $inhalt['Tag'];
                        
                      $Monat[] = $inhalt['Monat'];
                        
                      $Jahr[] = $inhalt['Jahr'];
                        
                      $Uhrzeit[] = $inhalt['Uhrzeit'];
                        
                      $Vorname[] = $inhalt['vorname'];
                        
                      $Nachname[] = $inhalt['nachname'];
                        
                      $Strasse[] = $inhalt['strasse'];
                        
                      $Hausnummer[] = $inhalt['hausnummer'];
                        
                      $Postleitzahl[] = $inhalt['postleitzahl'];
                        
                      $Stadt[] = $inhalt['stadt'];
                        
                      $Email[] = $inhalt['email'];
                        
                      $Telefon[] = $inhalt['telefon'];
                        
                      $Qm[] = $inhalt['qm'];
                      }


                      echo 
                      "
                      <table width='100%' border='1' cellspacing='0' cellpadding='0' >
                       <tr>
                        <td bgcolor='#5F5F5F' height='20' width='120'><p align='center'>Datum</p></td>
                        <td bgcolor='#5F5F5F' height='20' width='60' ><p align='center'>Uhrzeit</p></td>
                        <td bgcolor='#5F5F5F' height='20' width='200'><p align='center'>Adresse</p></td>
                        <td bgcolor='#5F5F5F' height='20' width=''><p align='center'>Kontakt</p></td>
                        <td bgcolor='#5F5F5F' height='30' width='100'><p align='center'>Quadratmeter</p></td>
                       </tr>
                      </table>

                      <table width='100%' border='1' cellpadding='0' cellspacing='0'>
                      "
                      ;

                      for (
                      $i 1$i <= $anztag$i++) {

                      echo 
                      "
                       <tr>
                        <td height='50' width='120'><p align='center'>"
                      .$i."&nbsp;".$aktmonat."&nbsp;".$aktjahr."</p></td>
                        <td height='50' width='60'><p align='center'>&nbsp;</p></td>
                        <td height='50' width='200'><p align='center'>&nbsp;</p></td>
                        <td height='50' width=''><p align='center'>&nbsp;</p></td>
                        <td height='50' width='100'><p align='center'>&nbsp;</p></td>
                       </tr>
                      "
                      ;

                      }

                      echo 
                      "
                      </table>
                      "
                      ;


                      ?>
                      Aber wie gebe ich das nun mit foreach alles richtig aus?

                      Ich habe derzeit echt einen Knoten im Hirn

                      Kommentar


                      • #12
                        PHP-Code:
                        while ($inhalt mysqli_fetch_array$db_ergMYSQL_ASSOC)) {
                          
                        $Person[] = $inhalt['Person'];
                          
                        $Tag[] = $inhalt['Tag'];
                          
                        $Monat[] = $inhalt['Monat'];
                          
                        $Jahr[] = $inhalt['Jahr'];
                          
                        $Uhrzeit[] = $inhalt['Uhrzeit'];
                          
                        $Vorname[] = $inhalt['vorname'];
                          
                        $Nachname[] = $inhalt['nachname'];
                          
                        $Strasse[] = $inhalt['strasse'];
                          
                        $Hausnummer[] = $inhalt['hausnummer'];
                          
                        $Postleitzahl[] = $inhalt['postleitzahl'];
                          
                        $Stadt[] = $inhalt['stadt'];
                          
                        $Email[] = $inhalt['email'];
                          
                        $Telefon[] = $inhalt['telefon'];
                          
                        $Qm[] = $inhalt['qm'];

                        Auch wieder eine schlechte Idee. Überdenke nochmal deine SQL Ausgabe genau. So würde es wenig sinn machen. Verwende am besten das, was ich dir vorhin gezeigt habe.

                        Kommentar


                        • #13
                          Habe jetzt ein wenig mit dem was du mir vorhin gezeigt hat herum gespielt.

                          PHP-Code:
                          $sql "SELECT * FROM Terminkalender";
                          $db_erg mysqli_query$db$sql );
                          while (
                          $row mysqli_fetch_assoc($db_erg))
                          {
                            
                          $ret[] = $row;
                            echo 
                          $ret[0];

                          Ausgegeben wird jetzt pro vorhandene Zeile das Wort Array.


                          Aber wie hilft mir das jetzt weiter?

                          Kommentar


                          • #14
                            While-Schleife in While-Schleife

                            Zitat von Laminator-Berli
                            Aber wie hilft mir das jetzt weiter?
                            Ich denke dir helfen die Grundlagen weiter.
                            PHP-Code:
                            $sql "SELECT * FROM Terminkalender"
                            Das kann zu Problemem führen, daher nur die Spalten ansprechen, die du tatsächlich auch verwenden magst. Warum? Sollten später weitere Spalten in der Tabelle hinzugefügt werden, du diese aber in der Ausgabe nicht benötigst, werden die Daten trotzdem ausgelesen. Weiterhin kann es bei möglichen JOIN´s zu Fehlern kommen, da Spalten mehrfach vorkommen ( können ) und damit undefiniert sind.
                            Zitat von Laminator-Berli
                            Ausgegeben wird jetzt pro vorhandene Zeile das Wort Array.
                            Darum solltest du dich mit den Grundlagen beschäftigen. Was soll denn sonst ausgegeben werden mit deinem Code?

                            Schau´ dir die Doku an.
                            Delirius

                            PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

                            Kommentar


                            • #15
                              Arrays ist ein umfangreiches thema.
                              Habe vorerst eine letzte frage.
                              Wie überprüfe ich ob ob in dem array $ret[1] der eintrag von Tag dem wert 5 entspricht?

                              Kommentar

                              Lädt...
                              X