[PHP] $HTTP_POST_VARS met variabele key

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Hoi,

het zal misschien simpel op te lossen zijn, maar ik kom er niet meer uit.

Ik heb een form met o.a. de volgende velden:
code:
1
2
3
4
<input type="text" size="10" name="naam1">
<input type="text" size="10" name="naam2">
<input type="text" size="10" name="naam3">
etc.


Nu wil ik deze uitlezen vanuit $HTTP_POST_VARS d.m.v. een for-loopje:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$output = "alles wat ervoor gebeurt";

for($counter=1;$counter<=3;$counter++)
{
    $output .= get_var($counter);
}

function get_var($number)
{
    $val = $HTTP_POST_VARS["naam" . $strval($number)];
    $result = "Naam: " . $val . "<br>";
    return $result;
}


Helaas werkt bovenstaande niet.
Gebruik ik $HTTP_POST_VARS["naam1"] , dan werkt het wel, dus de variabele "naam1" staat in de $HTTP_POST_VARS...

PHP:
1
echo "naam" . $strval($number);
print gewoon "naam1" uit.

Wat doe ik fout en hoe kan ik op deze manier een variabele key meegeven om de waarde van de key uit de $HTTP_POST_VARS te halen?
Heb al vanalles geprobeerd, maar ik kom er maar niet uit...

Greetz... RudeDog

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

probeer $_POST ipv $HTTP_POST_VARS

lees ook de faq's eens :)

Stop uploading passwords to Github!


  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 15:48
idd

$var1 = $_POST['naam1' ];
$var2 = $_POST['naam2' ];
$var3 = $_POST['naam3' ];

Strava | AP | IP | AW


  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 17:11

TheDane

1.618

$val = $HTTP_POST_VARS["naam".strval($number)];

should do it ...

en bovenstaande 2 reacties zijn leuk, maar geen antwoord op de vraag, en wellicht heeft TS een oude php versie die nog WEL $HTTP_POST_VARS gebruikt/ondersteunt .. aangezien $HTTP_POST_VARS["naam1"] _wel_ een waarde bevat ..


wdh is trouwens $strval($number) ??? typo ? dan werkt 't sowieso natuurlijk niet ;)
en ik snap niet helemaal waarom je strval() uberhaupt gebruikt ..

[ Voor 47% gewijzigd door TheDane op 04-09-2003 08:48 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

Als je $HTTP_POST_VARS in een functie gebruikt (omdat je bv een oude versie PHP hebt) moet je wel aangeven dat 'ie global is. $_POST is superglobal, en daarbij hoeft dat dus niet:
PHP:
1
2
3
4
5
6
7
function get_var($number) 
{ 
    global $HTTP_POST_VARS;
    $val = $HTTP_POST_VARS["naam" . strval($number)]; 
    $result = "Naam: " . $val . "<br>"; 
    return $result; 
}

Intentionally left blank


  • Obliterator
  • Registratie: November 2000
  • Laatst online: 08-07 15:12
Het probleem zit waarschijnlijk niet in de post-vars, maar in de index.
Wat gebeurd er als je eerst de naam-nummer concatenatie in een variabele zet,
en met die variabele de post-vars indexeerd?

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 08:29

Tjark

DON'T PANIC

wat ik zou doen:
code:
1
2
3
4
<input type="text" size="10" name="naam[]">
<input type="text" size="10" name="naam[]">
<input type="text" size="10" name="naam[]">
etc.

dan heb je alle namen in de array naam staan

*insert signature here


  • Evilbee
  • Registratie: November 2002
  • Laatst online: 17:40
In je voorbeeld gebruik je de functie get_var, maar deze definieer je pas daarna. Ik denk dat je dat ff moet omdraaien:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
function get_var($number) 
{ 
    $val = $HTTP_POST_VARS["naam" . $strval($number)]; 
    $result = "Naam: " . $val . "<br>"; 
    return $result; 
}

$output = "alles wat ervoor gebeurt"; 

for($counter=1;$counter<=3;$counter++) 
{ 
    $output .= get_var($counter); 
}

LinkedIn - Collega worden?


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

TjarkVerhoeven schreef op 04 September 2003 @ 09:00:
wat ik zou doen:
code:
1
2
3
4
<input type="text" size="10" name="naam[]">
<input type="text" size="10" name="naam[]">
<input type="text" size="10" name="naam[]">
etc.

dan heb je alle namen in de array naam staan
yup en indien gewenst kan je het zelfs zo doen:

code:
1
2
3
4
<input type="text" size="10" name="naam[1]">
<input type="text" size="10" name="naam[2]">
<input type="text" size="10" name="naam[3]">
etc.


en uitlezen gewoon met:
PHP:
1
$naam = $_POST['naam'];

heb je gewoon die array :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
de $ voor strval was idd een typo. Ik had het er neergezet omdat het niet werkte en ik er voor de zekerheid maar een string van het getal wilde maken, maar het blijkt idd niet nodig te zijn.

De oplossing zat 'em in $_POST ipv $HTTP_POST_VARS . Ik lees het nu op de volgende manier uit:

PHP:
1
2
3
4
function get_val($nr)
{
    $val = $_POST["naam$nr"];
}


En dat werkt :)
Thnx iedereen voor de reacties!
Pagina: 1