[php]ophogende var uitlezen in een while loop

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • 456
  • Registratie: April 2000
  • Niet online

456

Onze excuses voor het ongemak

Topicstarter
Ik heb een form gepost naar een php script. In dat form wordt er telkens een nieuwe vraag gedefinieerd, nav een eerder opgegeven getal (het aantal vragen voor een enquete):
PHP:
1
2
3
4
5
6
$i=1;
while ($i<=$aantal_vragen){
$uitvoer .= "<p>Vraag $i: <input name='vraag_$i' type='text' size='35'><br>
$i++;
}
etc

Voorbeeldje van een ingave van '2', is dat er
[code]
$vraag_1 = Dit is een test
$vraag_2 = idem dito
[code]

Nu wil ik op de volgende pagina die vragen weer weergeven:

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
$i=1;
while($i<=$aantal_vragen){
$uitvoer .= "
$i. 'hier moet dan in de eerste loop komen te staan: dit is een test'

";
$i++;
}
print $uitvoer;
?>

Tevens heb ik al geprobeerd de 2 strings samen te voegen door
$vraag_$i, of ${vraag_$i} te proberen, niets helpt.


Ik heb hier en op google al gezocht op 'Strings samenvoegen php', maar kom nergens dit specifieke probleem tegen.

[ Voor 23% gewijzigd door 456 op 07-05-2004 18:25 . Reden: te vroeg op submit geklikt :( ]

Een dag geen vertraging, is een dag niet gereisd


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 21:22
Ik snap je vraag niet helemaal, maar vast staat dat je moet leren met arrays om te gaan.

Op die manier kun je $vraag[1] en $vraag[2] enzovoorts maken. www.php.net/array

Waarschijnlijk kun je dan zelf makkelijker zien wat je fout doet

[ Voor 78% gewijzigd door Mithrandir op 07-05-2004 18:57 ]

Verbouwing


Acties:
  • 0 Henk 'm!

  • Billie
  • Registratie: Januari 2003
  • Laatst online: 16-09 20:27
Kan je dan niet beter for gebruiken? :?

PHP:
1
2
3
4
5
6
7
<?

for($i=1;$i < $_POST [ 'blaat' ];$i++){
    print $vraag;
}

?>


edit:
On second thought... volgens mij snap ik je vraag niet 100%. :X Kan je het niet eens wat duidelijker uitleggen? :)

[ Voor 40% gewijzigd door Billie op 07-05-2004 22:17 ]


Acties:
  • 0 Henk 'm!

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 16-09 16:34

Deddiekoel

Gadget nerd

Probeer een commando te bakken uit meerdere strings. Die kun je dan draaien met de eval() functie.

Daarnaast kun je ook door de $HTTP_POST_VARS (of hoe die nu mag heten) heen lopen. Dat is een array waarvan de elementen benoemd zijn naar de namen van verstuurde gegevens.

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
reset($_POST);
$i=1;
while (isset($_POST["vraag_$i"))
{
    //doe iets met $_POST["vraag_$i"];
    $i++;
}


zoiets mss?
en het is trouwens beter om eval zo veel mogelijk te vermijden ivm security... :)

Acties:
  • 0 Henk 'm!

Verwijderd

Form genereren met een aantal invoer velden
PHP:
1
2
3
4
5
6
7
$i=0;
$nr=1;
while ( $i <= $aantal_vragen ){
$uitvoer .= "<p>Vraag ". $nr .": <input name='vraag[" . $i . "]' type='text' size='35'><br>";
$i++;
$nr++;
}

Form uitlezen
PHP:
1
2
3
4
5
6
7
8
9
<?
$uitvoer = "";

while( list($k,$v) = each($_POST['vraag']) ){
$uitvoer .= $v;
}

echo $uitvoer;
?>

Je kunt dus in de invoervelden van een form een array gebruiken :) Deze uhm Html array kun je in php weer op de meest standaard manier bevragen op zijn inhoud.

[ Voor 161% gewijzigd door Verwijderd op 08-05-2004 00:09 ]


