Ankündigung

Einklappen
Keine Ankündigung bisher.

foreach-Schleife und eine for-Schleife kombinieren

Einklappen

Neue Werbung 2019

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

  • foreach-Schleife und eine for-Schleife kombinieren

    Hallo, ich versuche schon eine Weile eine foreach-Schleife und eine for-Schleife zu kombinieren, jedoch ohne Erfolg. Vielleicht geht es ja auch etwas einfacher als ich mir es denke. Bitte nicht hauen, wenn es falsch ist

    Also, folgendes funktioniert:
    PHP-Code:
     <input type="checkbox" name="prozess[]" id="checkboxP2" class="css-checkbox"
                        <? foreach($prozess[0] as $prozess_checked){ if(stripos($prozess_checked,$lang[prozess_2]) !== false) echo 'checked="checked"';} ?> value="<? echo $lang[prozess_2] ?>"/><label for="checkboxP2" class="css-label"><? echo $lang[prozess_2] ?></label>
    und jetzt möchte ich das daraus machen (Hier steckt jetzt der Wurm):
    PHP-Code:
    for ($i=1$i<6$i++)
    {echo 
    '<input type="checkbox" name="prozess[]" id="checkboxP'.$i.'" class="css-checkbox" value="'.$lang[prozess_.$i].'"'
                      
    if(stripos($prozess,$lang[prozess_.$i]) !== false) echo 'checked="checked"';              
                      
    '/><label for="checkboxP'.$i.'" class="css-label">'.$lang[prozess_.$i].'</label>';} 
    Nimmt man folgenden Code wieder raus:
    Code:
    '
    				  
    if(stripos($prozess,$lang[prozess_.$i]) !== false) echo 'checked="checked"';			  
    				  
    '
    funktioniert die Auflistung aber ich hätte gern das es auch checked ist, so wie im ersten Code.


  • #2
    Ein Blick in den generierten HTML Quelltext werfen (einfach mal den Output der beiden Varianten miteinander vergleichen, dann sollte der Unterschied gleich ins Auge fallen).
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Vorab, ich speichere die "checked" Checkboxen vorher in ein Array mit Inhalt des Namens der Checkbox (Formular ADD).
      Jetzt will ich hier die checked Checkboxen wieder abrufen als Schleife (Formular EDIT). Ohne Schleife funktioniert das ganze Prima.

      Also ich habe jetzt folgendes, jedoch bekomme ich bei allen Checkboxen ein checked, möchte aber das nur die Checkbox gechecked wird wo auch der Wert (Name der Checkbox) in "$lang[prozess_.$i]" vorkommt.

      PHP-Code:
      for ($i=1$i<6$i++)
      {echo 
      '<input type="checkbox" name="prozess[]" id="checkboxP'.$i.'" class="css-checkbox" value="'.$lang[prozess_.$i].'"
      '
      ;              

      if(
      stripos($prozess[0],$lang[prozess_.$i]) !== false) echo 'checked="checked"';  

      echo 
      '/><label for="checkboxP'.$i.'" class="css-label">'.$lang[prozess_.$i].'</label>';



      Kommentar


      • #4
        PHP-Code:
        $lang[prozess_.$i
        error_reporting hochdrehen und die Warnung beachten.
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          PHP-Code:
          $lang[prozess_.$i
          Was ist prozess_ ? Dreh mal dein error_reporting ganz auf. Dazu ganz zu Beginn des Scriptes ein:
          PHP-Code:
          error_reporting(-1); 
          Was ist ein "Formular ADD" ?

          wo auch der Wert (Name der Checkbox) in "$lang[prozess_.$i]" vorkommt
          Was steht zB darin? Ich glaube stripos ist nicht der richtige weg, du kannst doch auch einen direkten Stringvergleich machen, oder überhaupt mit in_array das array nach dem vorhanden sein durchsuchen.

          Und deine Einrückung lässt zu wünschen übrig.
          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


          • #6
            Also ich habe ein Formular wo ich Einträge der Datenbank hinzufüge (Das nenn ich bei mir "ADD").
            Unter anderem auch diese Checkboxen. Bisher hatte ich sie einzeln, wollte aber für eine bessere Übersicht diese Checkboxen als Schleife.

            Hier ein Ausschnitt für das anzeigen der Checkboxen im Formular hinzufügen.
            PHP-Code:
            <? for ($i=1; $i<6; $i++) {echo '<input type="checkbox" name="prozess[]" id="checkboxP'.$i.'" class="css-checkbox" value="'.$lang[prozess_.$i].'"/><label for="checkboxP'.$i.'" class="css-label">'.$lang[prozess_.$i].'</label>';} ?>
            Die ausgewählten Checkboxen werden als Array gespeichtert:
            PHP-Code:
            array($_POST['prozess']); 
            und in die MySql-Datenbank geschrieben.

            Soweit so gut, das funktioniert ja auch prima.

            Jetzt habe ich ein Edit-Formular um Änderungen/Aktualisierungen vorzunehmen und möchte das die Checkboxen die gecheckt wurden hier wieder angezeigt werden.

            Ohne Schleife habe ich das wie folgt gemacht.
            Ich habe mir den Datenbank-Eintrag ausgelesen und vergleichen welche Werte im Array stehen. Passten diese Werte überein wurde die Checkbox gecheckt dargestellt.

            Das war dieser Code:
            PHP-Code:
             <input type="checkbox" name="prozess[]" id="checkboxP1" class="css-checkbox" 
                                <? foreach($prozess[0] as $prozess_checked){ if(stripos($prozess_checked,"HALLO") !== false) echo 'checked="checked"';} ?>
                                 value="<? echo "HALLO" ?>"/><label for="checkboxP1" class="css-label"><? echo "HALLO" ?></label>
            Das hat auch sehr gut funktioniert.

            Mit in_array habe ich es auch versucht, mit dem gleichen Ergebnis. Sobald der Wert in der Datenbank (HALLO) und der Wert im Code (HALLO) übereinstimmt, werden alle Checkboxen als gechecked dargestellt. Kommt der Wert nicht vor, werden auch alle Checkboxen als unchecked angezeigt.

            Kommentar


            • #7
              Hast du die beiden Beiträge von oben umgesetzt? Laut dem letzten Beitrag ja nicht, mach das mal!

              Debugging: http://php-de.github.io/#debugging

              LG
              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


              • #8
                Code:
                error_reporting(-1);
                bzw.
                Code:
                error_reporting(E_ALL);
                zeigt mir nix an

                Oh, doch. Ich muss erstmal schauen was da alles steht.

                Kommentar


                • #9
                  Also ich habe folgenden Fehler:

                  Warning: stripos() expects parameter 1 to be string, array given in /var/.../edit.php on line 172
                  checked="checked"

                  In dieser Zeile steht:
                  PHP-Code:
                  if(stripos($prozess[0],$lang[prozess_.$i]) !== false) echo 'checked="checked"'

                  Kommentar


                  • #10
                    Ist die Fehlermeldung nicht aussagekräftig genug?
                    Zitat von nikosch
                    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                    Kommentar


                    • #11
                      Sehr Aussagekräftig
                      Danke euch für den Schupser, nun klappts.

                      Kommentar

                      Lädt...
                      X