Vielleicht so:
jede Checkbox bekommt dann die ID array-wert + id (Zum Beispiel: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>"; }
$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...
Ergebnis 1 bis 10 von 11
- 15.05.2011, 09:00 #1Idared
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
- 15.05.2011, 16:23 #2
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
- 15.05.2011, 22:36 #3Idared
Themenstarter
- Registriert
- 06.2010
- Beiträge
- 26
Super, besten Dank! Dein Skript hat funktioniert!
Danke,
Kevin
- 17.05.2011, 13:49 #4
Ist einfach ein wenig gefährlich so, wenn du nummerische Indexe verwendest, so kannst du im Nachhinein nicht mehr identifizieren, welche Checkbox was war
- 17.05.2011, 14:01 #5
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
- 29.07.2011, 21:47 #6Idared
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
- 29.07.2011, 22:05 #7
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)
- 29.07.2011, 22:31 #8Idared
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++;
}
- 30.07.2011, 01:25 #9
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...
- 30.07.2011, 02:03 #10So wäre es mit den richtigen Element-Namen und nicht einfach nur nummeriertCode:
<?php foreach($array as $key => $value) { echo '<input type="checkbox" name="dieser_name_kann_beliebig_erweitert_werden'.$key.'" value="'.$value.'" />'; } ?>
Wenn du keine spezielle Namen verwendest werden es halt einfach die numerischen Indizes sein
LG


Zitieren




