Ankündigung

Einklappen
Keine Ankündigung bisher.

Do-While Schleife mit SQL

Einklappen

Neue Werbung 2019

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

  • Do-While Schleife mit SQL

    Hallo an alle ich habe irgendwo ein Fehler und komme einfach nicht drauf.

    es ist eigentlich eine einfache Sache und zwar soll eine Datenbank ausgelesen werden und die Werte in ein Feld geschrieben werden. Diese werden nach und nach ausgegeben und ergeben ein DropDown Menu.

    Wenn aber in der Variable $Personaldaten['Personalnummer'] kein Wert ist also Null soll zwar trotzdem die SQL Abfrage laufen und sich das Menu füllen aber bitte kein Wert Selected sein.

    Ich bin mir eigentlich ziemlich sicher das es nur eine Kleinigkeit sein kann. Aber ich finde es einfach nicht! vielleicht wäre jemand mal so nett und könnte mir einen Denkanstoß verpassen.


    PHP-Code:
        <select name="Pesonalnummerauswahl"><?php $Select_Personalnummer='SELECT [Personalnummer] FROM [skintern].[dbo].[Personaldaten]';
              
    $Inhalt_Personalnummer sqlsrv_query($conn,$Select_Personalnummer);
                    
    $P = array();    
                    while(
    $row sqlsrv_fetch_array($Inhalt_Personalnummer))
                    {
                        
    $P[]=$row['Personalnummer'];            
                    }
                    foreach(
    $P as $value)
                    {
                        
    //if ($value != $P['Personalnummer'])
                        
    if (isset ($Personaldaten['Personalnummer'])) 
                        {
                        do    
                            {    
                            echo
    "<option>".""."</option>";
                            }
                        
                        while
                        
                            if (
    $value != $Personaldaten['Personalnummer'])
                            {
                            echo 
    "<option>".$value."</option>";
                            }        
                            else
                            {
                            echo
    "<option selected>".$value."</option>";
                            }
                        
                        
                        
                        }
                        
                    }
            
    ?>
            </select>


  • #2
    Hi,

    PHP-Code:
                        $P[]=$row['Personalnummer'];            
                    }
                    foreach(
    $P as $value
    ziemlich sinnlos ein neues array zu erstellen! Du benötigst nur die erste Schleife und nicht noch eine foreach Schleife!!

    PHP-Code:
    if (isset ($Personaldaten['Personalnummer'])) 
    Wenn du auf Inhalt prüfen willst, mach das mit empty(), Bsp.:

    PHP-Code:
    if(!empty($row["meinFeld"])){ echo "steht was drin..."; } 
    Deine letzte if Bedingung ergibt wenig Sinn an der Stelle...

    Überdenke deinen kompletten Aufbau und mach lieber alles in einer Schleife

    mfg wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Deine do-while-Schleife sieht sehr bizarr aus. Ich weiß ehrlich gesagt nicht was du damit tun möchtest.

      Kommentar


      • #4
        Moin,

        trenn doch deine Tasks mal sauber. Ich habs grad irgendwo schon mal geschrieben. Hol erst alle benötigten Daten aus der Datenbank. DANACH (programmiertechnisch) kannst du diesen Array verarbeiten und als Select-Option ausgeben. Macht das Debuggen viel einfacher.

        PHP-Code:
        <?php
        function getPersonnelNumbers($conn)
        {
          
        $Select_Personalnummer='SELECT [Personalnummer] FROM [skintern].[dbo].[Personaldaten] WHERE Personalnummer IS NOT NULL'
          
        $Inhalt_Personalnummer sqlsrv_query($conn,$Select_Personalnummer); 
          
        $P = array();     
          while(
        $row sqlsrv_fetch_array($Inhalt_Personalnummer)) { 
            
        $P[]=$row['Personalnummer'];             
          }
          return 
        $P
        }

        function 
        renderSelectOptions($name, array $options$selectedValue null)
        {
          
        $html = array();
          
        $html[] = sprintf('<select name="%s">'escapeHtml($name));
          foreach (
        $options as $option) {
            
        $isSelected $selectedValue === $option;
            
        $html[] = sprintf('<option%s>%s</option>'$isSelected ' selected="selected"' ''escapeHtml($option));
          }
          
        $html[] = '</select>';
          return 
        implode(PHP_EOL$html);
        }

        function 
        escapeHtml($string)
        {
          return 
        htmlspecialchars($stringENT_COMPAT'UTF-8');
        }

        $personnelNumbers getPersonnelNumbers($conn);
        echo 
        renderSelectOptions('Personnalnummerauswahl'$personnelNumbers$Personaldaten['Personalnummer']);
        ?>
        (geht noch besser)
        "Mein Name ist Lohse, ich kaufe hier ein."

        Kommentar


        • #5
          PHP-Code:
                              do     
                                  {     
                                  echo
          "<option>".""."</option>"
                                  } 
                               
                              while 
                               
                                  if (
          $value != $Personaldaten['Personalnummer']) 
                                  { 
                                  echo 
          "<option>".$value."</option>"
                                  }         
                                  else 
                                  { 
                                  echo
          "<option selected>".$value."</option>"
                                  } 
          Zitat von Tropi Beitrag anzeigen
          Deine do-while-Schleife sieht sehr bizarr aus. Ich weiß ehrlich gesagt nicht was du damit tun möchtest.
          Gar nichts. Die Schleife ist unvollständig.

          @TE: Schau dir nochmal an, wie eine do-while Schleife richtig auszusehen hat.
          http://de2.php.net/manual/de/control...s.do.while.php
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Hallo an alle,

            erstmal danke für die Hilfe aber mein Problem ist noch nicht vom Tisch.
            Die Funktionen will ich erst später einbauen. Von daher bleibt der Umfang des Source erstmal so hoch.

            Aber ich habe einiges überarbeitet und ich denke nun ist klarer was ich konkret will. Jedoch funktioniert es noch immer nicht so wie ich es will. Wenn die Variable var ($_GET('var')) nicht gesetzt ist dann soll das Programm in den Select erst Test hinschreiben und dann den Inhalt der Datenbank! Macht er aber nicht und ich weiß einfach nicht an was das liegt vom Source her würde ich sagen es müsste funzen.


            PHP-Code:
                <select name="Pesonalnummerauswahl"><?php 
                        $Select_Personalnummer
            ='SELECT [Personalnummer] FROM [skintern].[dbo].[Personaldaten]'
                        
            $Inhalt_Personalnummer sqlsrv_query($conn,$Select_Personalnummer);
                                    
                        while(
            $row sqlsrv_fetch_array($Inhalt_Personalnummer))
                            {
                                
            $P[]=$row['Personalnummer'];
                                
            //echo $P;
                            
            }
                        
                        
                        if (isset(
            $_GET['var']))
                            {
                        
                                foreach(
            $P as $value)
                                {
                                        if (
            $value != $Personaldaten['Personalnummer'])
                                        {
                                        echo 
            "<option>".$value."</option>";
                                        }        
                                        else
                                        {
                                        echo
            "<option selected>".$value."</option>";
                                        }    
                                        
                                }
                        
                            }
                        else echo 
            "<option selected>"."test"."</option>";
                            foreach(
            $P as $value)
                            {
                                echo 
            "<option>".$value."</option>";                
                            }
                            
                    
            ?>
                    </select>

            Kommentar


            • #7
              ...irgendwie hast du nichts von dem beachtet, was wir geschrieben haben!

              Wo komtm eigentlich der Wert $Personaldaten['Personalnummer'] her?

              Vermutlich suchst du sowas hier:

              PHP-Code:
              <select name="Pesonalnummerauswahl">
              <?php 
                  $Select_Personalnummer
              ='SELECT [Personalnummer] FROM [skintern].[dbo].[Personaldaten]'
                  
              $Inhalt_Personalnummer sqlsrv_query($conn,$Select_Personalnummer);
                                      
                  if (isset(
              $_GET['var'])){ echo "<option>test</option>"; }    
                  
                  while(
              $row sqlsrv_fetch_array($Inhalt_Personalnummer)) {
                      if (
              $row['Personalnummer'] == $Personaldaten['Personalnummer']) {
                          echo 
              "<option value=\"".$value."\" selected=\"selected\">".$value."</option>";
                      } else {
                          echo
              "<option value=\"".$value."\">".$value."</option>";
                      }  
                  }
              ?>
              </select>
              Dennoch solltest du all unsere Anmerkungen/Vorschläge beachten und umsetzen - ich hab jetzt deinen Code "einfach umgeformt" und übersichtlicher gemacht. Eine optimale Lösung ist das definitiv nicht, aber soll dir zumindest mal nen Ansatz geben. Schau Dir bitte die Lösung von Chriz danach auch mal an...
              while (!asleep()) sheep++;

              Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

              Kommentar

              Lädt...
              X