[php] foreach met forms

Pagina: 1
Acties:

  • pdehoop
  • Registratie: September 1999
  • Laatst online: 04-06-2024
ik heb een formuliertje met onder andere een aantal van de volgende checkboxen:
code:
1
<input type="checkbox" name="t[686386]">


Hierbij is wat bij naam staat tussen de haken steeds verschillend.

Nu heb ik in de pagina waar dit formuliertje verwerkt wordt een foreach functie:

PHP:
1
2
3
foreach ($t as $id => $val) {
etc.......
}


Voorheen werkte dit, maar aangezien de nieuwe php anders met variabelen omgaat als ze worden verstuurt werkt het niet.

Nu heb ik volgende geprobeerd:

PHP:
1
2
3
foreach ($_post['t'] as $id => $val) {
etc.......
}

&#039 moet een ' voorstellen

Dit werkt helaas ook niet.

Ik heb het ook al geprobeerd met $id ook als _POST te doen, maar dat werkt ook niet. Ik krijg steeds maar:
Invalid argument supplied for foreach()

Wat moet ik veranderen?

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Ik loop zelf op deze manier door mijn 'form-array':

code:
1
2
3
4
while (list ($key, $val) = each ($_POST['scode']))
  {
     [...]
  }

LET OP: $_POST moet met hoofdletters!

De formelementen worden op deze manier gedefinieerd:
code:
1
<INPUT TYPE="text" NAME="scode[$counter]" VALUE="" SIZE="40">

Waarbij $counter gewoon een oplopend getalletje is. Dit zou natuurlijk ook met checkboxen moeten werken.

[ Voor 0% gewijzigd door Rashann op 26-08-2002 09:27 . Reden: code verwijdert ]

If nothing is written below, I was the last to reply...


  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
en je moet natuurlijk wel gebruik maken van post niet toevallig van _GET??

Verwijderd

wat je ook kan doen is van elke $_POST eerst weer de normale variabelen maken
PHP:
1
2
3
4
foreach($_POST as $key => $value)
{
       $$key = $value;
}

wordt het volgens mij dan.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Doe daniel_hoenderdos' oplossing maar niet. Deze zorgt ervoor dat je de veiligheids voordelen van de $_* vars weer geheel ongedaan maakt. Je was op de juiste weg, maar zoals RainManX ook al zei is $_POST hoofdletter gevoelig. Waneer je er dus POST van maakt zal het wel gaan werken.

Waar je trouwens wel op moet letten is dat je geen array terug krijgt waneer niks wordt aangevinkt. Zorg eerst dat je controleerd of er uberhaupt wel een array is, want ik neem aan dat je je gebruikers niet wilt opzadelen met een error melding waneer er niks is aangevinkt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • pdehoop
  • Registratie: September 1999
  • Laatst online: 04-06-2024
tss....
Het was in de tweede inderdaad de hoofdletters...
Ik was zeker moe ofzo:-)

Maarreh, je hebt inderdaad gelijk over die error melding als er niks is aangevinkt janoz.
Dit controleren doe ik met

PHP:
1
2
3
if ($_POST['t'] != "") {
bla, bla, bla
}


of:

PHP:
1
2
3
if (!empty($_POST['t'])) {
bla,bla,bla
}


Wat is beter/handiger?

Verwijderd

PHP:
1
2
3
4
if (isarray($_POST['t']) && !empty($_POST['t'])) 
{
bla, bla, bla
}

is handiger (denk ik!!!!!!) :)
Pagina: 1