Avatar billede jimpp Nybegynder
17. juni 2006 - 11:18 Der er 7 kommentarer og
1 løsning

Checkboxes giver kun en værdi

Jeg har følgende kode:

<input type="submit" value="Save" />
            </form>
TEST
<form action="?modul=addgame&sub=write" method="post">
<br />
<input type="checkbox" name="format" value="1" />
<input type="checkbox" name="format" value="2" />
<input type="checkbox" name="format" value="3" />
<input type="submit" value="Save" />
            </form>

<?php
$spil = explode(",", $_POST['format']);
foreach ($spil as $value) {
    echo $value;
}
?>

Det jeg gerne vil opnå at at hvis alle 3 checkboxe er krydset af, skal jeg have værdien "1,2,3" som jeg derefter kan dele op i mit array. MEN jeg får kun den sidste værdi med, når jeg poster, hvis alle er valgt, er værdien feks "3".

Hvad gør jeg galt, det har virket for mig i ColdFusion og ASP tidligere.
Avatar billede nielle Nybegynder
17. juni 2006 - 11:25 #1
Ved at tilføje en [] til navnet:

<form action="?modul=addgame&sub=write" method="post">
<br />
<input type="checkbox" name="format[]" value="1" />
<input type="checkbox" name="format[]" value="2" />
<input type="checkbox" name="format[]" value="3" />
<input type="submit" value="Save" />
</form>
Avatar billede nielle Nybegynder
17. juni 2006 - 11:27 #2
... kan PHP selv finde ud af at lave den til et array:

<?php
// Ikke nødvendig -- $spil = explode(",", $_POST['format']);
foreach ($_POST['format'] as $value) {
    echo $value;
}
?>
Avatar billede jimpp Nybegynder
17. juni 2006 - 11:29 #3
virker ikke helt?

TEST
<form action="?modul=addgame&sub=write" method="post">
<br />
<input type="checkbox" name="format[]" value="1" />
<input type="checkbox" name="format[]" value="2" />
<input type="checkbox" name="format[]" value="3" />
<input type="submit" value="Save" />
            </form>

<?php
$spil = explode(",", $_POST['format']);
foreach ($spil as $value) {
    echo $value;
}
?>

Udskriver nu: "Array" en gang
Avatar billede jimpp Nybegynder
17. juni 2006 - 11:31 #4
okay, nu virker det, skrev imens du tilføjede sidste kommentar, tak for hjælpen
Avatar billede expnet Seniormester
17. juni 2006 - 11:32 #5
Det er mit bud:: :P

TEST
<form action="" method="post">
<br />
<input type="checkbox" name="format[]" value="1" />
<input type="checkbox" name="format[]" value="2" />
<input type="checkbox" name="format[]" value="3" />
<input type="submit" value="Save" />
            </form>

<?php
$str_format = $_POST[format];
$format_arr = "";
$i = 0;
$q = count($str_format);
while($i < $q){
$format_arr .= $str_format[$i] .",";

$i = $i + 1;
}
echo $format_arr;
?>
Avatar billede nielle Nybegynder
17. juni 2006 - 11:42 #6
Jeg ville nu foretrække en for-løkke i stedet for en while:

<?php
$str_format = $_POST[format];
$format_arr = "";
for ($i; $i<count($str_format); $i++)
{
    $format_arr .= $str_format[$i] . ",";
}
echo $format_arr;
?>
Avatar billede nielle Nybegynder
17. juni 2006 - 11:42 #7
... og et svar :^)
Avatar billede nielle Nybegynder
17. juni 2006 - 11:46 #8
Skulle have været:

for ($i=0; $i<count($str_format); $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