Mailinglisten-Archive |
Egbert Engel schrieb am Mittwoch, den 28. Juli 1999:
> Ich möchte mir zu einzelnen Treffern eine Detailansicht anzeigen lasssen,
> wenn sie mit einer Checkbox markiert sind, also
> <?
> if($action=="los"){
> for($i=0; $i<count($show); $i++){
> if($show[$i]==$i)
> echo($i." ist aktiviert.<br>\n");
> }
> }
> else{
> echo("<form action=\"$PHP_SELF\" method=POST>");
> for($i=0; $i<10; $i++)
> echo("<input type=\"checkbox\" name=\"show[]\"
> value=\"$i\"><br>\n");
> echo("<input type=submit name=\"action\" value=\"los\">");
> echo("</form>");
> }
> ?>
> Allerdings existieren die Feld-Elemente nur bei aktivierter checkbox, so
> daß das immer schiefgehen wird, wenn nicht alle aktiviert sind :-(
Ich glaube, Dein Logikfehler wird Dir an einem Beispiel klar werden.
Nimm mal an, das Formular wäre statisch und sähe so aus:
<FORM ACTION="check.php3" METHOD="POST">
<INPUT TYPE="checkbox" NAME="show[]" VALUE="audi"><BR>
<INPUT TYPE="checkbox" NAME="show[]" VALUE="bmw"><BR>
<INPUT TYPE="checkbox" NAME="show[]" VALUE="porsche"><BR>
<INPUT TYPE="checkbox" NAME="show[]" VALUE="vw"><BR>
<INPUT TYPE="submit" NAME="action" VALUE="los">
</FORM>
Wenn man nun nur "audi" und "vw" auswählt und dann abschickt, werden
die Formulardaten so zusammengebaut:
show[]=audi&show[]=vw&action=los
Auf der Seite "check.php3" werden daraus dann PHP-Variable:
- ein Array $show mit $show[0]=='audi' und $show[1]=='vw'
- eine einfache Variable $action=='los'
Du hattest also die Checkbox-Values auf der einen Seite mit dem
Array-Indizes von $show auf der anderen Seite durcheinandergeworfen.
Ändere Deinen Code z.B. so:
if($action=="los"){
for($i=0; $i<count($show); $i++){
echo($show[$i]." ist aktiviert.<br>\n");
}
}
Ciao,
Martin
--
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ >
PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7
php::bar PHP Wiki - Listenarchive