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

  • jayD
    hat ein Thema erstellt foreach-Schleife und eine for-Schleife kombinieren.

    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.

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

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    Ist die Fehlermeldung nicht aussagekräftig genug?

    Einen Kommentar schreiben:


  • jayD
    antwortet
    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"'

    Einen Kommentar schreiben:


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

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

    Einen Kommentar schreiben:


  • hausl
    antwortet
    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

    Einen Kommentar schreiben:


  • jayD
    antwortet
    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.

    Einen Kommentar schreiben:


  • hausl
    antwortet
    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.

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    PHP-Code:
    $lang[prozess_.$i
    error_reporting hochdrehen und die Warnung beachten.

    Einen Kommentar schreiben:


  • jayD
    antwortet
    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>';



    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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).

    Einen Kommentar schreiben:

Lädt...
X