Acties:
  • 0 Henk 'm!

  • 456
  • Registratie: April 2000
  • Niet online

456

Onze excuses voor het ongemak

Topicstarter
Het is al opgelost:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
$i = 1;

while ($i<=$aantal_vragen) {

$vraag = $_POST["vraag_$i"];
$uitvoer .= "
$i. $vraag<br>
";

$i++;
}

print $uitvoer;
?>

Waar vraag_x (waar x=1,2,3,..,x) gepost wordt van een form.
Hartelijk dank voor de inbreng!

Een dag geen vertraging, is een dag niet gereisd


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Waarom geen for loop :?

[ Voor 3% gewijzigd door PrisonerOfPain op 08-05-2004 09:22 ]


Acties:
  • 0 Henk 'm!

  • 456
  • Registratie: April 2000
  • Niet online

456

Onze excuses voor het ongemak

Topicstarter
Voor wat?
Ik kan niet
PHP:
1
foreach (HTTP_POST_VARS){}

werken, immers, er zitten meer post vars in de array dan alleen die ene 'vraag_x' die ik nodig heb. Later heb ik die andere variabelen pas nodig.

Een dag geen vertraging, is een dag niet gereisd


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

PHP:
1
2
3
4
5
6
7
8
9
$uitvoer = array();
$i = 1;
foreach($_POST as $key => $var) {
    if(substr($key,0,5) == 'vraag') {
        $uitvoer[] = $i.'. '.$var;
        $i++;
    }
}
echo implode('<br />', $uitvoer);
En toch vind ik een foreach wat flexibeler :)

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
als je ooit variabele variable-names nodig hebt:

code:
1
2
3
4
5
for ($i=0; $i < 5; $i++)
{
  $varname = $blaat.'_'.$i;
  echo $$varname;
}


Dit echo'ed $blaat_0 t/m $blaat_4

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

PHP:
1
2
3
4
5
6
7
8
9
10
11
$uitvoer = array();
$vars = array();
$i = 1;
foreach($_POST as $key => $var) {
    if(substr($key,0,5) == 'vraag') {
        $uitvoer[] = $i.'. '.$var;
        $i++;
        $vars[] = $key;
    }
}
echo implode('<br />', $uitvoer);

Kun je ook in je foreach-loop meenemen (namen van variabelen zijn daarin $key, de inhoud ervan staat in $var) :)

Acties:
  • 0 Henk 'm!

Verwijderd

Is het niet beter om in het formulier een array te gebruiken zoals in mijn post hierboven. Deze array is namelijk gemaakt voor jou probleem. Jou oplossing is wel goed maar je weet van tevoren niet hoeveel velden er zijn ingevuld. Ook is het makkelijker om quotes te escapen in een array.

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Heb je het tegen mij? :) Ik geef alleen maar een idee voor een oplossing die TS dan verder naar wens kan aanpassen. Het idee om alle vars die gePOST worden in een array te gooien lijkt mij gewoon handiger en flexibeler. Ik weet verder helemaal niet wat TS er precies mee wilt.

Maar een oplossing met een array reeds in de form is natuurlijk ook handig :) Niet ingevulde velden worden volgens mij ook niet gePOST.

Acties:
  • 0 Henk 'm!

Verwijderd

Nee ik heb het tegen die meneer van de NS :)

Als je een array gebruikt in je formulier dan neemt hij de velden die je niet invuld ook mee:
code:
1
2
3
Vraag 1: <input name='vraag[0]' type='text' size='35'><br>
Vraag 2: <input name='vraag[1]' type='text' size='35'><br>
Vraag 3: <input name='vraag[2]' type='text' size='35'><br>


Als je nu vraag 2 negeerd dan is dus vraag[1] == null

je kunt nu presies controleren welke vragen wel of niet zijn ingevuld in javascript of php.

p.s.
snap niet waarom je dit niet gebruik het is er voor gemaakt :O

[ Voor 176% gewijzigd door Verwijderd op 08-05-2004 11:51 ]

Pagina: 1