[PHP] probleempje in FOR-loop

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Reignman
  • Registratie: Februari 2001
  • Laatst online: 26-11-2021
Ik heb een table in een MySQL dbase die ik wil vullen dmv de variabelen die ik met een POST krijg uit een form. Het gaat om de antwoorden van een 80-tal vragen mbv. radiobuttons.

PHP:
1
2
3
4
5
6
printf("%s<br><br>", $radiobutton1);

for ($i = 1; $i <= $aantalvragen; $i++) {
    $sql = "INSERT INTO antwoordNS (respID, vraagID, antwoord) VALUES ('$respID','$i','$radiobuttonXX')";       
    $result = mysql_query($sql) or die( "Antwoord kon niet worden toegevoegd aan database..." );            
}


$radiobutton1 (dus $radiobutton met een cijfer erachter) geeft gewoon de goede waarde.

Maar het gaat om de $radiobutton variabele in de for-loop.
Wat moet ik daar op de plaats van $radiobuttonXX zetten (in de SQL statement)??

Ik heb het volgende geprobeerd wat niet werkte.

$temp = "$radiobutton" . $i;
('$respID','$i','$temp')";

en

('$respID','$i','$radiobutton$i')";

[ Voor 14% gewijzigd door Reignman op 31-03-2005 15:34 ]


Acties:
  • 0 Henk 'm!

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 16:43

TwoR

Gekleurde stippen

je zei dat je het met POST verstuurde dus moet het het ook weer met POST ophalen zal je zoiets krijgen: $_POST['radiobutton'.$i]

[ Voor 73% gewijzigd door TwoR op 31-03-2005 15:36 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Wat is dat toch met die nummers achteraan variabelenamen willen plakken?

Met trucjes ala eval() zal je denk ik een heel eind kunnen komen, echter is het gebruik van een array veel makkelijker.
Geef als naam van je radiobuttons eens radiobutton[] mee, i.p.v. er een nummer in achter te plakken, of zet het nummer al tussen de blokhaken. Op deze manier maakt PHP er een array van en kan je die array doorlopen.

Edit: en wat TwoR zegt natuurlijk, alleen zul je dan moeten checken of die variabelen wel bestaan.

[ Voor 12% gewijzigd door Creepy op 31-03-2005 15:41 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:15
Je kunt ook altijd nog iets doen als ${'foo'.$i}, maar dat is bijna net zo ranzig als eval gebruiken. De goede oplossing is gewoon die waarden in een array te stoppen.

Acties:
  • 0 Henk 'm!

  • Reignman
  • Registratie: Februari 2001
  • Laatst online: 26-11-2021
$temp = $_POST['radiobutton'.$i];

en dan in de FOR-loop:

('$respID','$i','$temp')";

dan werkt het... super..!!! thnx..

Acties:
  • 0 Henk 'm!

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 16:43

TwoR

Gekleurde stippen

Reignman schreef op donderdag 31 maart 2005 @ 15:43:
$temp = $_POST['radiobutton'.$i];
en dan in de FOR-loop:
('$respID','$i','$temp')";
dan werkt het... super..!!! thnx..
Ja het werkt inderdaad, maar zoals hiervoor al aangegeven is het niet echt een nette methode en kan je er beter een array van maken.

En ik weet niet zeker hoe het met radiobuttons zit maar als er 1 niet ingevuld is bestaat die volgens mij dus niet in je $_POST array en zal je een foutmelding krijgen. Dus je zal eerst nog met bijvoorbeeld isset checken of je variabele wel bestaat.

[ Voor 37% gewijzigd door TwoR op 31-03-2005 15:46 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:15
Er is wel iets over de PHP FAQ over te vinden trouwens:
How do I create arrays in a HTML <form>?

De manier waarop PHP POST variabelen in arrays kan stoppen is op zich best elegant; het is jammer dat ze dat niet duidelijker documenteren. Zelfs ik moest me er een ongeluk naar zoeken terwijl ik al wist dat het kan.

[ Voor 27% gewijzigd door Soultaker op 31-03-2005 15:48 ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Het staat ook in de Programming & Webscripting faq overigens..
Pagina: 1