Avatar billede kartinm Nybegynder
16. juni 2003 - 13:41 Der er 12 kommentarer og
1 løsning

Checkbox tingest

Hej hej..
Jeg roder lidt med en <form>, som sender inputet til en .php fil, der skal vise hvad bruger har skrevet/valgt.

Jeg vil ha´ 4 checkboxe i min form, og de valgte punkter skal ses i .php-file(siden).

<input type="checkbox" name="cb1" value="valg 1">
<input type="checkbox" name="cb2" value="valg 2">
<input type="checkbox" name="cb3" value="valg 3">
<input type="checkbox" name="cb4" value="valg 4">

Mit problem er så:
1) Hvordan viser jeg KUN de "felter" som brugern har afkrydset?
2) Når brugeren har valgt "cb1", hvad kommer der så til at stå på .php siden ... ! Er det teksten i VALUE?
Avatar billede schaefner Juniormester
16. juni 2003 - 13:48 #1
<input type="checkbox" name="cb[]" value="valg 1">
<input type="checkbox" name="cb[]" value="valg 2">
<input type="checkbox" name="cb[]" value="valg 3">
<input type="checkbox" name="cb[]" value="valg 4">

så kan du f.eks. gøre sådan:

<?php
echo 'Du har valgt: '.implode(',',$_POST['cb']);
?>

Så bliver de ting der er valgt sepereret med et komma.
Avatar billede jakoba Nybegynder
16. juni 2003 - 13:50 #2
1) nemt. de chechbokse der ikke er valgt bliver ikke sendt med formularen, så du kan teste:

  if ( isset( $_POST['cb1'] ) ) {
      // cb1 var valgt
      echo "tekst der skal vises for cb1<br>";
  } else {
      // cb1 var ikke valgt
  }

2) ja, når en a checkboksene er valgt er den værdien i value attributten der bliver sendt med som feltværdi.

mvh JakobA
Avatar billede jakoba Nybegynder
16. juni 2003 - 13:53 #3
schaefner >> den der med at skrive '[' og ']' tegn i navnet er ikke lovligt efter html-standarden. Jeg ved god php tilråder det som en fix. men det er en fix der bør undgås (og kan undgås). Der er browsere hvor det slet ikke virker og i fremtiden vil der formentlig være flere browsere der ikke tillader det.

mvh JakobA
Avatar billede kartinm Nybegynder
16. juni 2003 - 14:02 #4
jakoba...
skal det skrives i html filen eller phpfilen? :O)
Avatar billede jakoba Nybegynder
16. juni 2003 - 14:06 #5
if-sætningen sår i .php filen imellem  <?php  og  ?>; dvs den fil formularen submitter til.
Avatar billede kartinm Nybegynder
16. juni 2003 - 14:09 #6
tak skal du ha´ 
det ser ud til at virke fint...

:o)
Avatar billede kartinm Nybegynder
16. juni 2003 - 14:10 #7
nu må du bare "SVARE"... hmm
Avatar billede jakoba Nybegynder
16. juni 2003 - 14:17 #8
ok :-)
Avatar billede martinbk Nybegynder
16. juni 2003 - 15:11 #9
jakoba: hvordan ville du lave følgende uden brug af schaefner's lille fix ->

for($i=0;$i<count($array2);$i++) {
                if (($i%2) == 1) { $color = "ffffff"; } else { $color = "efefef"; }
                if ($i == 0) { $color = "efefef"; }
                $cmd = ereg_replace(",", "", $array2[$i]);
                echo "<tr><td bgcolor=$color>".$cmd."&nbsp;<b>[</b>$array3[$i]<b>]&nbsp;</b></td>";
                echo "<td bgcolor=$color><input class=check type=\"checkbox\" name=\"nam[]\" value=\"$cmd\"";
                if (in_array($array2[$i], $array)) {
                echo " checked";
                }
                echo "></td></tr>\n";
            }

if ($_POST['nam'] != "") {
                    $streng = implode(",",$_POST['nam']).',';
                    mysql_query("UPDATE chat_users SET flags='$streng' WHERE id='$_POST[updateid]'");
                }
                else {
                    mysql_query("UPDATE chat_users SET flags='' WHERE id='$_POST[updateid]'");
                }
Avatar billede jakoba Nybegynder
16. juni 2003 - 15:31 #10
med schefners fix er det en fornuftig måd at bruge det php-array der bliver genereret.
uden schefners fix bliver der ikke genereret noget array. Hvis du vil kan du selv generere et udfra de data der bliver sendt og så bruge det som ovenfor. Eller du kan gøre noget helt andet.

lad de forskellige form-felter få hver deres lovlige navn, fx cb1, cb2, cb3, cb4, ...

Hvis du så gerne vil have et array kan du fx lave det med:

$cb = array();
for ($i=1; $i<$max_muligt; $i++) {
    if ( isset( $_POST['cb'.i] ) ) {
        $cb[] = $_POST['cb'.i];
    }
}

så har du det samme array du får med  name='cb[]' med den forskel at det er lovligt :-))

mvh JakobA
Avatar billede schaefner Juniormester
16. juni 2003 - 16:03 #11
så må jeg hellere stoppe med alt det ulovlige fixeri ;)
Avatar billede schaefner Juniormester
16. juni 2003 - 16:08 #12
jakoba >> hvad så hvis man har en select-box med flere valgmuligheder, hvordan skal man så få overført dem der er valgt?
Avatar billede schaefner Juniormester
16. juni 2003 - 16:08 #13
Iøvrigt skal det vel være:

$cb = array();
for ($i=1; $i<$max_muligt; $i++) {
    if ( isset( $_POST['cb'.$i] ) ) {
        $cb[] = $_POST['cb'.$i];
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester