Avatar billede mazey Praktikant
31. juli 2014 - 16:54 Der er 5 kommentarer og
1 løsning

PHP, Checkboxes og arrays

Hej eksperter,

Jeg har en form hvori der dynamisk genereres en række checkboxes - Jeg har 2 dataværdier jeg skal have parret sammen i en foreach løkke eller lignende, men kan simpelthen ikke se mig ud af det:

Output er indtil videre sådan:

<input type="checkbox" name="valg[]" value="5" />
<input type="hidden" name="process_id[]" value="30" />

<input type="checkbox" name="valg[]" value="4" />
<input type="hidden" name="process_id[]" value="31" />

<input type="checkbox" name="valg[]" value="15" />
<input type="hidden" name="process_id[]" value="30" />

Ovenstående skal så parres sammen, så jeg får værdierne til at høre sammen (altså 5 og 30 først, herefter 4 og 31 osv.)

Har lavet starten på en foreach, men så stopper det også dér :-)
if($_POST[submit] != ""){

foreach($_POST['valg'] as $key => $value){
echo $key;
}

}

Har set/læst, at der er nogen der kan sætte det op uden hidden feltet, men hvor der så er 2 array-værdier i checkboxen - noget a la valg[][] det ved jeg ikke om er bedre/nemmere/muligt?

Nogen der kan hjælpe?
Avatar billede kurtmo Novice
31. juli 2014 - 17:57 #1
Prøv: $_POST['process_id'][$key]

Value kunne evt. sættes til "5,30". I din foreach laver du så en explode på den.
Avatar billede kurtmo Novice
31. juli 2014 - 18:15 #2
glem $_POST['process_id'][$key]
det vil ikke virke, da kun markerede checkbokse fylder i arrayet
Avatar billede mazey Praktikant
31. juli 2014 - 20:00 #3
Update:

Har droppet foreach løkken og i stedet brugt en almindelig for - det virker næsten, men problemet er nu bare, at selvom jeg kun vælger 3 checkboxes, så giver den mig stadig alle værdier fra de skjulte text-bokse.

<input type="checkbox" name="valg[]" value="<?=$hent_data[id]?>" />
<input type="hidden" name="process_id[]" value="<?=$hent_data[process_id]?>" />

<?php
if($_POST[submit] != ""){

$arrlength=count($_POST[valg]);
for($x=0;$x<$arrlength;$x++) {
$dimen1 = $_POST[valg][$x];
$dimen2 = $_POST[process_id][$x];

echo $hest = "INSERT INTO chosen (kat_ref, prod_ref, process_id) VALUES ($dimen1, '', $dimen2)"."<br/>";
}


}
?>

Nogen der kan lede mig på sporet til, hvordan jeg får returneret de skjulte input bokse, der "hører til" den specifikke checkbox?
Avatar billede expnet Seniormester
31. juli 2014 - 22:14 #4
hvorfor laver du med hidden felter?
Avatar billede mazey Praktikant
31. juli 2014 - 22:21 #5
Jeg har fået hjælp et andet sted - og det blev ikke med hidden felt.
For de interesserede blev løsningen som følger:

<input type="checkbox" name="valg[<?=$hent_child_data[id]?>]" value="<?=$hent_child_data[process_id]?>"/ >

foreach($_POST['valg'] as $ID => $processID){
 
$indsaet = "INSERT INTO chosen (kat_ref, prod_ref, process_id) VALUES ($ID, '$edit_prod_data[id]', $processID)"."<br/>";
}
Avatar billede expnet Seniormester
31. juli 2014 - 22:27 #6
jep, ville jeg også sige man skulle samle det i en post.vars
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

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