Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11
  1. #1
    Idared
    Themenstarter

    Registriert
    06.2010
    Beiträge
    26

    Namen einer Checkbox dynamisch vergeben

    Guten Morgen zusammen,
    ich versuche gerade mit meinem gefährlichen Halbwissen ein Problem in php zu lösen und würde mich sehr über ein wenig Expertenhilfe freuen. Und zwar möchte ich, dass meine Sender Datei ein Array ausliest und zu jedem Wert den sie findet eine Checkbox erstellt. Jeder der Checkboxen soll einen eigenen Namen erhalten, so dass ich in meiner Empfaengerdatei mit den Ergebnissen der Senderdatei mithilfe von POST arbeiten kann. Das Problem ist nun, dass die die Anzahl der Arraywerte variiert und die Namen der Checkboxen deshalb dynamisch erzeugt werden müssen. Ich bin ein absoluter Anfäger und habe jetzt einfach mal drauflos programmiert. Natürlich geht es nicht. Mein Problem liegt glaube ich zum einen bei der Namensvergabe für die Checkboxen und dann bei der Übernahme in der Empfaengerdatei.
    Anbei findet ihr meine beiden Dateien. Vielleicht könnt ihr mir ja Tipps für eine einfache Lösung meines Problems geben.
    Besten Dank,
    Kevin
    test_empfaenger.php.ziptest_sender.php.zip

  2. #2
    drp
    drp ist offline
    Ontario Avatar von drp
    Registriert
    04.2011
    Beiträge
    342
    Vielleicht so:
    Code:
    for($k = 0; $k < sizeof($array); $k++)
    	{
    	$count++;
    	
        print $array[$k];
        //wie schaffe ich es jetzt, dass der Name für jede Checkbox dynamisch erzeugt wird?
        //bspw. name_element1, name_element2 etc. so dass ich im empfaenger formular 
        //das Ergebnis der Checkboxabfrage direkt über jeweils eine Variable abfragen kann
        echo "<input type=\"checkbox\" name=\"checkbox" . $k . "\" value=\"true\"><br>";
    	echo "<br>";
    	}
    jede Checkbox bekommt dann die ID array-wert + id (Zum Beispiel:
    $array = ("Blub", "Bla", "Blob");
    Dann hat die erste Checkbox den Namen "checkbox0", die zweite "checkbox1", ...

    EDIT: Habs gerade mal bei mir ausprobiert und es klappt...
    Geändert von drp (15.05.2011 um 20:06 Uhr)
    Viele Grüße von DRP - Homepage
     MacBook Air 11,6" |  iPhone 3GS 8GB |  iPad 2 16GB weiß Wi-Fi |  Magic Mouse | PC

  3. #3
    Idared
    Themenstarter

    Registriert
    06.2010
    Beiträge
    26
    Super, besten Dank! Dein Skript hat funktioniert!
    Danke,
    Kevin

  4. #4
    Englischer Kantapfel Avatar von _linx_
    Registriert
    01.2009
    Alter
    19
    Beiträge
    1.086
    Ist einfach ein wenig gefährlich so, wenn du nummerische Indexe verwendest, so kannst du im Nachhinein nicht mehr identifizieren, welche Checkbox was war

  5. #5
    drp
    drp ist offline
    Ontario Avatar von drp
    Registriert
    04.2011
    Beiträge
    342
    Du kannst natürlich auch $k durch das array($k) ersetzen.
    Aber Nummern sind natürlich sicherer, da in dem Aray auch ein ' vorkommen kann, welches dann den Code kaputt macht.
    Viele Grüße von DRP - Homepage
     MacBook Air 11,6" |  iPhone 3GS 8GB |  iPad 2 16GB weiß Wi-Fi |  Magic Mouse | PC

  6. #6
    Idared
    Themenstarter

    Registriert
    06.2010
    Beiträge
    26
    Hallo zusammen,
    mittlerweile habe ich mein komplettes Skript überarbeitet und nutze nun eine Tabelle aus deren Daten ich die Checkboxen "befüllen" will. Meine Schleife in der die Checkboxen erzeugt werden sollen, sieht wie folgt aus:

    print('<form action="Ausgabe_Tabelle.php" method="post">');


    while($zeile2=mysql_fetch_object($ergebnis2))
    {
    $i=1;
    print $zeile2->sendung; //schreibt den Wert des jeweiligen Tabelleneintrags vor die Checkbox
    echo '<input type=\'checkbox\' name=\'checkbox' . $i . '\' value=\'$zeile2->sendung\>';

    //Wie sieht hier die richtige Syntax aus, damit der Name der Checkboxen immer um eins erhöht wird? Außerdem soll die Checkbox als Value immer den jeweiligen Wert aus der Tabelle erhalten, den ich mit $zeile2->sendung abfrage.

    print ('<P>');
    $i++;
    }

    Wie ihr seht, hänge ich eigentlich wieder an der gleichen Stelle. Könnt ihr mir nochmals helfen? Wenn ich mit der angegebenen Schleife arbeite erzeugt er mir leider keine Checkboxen und ich glaube er vergibt auch nicht die dynamischen Namen für die Checkboxen.

    Lieben Dank,
    Kevin

  7. #7
    Schöner von Nordhausen Avatar von timmy38233
    Registriert
    07.2008
    Alter
    18
    Beiträge
    327
    Das $i=1 muss vor der Schleife definiert werden! Sonst wird es nach dem hochzählen immer wieder auf 1 gesetzt
    MacBook (white) 2 GHz Intel Core Duo - 2 GB Ram + Mighty Mouse (Wireless)
    MacBook Pro (2010) 2.4 GHz Intel Core 2 Duo - 4 GB Ram


    "The things you own, they end up owning you." - Tyler Durden (Fight Club)


  8. #8
    Idared
    Themenstarter

    Registriert
    06.2010
    Beiträge
    26
    Danke, das stimmt natürlich. Leider geht es jetzt immer noch nicht. Da müssen noch weitere Fehler drin sein. Hier der korrigierte aber leider immer noch nicht funktionierende Code. Schon jetzt vielen Dank für eure Hilfe.

    print('<form action="Ausgabe_Tabelle.php" method="post">');

    $i=1;
    while($zeile2=mysql_fetch_object($ergebnis2))
    {
    print $zeile2->sendung; //schreibt den Wert des jeweiligen Tabelleneintrags vor die Checkbox
    echo '<input type=\'checkbox\' name=\'checkbox' . $i . '\' value=\'$zeile2->sendung\>';

    //Wie sieht hier die richtige Syntax aus, damit der Name der Checkboxen immer um eins erhöht wird? Außerdem soll die Checkbox als Value immer den jeweiligen Wert aus der Tabelle erhalten, den ich mit $zeile2->sendung abfrage.

    print ('<P>');
    $i++;
    }

  9. #9
    Englischer Kantapfel Avatar von _linx_
    Registriert
    01.2009
    Alter
    19
    Beiträge
    1.086
    Du hast keine grosse Vorliebe für Debugging, oder?

    1. Ausgegebenen HTML-Code ansehen! sieht das so aus wie ich es gerne möchte?
    2. Syntax-Highlighting für den Quellcode -> sind Variablen auch so farbig wie sie sein sollten?
    3. Error-Reporting -> Werden irgendwelche Fehler ausgegeben?

    Ein kleiner Tipp: Der Fehler liegt im Echo, eine Variable wird als Text ausgegeben statt als deren Wert...

  10. #10
    Ontario Avatar von Grawapple
    Registriert
    05.2006
    Ort
    Meisterschwanden
    Alter
    21
    Beiträge
    348
    Code:
    <?php
    
    foreach($array as $key => $value)
    {
         echo '<input type="checkbox" name="dieser_name_kann_beliebig_erweitert_werden'.$key.'" value="'.$value.'" />';
    }
    
    ?>
    So wäre es mit den richtigen Element-Namen und nicht einfach nur nummeriert
    Wenn du keine spezielle Namen verwendest werden es halt einfach die numerischen Indizes sein

    LG

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •