23. januar 2009 - 11:38
Der er
7 kommentarer
Formular der sender et array?
Hej Eksperter Jeg er ved at lave en side der udskriver en række spørgsmål i tilfældig rækkefølge. Det gøres således: echo "<input type=radio name=Q$questionNo value=$answerOptionNo"; Der er lidt over 80 forskellige spørgsmål, som hver har op til 4 forskellige svarmuligheder. Det giver en hulens masse variabler der skal videresendes i formen. Q1=1, Q2=2, Q3=1 ... Q50=3. Problemet er når jeg skal modtage disse svar. Det gøres af samme side, og pt. på følgende måde: .. if($_POST['Q58']) { $questionNo = 58; $answerOptionNo = $_POST['Q58']; saveAnswer($testNo, $questionNo, $answerOptionNo); } if($_POST['Q59']) { $questionNo = 59; $answerOptionNo = $_POST['Q59']; saveAnswer($testNo, $questionNo, $answerOptionNo); } .. Der er en if-sætning for hvert spørgsmål! Er der ikke en nemmere og mere kompakt måde at gøre det på? Evt. med arrays eller lignende?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
23. januar 2009 - 11:50
#1
Du kan da lave et loop, der udfører ovenstående kode for hvert spørgsmål? $questions = 60; for($i=1; $i<=$questions; $i++) { $label = sprintf('Q%d', $i); if($_POST[$label]) { saveAnswer($testNo, $i, $_POST[$label]); } }
23. januar 2009 - 11:52
#2
echo "<input type=radio name=Q[$questionNo] value=$answerOptionNo"; php: foreach( $_POST["Q"] as $question) { echo $question."<br>"; }
23. januar 2009 - 11:55
#3
dannim: Din metode ville ikke fungere. At loope over $_POST["Q"] giver intet, da du ikke har nogle felter i formularen defineret med det navn. At få form-data ind som arrays er kun relevant hvis du arbejder med flere værdier for ét feldt, f.eks. checkboxes.
23. januar 2009 - 12:07
#4
Joe da: echo "<input type=radio name=Q[$questionNo] value=$answerOptionNo"; name=Q
23. januar 2009 - 13:35
#5
ah, overså de firkantede klammer :) fint nok så
23. januar 2009 - 15:34
#6
kan du ikke lave en foreach $_post? foreach($_POST as $questionNo => $answerNo){ udfør din kode her };
28. januar 2009 - 12:07
#7
Tak for hjælepen j4k0b det virker! Send et svar så skal du få points.
Vi tilbyder markedets bedste kurser inden for webudvikling