Avatar billede -chriz- Nybegynder
19. februar 2004 - 19:43 Der er 17 kommentarer og
1 løsning

variabel--navne og løkker

Jeg har en række checkboxes, som har flg. navnestruktur:
name=\"checkbox" . $count".\"

$count tælles op efter hver checkbox, så checkboxene altså får navnene
checkbox0
checkbox1
checkbox2
...osv...

men nu er mit spørgsmål så - hvordan henter jeg disse variabler med samme navn, i en while/for-løkke når jeg submitter?

jeg skal hente $checkbox0, $checkbox1, $checkbox2- er der nogen måde at køre disse igennem i en løkke? det er jo ikke særligt fleksibelt at køre dem én for én..

jeg har prøvet noget lignende
$checkbox$count - men det virker ikke...

/Christian
Avatar billede erikjacobsen Ekspert
19. februar 2004 - 19:47 #1
du skal bruge $_POST["checkbox$count"]
Avatar billede -chriz- Nybegynder
19. februar 2004 - 20:13 #2
det virker... kom med et svar, og der kommer et par points din vej
Avatar billede 7th Praktikant
19. februar 2004 - 20:13 #3
Jeg vil personligt gøre det på følgende måde.

Du skal have en variabel, som har en vilkårlig værdi, for at du kan vide hvor mange checkboxe du har. Når du tæller $count, kunne du for eksempel gemme værdien af $count i et hidden inputfelt. Når der så submittes, så laver du en for-løkke afhængig af værdien i hidden inputfelt.

Lad os sige...

checkbox0
checkbox1
checkbox2

hidden inputfelt = 2

for (x = 0; x <= count ($_POST['hidden_inputfelt']); $x++)
{
$checkbox.$x = $_POST['checkbox$x'];
}
Avatar billede -chriz- Nybegynder
19. februar 2004 - 20:18 #4
jeg kan se ideen i 7th's indlæg er det samme som det jeg ledte efter... så hvis I kommer med et svar begge to, splitter vi points'ene ;)
Avatar billede schaefner Juniormester
19. februar 2004 - 20:20 #5
7th >> Det vil ikke virke

$_POST['checkbox$x']; Det vil ikke udskrive variablen $x
Du kan mig bekendt heller ikke sammensætte en variabel på den måde ($checkbox.$x)

<?php
for ($i=0;$i<count($_POST['numbers']);$i++) ${$checkbox.$x} = $_POST['checkbox'.$i];

echo $checkbox1;
?>
Avatar billede 7th Praktikant
19. februar 2004 - 20:22 #6
Den første skal du sige til erikjacobsen, jeg kopierede fra hans kommentar ;o)
Det sidste er sikkert også korrekt.
Avatar billede schaefner Juniormester
19. februar 2004 - 20:28 #7
<?php
for ($i=0;$i<=$_POST['number'];$i++) {
    ${'check'.$i} = $_POST['checkbox'.$i];
}
echo $check1;
?>

sådan :)
Avatar billede -chriz- Nybegynder
19. februar 2004 - 20:33 #8
erikjacobsens svar har virket for mig... (siger jeg lige igen ;)) ... den store forskel er vel punktummet i dit svar, schaefner - men umiddelbart gør det ingen forskel her?
Avatar billede erikjacobsen Ekspert
19. februar 2004 - 21:14 #9
Når spørgeren vil have variablen $checkbox1 osv, og de kommer fra en form,
så er det altid bedre et bruge $_POST end at regne med at registerglobals er
slået til. $$-metoden ville selvfølgelig virke.

Men ellers tak, jeg samler slet ikke på point.
Avatar billede -chriz- Nybegynder
19. februar 2004 - 21:37 #10
hmm.. ok.. nogen andre kandidater? ;) Men det virker som det skal, nu!
Avatar billede Slettet bruger
20. februar 2004 - 04:24 #11
Jeg ville bruge et array istedet. Det er meget lettere at arbejde med.

I din form skal du sørge for, at den får navnene:
checkbox[0]
checkbox[1]
osv.

I dit script skal du så bare sige $checkbox=$_POST['checkbox']; og du har nu et array med de valgte, som du kan løbe igennem.
Avatar billede Slettet bruger
20. februar 2004 - 04:28 #12
7th: Du havde ikke bare kopieret fra eriks forslag. Han brugte " og du brugte ', og det gør en meget stor forskel. Prøv denne kodestump:

$a="Hello";
$b="world";

echo '$a $b';

Og bagefter kan du prøve at bruge " i echo-linien, og se forskellen.
Avatar billede roenving Novice
20. februar 2004 - 04:38 #13
>>sandbox 04:24:02

-- medmindre den også skal bruges i nogle javascript-funktioner i klienten, så er problemet bare flyttet til javascript-koden, som har svært ved at håndtere den slags ir-reelle arrays ...
Avatar billede Slettet bruger
20. februar 2004 - 04:45 #14
roenving: Det har du garanteret ret i. Jeg er ikke vant til at skulle tage hensyn til javascript, så den problematik er jeg ikke bekendt med.
Avatar billede roenving Novice
20. februar 2004 - 04:51 #15
Bare et klassisk problem, en stribe html-elementer med samme name vil automatisk blive opfattet som et array af html-komponenter, men typisk opfattet som enkelt-elementer af server-side sprog, som derfor vil stille sig uforstående overfor flere forekomster af det samme ...

-- om de ligefrem overser dem, ved jeg ikke, men hvis man så faciliterer dem med en array-notation som en del af name-attributten, vil javascript (og også html, but who cares, not even html !-) opfatte det som forskellige elementer, som man så skal lave den samme slags konstruktioner for i javascript, som ovenfor er illustreret i php !o]
Avatar billede Slettet bruger
20. februar 2004 - 04:59 #16
Det skal man vel også, hvis de hedder cb0, cb1, cb2 osv, så mit forslag gør det vel ikke sværere at arbejde med i javascript end det var i forvejen? (Medmindre javascript har et problem med [ og ] i navnene.)
Avatar billede roenving Novice
22. februar 2004 - 05:38 #17
>>sandbox

-- har du vel helt ret i !-)
Avatar billede -chriz- Nybegynder
29. februar 2004 - 22:44 #18
siden ingen tilsyneladende vil ha' points, takker jeg for hjælpen og lukker spørgsmålet, for at fortælle at det hele er gået som det skal ;)...
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