Avatar billede mccookie Seniormester
12. november 2003 - 15:30 Der er 10 kommentarer og
1 løsning

checkbox og php

Jeg har en side hvor mine bruger kan indtaste nogle arrangementer i en kalender.

Der er så mulighed for at vælge hvem arrangementerne er for!

Eks.

Gruppe 1
Gruppe 2
Gruppe 3
Gruppe 4
Gruppe 5
Gruppe 6
Gruppe 7
Gruppe 8
Gruppe 9
Gruppe 10
Gruppe 11
Gruppe 12

Vilkårligt kan der vælges én eller flere grupper som arrangementet afholdes for.

Når brugeren har valgt og skrevet det der skulle skrives, så trykker vedkomne SUBMIT
Inputet valideres og sendes så videre til et script som smider det hele i en database.

Som det er nu har jeg 12 grupper, der kunne komme på tale at ændre antallet af grupper og her opstår der så et mindre problem.

Pt. så kommer værdierne fra checkboxene ind i mit valideringsscript som:
gruppe1 {værdi}
gruppe2 {værdi}
gruppe3 {værdi}
gruppe4 {værdi}
gruppe5 {værdi}
gruppe6 {værdi}
gruppe7 {værdi}
gruppe8 {værdi}
gruppe9 {værdi}
gruppe10 {værdi}
gruppe11 {værdi}
gruppe12 {værdi}

Jeg har hørt at man kan lave noget med et array og ville da høre om nogen kunne give en hjælpende hånd?

mvh.
Henning
Avatar billede Slettet bruger
12. november 2003 - 16:08 #1
Hvis du kalder dine checkbokse for f.eks. mine_bokse[] i name="" tagget vil de ved submit være et array.

if(is_array($_REQUEST['mine_bokse'])) {//tjek om det er et array, hvis ikke vil foreach sætningen fejle
foreach($_REQUEST['mine_bokse'] as $value) {
echo $value
}
}
Avatar billede Slettet bruger
12. november 2003 - 16:08 #2
ups..mangler et ; efter echo $value
Avatar billede jakoba Nybegynder
12. november 2003 - 16:11 #3
Hvad med at bruge en select='multiple' istedetfor?  Så er listen over options rimeligt nem at udvide når der bliver brug for det.
Avatar billede mccookie Seniormester
12. november 2003 - 19:24 #4
JakobA>>

Hvis jeg har en select multiple, så skal jeg igen hive alle værdier med mit indledningseksempel.

Jeg ville gerne om man kunne, nøjes med at f.eks. indsætter et nyt pkt. under mit select. Så vil det betyde at jeg skal tilrette mit script der smider det hele i en db - Det var det jeg egentlig ville slippe for
Avatar billede mccookie Seniormester
12. november 2003 - 19:26 #5
El_barto>> Mit problem fremkommer når det skal i en DB, hvordan går jeg det?? altså med et array??
Avatar billede Slettet bruger
12. november 2003 - 20:27 #6
Nu ved jeg jo ikke hvordan du vil sætte det i databasen, men gætter på at der for hver gruppe skal smides en post i DB'en...


I nedennævnet kode har jeg udkommenteret selve SQL queryen for at du kan se hvad jeg mener..

Prøv det:

<?

if(is_array($_REQUEST['mine_bokse'])) {//tjek om det er et array, hvis ikke vil foreach sætningen fejle
foreach($_REQUEST['mine_bokse'] as $value) {
echo $value;

$sql = "INSERT INTO dintabel ('gruppe', 'vaerdi') VALUES ('" . $value . "','etellerandet')";
//mysql_query($sql);
echo $sql;

}
}

?>

<form method="post">

<input type="checkbox" name="mine_bokse[]" value="Gruppe 1"> Gruppe 1<br>
<input type="checkbox" name="mine_bokse[]" value="Gruppe 2"> Gruppe 2<br>
<input type="checkbox" name="mine_bokse[]" value="Gruppe 3"> Gruppe 3<br>
<input type="checkbox" name="mine_bokse[]" value="Gruppe 4"> Gruppe 4<br>
<input type="checkbox" name="mine_bokse[]" value="Gruppe 5"> Gruppe 5<br>

<input type="submit" name="Send">

</form>
Avatar billede mccookie Seniormester
12. november 2003 - 20:55 #7
El_barto>>

Der er noget jeg ikke helt forstår!

<input type="checkbox" name="mine_bokse[]" value="1"> Gruppe 1<br>
<input type="checkbox" name="mine_bokse[]" value="1"> Gruppe 2<br>
<input type="checkbox" name="mine_bokse[]" value="1"> Gruppe 3<br>
<input type="checkbox" name="mine_bokse[]" value="1"> Gruppe 4<br>
<input type="checkbox" name="mine_bokse[]" value="1"> Gruppe 5<br>

Checkboxene 1 til 5 får hver en plads i et array......svarende til

Id              value          status
mine_bokse[0]      1            checked
mine_bokse[1]      0            not checked
mine_bokse[2]      0            not checked
mine_bokse[3]      1            checked
mine_bokse[4]      1            checked

$sql = "INSERT INTO dintabel ('gruppe', 'vaerdi') VALUES ('" . $value . "','etellerandet')";
//mysql_query($sql);
echo $sql;

Jeg vil bare sikre mig at når man vælger at det er for gruppe 1 så er det den gruppe der bliver repræsenteret med værdien 1 og således!
Avatar billede erikjacobsen Ekspert
12. november 2003 - 20:58 #8
<input type="checkbox" name="mine_bokse[1]" value="1"> Gruppe 1<br>
<input type="checkbox" name="mine_bokse[2]" value="1"> Gruppe 2<br>
<input type="checkbox" name="mine_bokse[3]" value="1"> Gruppe 3<br>
<input type="checkbox" name="mine_bokse[4]" value="1"> Gruppe 4<br>
<input type="checkbox" name="mine_bokse[5]" value="1"> Gruppe 5<br>
Avatar billede martor Nybegynder
12. november 2003 - 22:41 #9
dine mine_bokse[1] og [2] vil ikke være i arrayet, da det kun er true-værdier der bliver postet. Derfor vil du kun få de ønskede værdier i arrayet, som så kan gennemløbes som El_barto>> foreslår.
Avatar billede Slettet bruger
13. november 2003 - 00:12 #10
Hvis han bare ville have testet det script jeg postede, det udskriver nemlig sql-queryen så han kan se hvad der sker ;)
Avatar billede mccookie Seniormester
29. november 2003 - 20:47 #11
lukker spm.
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