Checkboxen in Formular
sarah
- php
0 Andreas Görtz0 Auge
Hallo zusammen
Ich möchte gerne machen, dass sich bei meinem Formular die Werte in den Checkbos zwischengespeichert werden beim klick auf OK und etwas nicht korrekt angegeben wurde.
Bei einem Textfeld mache ich dies so:
<input type="Text" name="pname" size="" maxlength=""
<? if($_POST['pname'] != "") echo 'value="'.$_POST 'pname'].'"';?>>
Die Werte für die Checkbox hole ich so:
$abfrage = 'select eh_id, eh_name from einheit order by eh_name';
$res = mysql_query($abfrage) or die ('Select ist fehl geschlagen! '.mysql_error());
$num = mysql_num_rows($res) or die ('Keine Einheiten vorhanden');
for($i = 0; $i < $num; $i++) {
$eh_id = mysql_result($res, $i, "eh_id");
$p_name = mysql_result($res, $i, "eh_name");
echo "<input type='checkbox' name='peinheit$i' value=$eh_id";
/* Prüfung */
echo ">$p_name<br>";
}
Nun habe ich allerdings keine Ahnung wie ich es dynamisch anstellen kann, die $_POST['peinheitX'] Variable (bei X sollte $i stehen) zu ändern.
Meine folgende Versuche scheiterten leider:
$try = "'peinheit".$i."'";
if ($_POST[$try] == $eh_id) echo "checked";
oder
if ($_POST[."'peinheit".$i."'".] == $eh_id) echo "checked";
Weis jemand weiter?
Hi,
Meine folgende Versuche scheiterten leider:
$try = "'peinheit".$i."'";
if ($_POST[$try] == $eh_id) echo "checked";
Das ist analog zu:
$_POST["'peinheitX'"]
Schreib an den Anfang deiner Scripts am besten generell
error_reporting(E_ALL);
Dann hättest du hier eine Notice bekommen, dass der Index 'peinheitX' (mit einfachen Anführungsstrichen) nicht definiert ist.
oder
if ($_POST[."'peinheit".$i."'".] == $eh_id) echo "checked";
Das ist analog zu:
Parse error
Weis jemand weiter?
$_POST['peinheit' . $i]
Du solltest allerdings auch mittels isset darauf prüfen, ob die Variable überhaupt existiert (nicht angeklickte Checkboxen werden nicht übertragen), ansonsten bekommst du bei o.g. error_reporting-Einstellung eine Notice, dass einige Indezes nicht definiert sind.
Gruß,
Andreas.
Hallo
Weis jemand weiter?
Vielleich weiß ich weiter. :-)
Beispiel: ein von mehreren Checkboxen eines "Feldes", also zu einer Frage,
so habe ich deine Fragestellung jedenfalls verstanden. Hier in den reinen
HTML-Quelltext eingefügt.
<input name="spaeter[]" value="Begleithundeausbildung" type="checkbox"<?php if (isset($_POST["spaeter"][0]) and $_POST["spaeter"][0]=="Begleithundeausbildung") { echo " checked"; } ?>>
Wie du siehst, benutze ich ein zweidimensionales Array (Hier Element 0 des
Arrays $_POST["spaeter"]). Die Anzahl der Checkboxen, sowie deren Position
solltest du ja kennen. Es wird geprüft, ob es das Element gibt und ob
das Element den zu erwartenden Wert hat (hier: Begleithundeausbildung).
Tschö, Auge
Hello,
<input name="spaeter[]" value="Begleithundeausbildung" type="checkbox"<?php if (isset($_POST["spaeter"][0]) and $_POST["spaeter"][0]=="Begleithundeausbildung") { echo " checked"; } ?>>
Das bringt mich aud eine Frage:
Was sagt das W3C bezüglich Validität denn zu
<input type="checkbox" name="check[1]" value="checked" checked="nein">
--------------
Das mag jetzt eigenwillig anmuten, aber der Sinn an der Sache ist, durch ungeprüfte Usereingaben (in nicht so kritischen Formularen) beim "Affenmachen" keinen invaliden Code zu produzieren.
<input type="checkbox" name="check[1]" value="checked" checked="<?php echo check[1]; ?>">
----------------------------
Das sollte spätestens klarmachen, warum ich die Frage gestellt habe
Wenn man mit dieser Zeile nun den Affen macht, und das Formular nicht manipuliert weird, dann sollte es doch klappen, oder? Aber was ist, wenn das Formular manipuliert wird...?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
Sorry, das sollte natürlich hier auch vollständig stehen:
<input type="checkbox"
name="check[1]"
value="checked"
checked="<?php if(isset($_POST['check'][1])){echo $_POST['check'][1];} ?>">
-----------------------------------------------------------
Oder darf das Attribut checked keinen leeren Wert enthalten?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo
<input type="checkbox"
name="check[1]"
value="checked"
checked="<?php if(isset($_POST['check'][1])){echo $_POST['check'][1];} ?>">
Kann es sein, das du dich ein bisschen verhaspelt hast?
Du meintest doch wohl:
M;al davon abgesehen, dass ich "checked" solo verwende (HTML 4), habe ich
auch noch nicht probiert, das name-Attribut mit einer Arrayangabe incl. Index
zu füllen (name="check[1]"). Ich wäre ehrich gesagt so noch nicht auf die Idee
gekommen, dies zu tun. Schließlich fuktioniert es so, wie es funktioniert [1],
und gut ist!
[1] Ich weiß, dass das kein schlagendes Argument ist.
Tschö, Auge
Hello,
<input type="checkbox"
name="check[1]"
value="checked"
checked="<?php if(isset($_POST['check'][1])){echo $_POST['check'][1];} ?>">Kann es sein, das du dich ein bisschen verhaspelt hast?
- value="checked"
Das ist schon in Ordnung so. Bei Checkboxen wird ja nicht der Value als Feldinhalt übernommen, sondern nur beim Absenden übertragen. Und da SOLL er ja immer 'checked' lauten
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo
Das ist schon in Ordnung so. Bei Checkboxen wird ja nicht der Value als Feldinhalt übernommen,
Nicht? Ich will ja eine verwertbare Information übergeben.
sondern nur beim Absenden übertragen. Und da SOLL er ja immer 'checked' lauten
Naja, es ging ja darum, in einem Affenformular im Falle, dass nicht alles
wie gefordert ausgefüllt ist, das Formular wieder anzuzeigen und die Werte
(Value), soweit gültig, einzutragen/vorzubelegen. Dabei wird doch am "name"
Attribut geprüft, ob diese Checkbox vorbelegt (checked) werden soll.
Tschö, Auge
Hello,
Naja, es ging ja darum, in einem Affenformular im Falle, dass nicht alles
wie gefordert ausgefüllt ist, das Formular wieder anzuzeigen und die Werte
(Value), soweit gültig, einzutragen/vorzubelegen. Dabei wird doch am "name"
Attribut geprüft, ob diese Checkbox vorbelegt (checked) werden soll.
Da siehst Du mal wieder, dass das Programmieren Philosopie ist. Es ist ja absolut nicht falsch, was Du vorschlägst. Ich nun wiederum habe versucht, die Freiheitgrade soweit es zulässig ist, zusammenzukürzen...
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi,
Das mag jetzt eigenwillig anmuten, aber der Sinn an der Sache ist, durch ungeprüfte Usereingaben (in nicht so kritischen Formularen) beim "Affenmachen" keinen invaliden Code zu produzieren.
<input type="checkbox" name="check[1]" value="checked" checked="<?php echo check[1]; ?>">
ob ein leeres checked-Attribut valide ist, weiß ich auch nicht. Aber mit
<input type="checkbox" name="check[1]" value="irgendwas"<?php if (isset($_POST['check'][1])) { echo ' checked="checked"'; } ?> />
stellen sich deine Fragen nicht und das Formular bleibt universell.
Gruß,
Andreas.