• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Namen einer Checkbox dynamisch vergeben

cassiuskev

Idared
Registriert
02.06.10
Beiträge
25
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
Anhang anzeigen test_empfaenger.php.zip Anhang anzeigen test_sender.php.zip
 

drp

Jerseymac
Registriert
12.04.11
Beiträge
458
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...
 
Zuletzt bearbeitet:

cassiuskev

Idared
Registriert
02.06.10
Beiträge
25
Super, besten Dank! Dein Skript hat funktioniert!
Danke,
Kevin
 

_linx_

Kleiner Weinapfel
Registriert
04.01.09
Beiträge
1.125
Ist einfach ein wenig gefährlich so, wenn du nummerische Indexe verwendest, so kannst du im Nachhinein nicht mehr identifizieren, welche Checkbox was war ;)
 

drp

Jerseymac
Registriert
12.04.11
Beiträge
458
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.
 

cassiuskev

Idared
Registriert
02.06.10
Beiträge
25
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
 

timmy38233

Rhode Island Greening
Registriert
20.07.08
Beiträge
474
Das $i=1 muss vor der Schleife definiert werden! Sonst wird es nach dem hochzählen immer wieder auf 1 gesetzt ;)
 

cassiuskev

Idared
Registriert
02.06.10
Beiträge
25
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++;
}
 

_linx_

Kleiner Weinapfel
Registriert
04.01.09
Beiträge
1.125
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...
 

Grawapple

Uelzener Rambour
Registriert
13.05.06
Beiträge
373
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
 

cassiuskev

Idared
Registriert
02.06.10
Beiträge
25
Besten Dank für eure Mühe, ihr habt mir das Wochenende gerettet. Anbei meine Lösung, die ich mit eurer Hilfe auf die Beine gestellt habe.
Nochmals besten Dak und euch ein entspanntes Wochenende!
Kevin

$key=1;
while($zeile2=mysql_fetch_object($ergebnis2))
{
$wert_aus_tabelle=$zeile2->sendung;
print $zeile2->sendung;
echo '<input type="checkbox" name="checkbox'.$key.'" value="'.$wert_aus_tabelle.'" />';
print ('<P>');
$key++;
}