Ankündigung

Einklappen
Keine Ankündigung bisher.

Schleife mit mysqli & Zahl

Einklappen

Neue Werbung 2019

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

  • Schleife mit mysqli & Zahl

    Hallo Zusammen,

    Ich habe gerade ein Problem mit 2 Schleifen.

    Ich möchte in der einen Schleife eine andere Schleife öffnen. Allerdings hier erstmal der Code:
    PHP-Code:
    <?php
                            
    for ($i=0$i 3$i++) {
                                while(
    $get_msg_data_array $get_msg_data->fetch_array()){
                                    
    $sender_id $get_msg_data_array['user_id'];
                                    
    $get_msg_sender_data $db->query("SELECT * FROM users WHERE id='$sender_id'");
                                    
    $get_msg_sender_data_array $get_msg_sender_data->fetch_array();
                                    
                                
                            
    ?>
                            <li>
                                <a href="#" data-toggle="modal" data-target="#myModal<?php echo $i?>">
                                    <div>
                                        <strong><?php echo $get_msg_sender_data_array['username']; ?></strong>
                                        <span class="pull-right text-muted">
                                            <em><?php echo $get_msg_data_array['date']; ?></em>
                                        </span>
                                    </div>
                                    <div><?php echo $get_msg_data_array['message']; ?></div>
                                </a>
                            </li>
                            <li class="divider"></li>
                            <?php
                                
    }
                            }
                            
    ?>
    Der Sinn dabei soll sein das im Quelltext 3 Abschnitte erscheinen mit der jeweiligen data-target="#myModal0-2"
    Wo jeweils bestimmter Inhalt drin reingeladen wird per Whileschleife.

    Nun das Problem das ich jetzt habe ist das der Code oben zwar geht allerdings gibt es im Quelltext nur das datatareg mit 0 und 1 & 2 fehlen jeweils.

    Wenn ich zuerst die Whileschleife ausführe und dann die For Schleife, habe ich zwar meine Zahlen, allerdings fehlt dann der Inhalt/ist Fehlerhaft.

    Hat jemand eine Idee?

    LG

  • #2
    PHP-Code:
    for ($i 0$i 3$i++) { 

        while(
    $get_msg_data_array $get_msg_data->fetch_array()){ 
            
    $sender_id $get_msg_data_array['user_id']; 
            
    $get_msg_sender_data $db->query("SELECT * FROM users WHERE id='$sender_id'"); 
            
    $get_msg_sender_data_array $get_msg_sender_data->fetch_array(); 
            
    ?> 
    Kann es sein, das du da irgendwie überhaupt einen Gedankenknoten/Logikfehler drinnen hast. Kann es hier ohne DB schwer nachstellen, aber das sieht irgendwie alles seltsam aus. Du hast deine for-Schleife, darin die while mit fetch_array() und darin schickst du dann nochmals eine $db->query(...) mit erneutem folgendem fetch_array() ab.

    Sry, da blick ich nicht hinter was das werden soll. Ev. solltest du dir mal Normalesierung, Joins und Gruppenbruch anschauen (Vermutung).

    http://www.peterkropff.de/site/mysql/normalisierung.htm
    http://php-de.github.io/jumpto/gruppenbruch/

    Ev. hilft es dir ja was.

    SELECT * ist übrigens zu vermeiden, da pfui: http://php-de.github.io/jumpto/code-smells/#select-

    LG
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Ich habe es jetzt hinbekommen!

      Hier der Code
      PHP-Code:
      <?php
                              
                              $start
      0;
                          
                              
                              while(
      $get_msg_data_array $get_msg_data->fetch_array()){
                                  
      $sender_id $get_msg_data_array['user_id'];
                                  
      $get_msg_sender_data $db->query("SELECT * FROM users WHERE id='$sender_id'");
                                  
      $get_msg_sender_data_array $get_msg_sender_data->fetch_array();
                                      
                                  
                              
      ?>
                              <li>
                                  <a href="#" data-toggle="modal" data-target="#myModal<?php echo $start$start++; ?>">
                                      <div>
                                          <strong><?php echo $get_msg_sender_data_array['username']; ?></strong>
                                          <span class="pull-right text-muted">
                                              <em><?php echo $get_msg_data_array['date']; ?></em>
                                          </span>
                                      </div>
                                      <div><?php echo $get_msg_data_array['message']; ?></div>
                                  </a>
                              </li>
                              <li class="divider"></li>
                              <?php
                                  
                              
      }
                              
      ?>
      @hausi

      Hier nochmal eine Erklärung warum das so verzweigt ist:

      Das For sollte die Zahl in den id Tag reinpacken.

      Die While Schleife sollte Informationen aus einer Datenbank abrufen mit dem Limit 3.

      Die Abfrage in der Whileschleife hat dafür gesorgt, das die id des Senders aus der Datenbank messages geholt wird für jeden Eintrag und die id in der users Tabelle abruft und statt der id den usernamen ausgibt.

      Als Beispiel:


      Der Name ist eigendlich die id der Text und das Datum kommen durch die While und eine id für eine weitere Funktion sollte durch FOR kommen, habe ich aber jetzt anders gelöst.

      LG

      Kommentar

      Lädt...
      X