[PHP]-récupérer la valeur de variables

Résolu/Fermé
pontarose - 27 août 2007 à 15:18
 pontarose - 28 août 2007 à 10:00
Bonjour,
J'effectue un formulaire sur plusieurs pages.Une fois que l'on a rempli la premiere page, on clique sur submit et on passe à la page 2. Je voudrais récupérer les infos de toutes les pages une fois que je clique sur save de la page 3.


la structure de ma page 2 dépend du nombre d'élément indiqué dans ma page1. A l'aide d'une boucle for j'affiche ses résultats.
Mon problème survient en page 3.
je suis bloqué car je n'arrive pas a récupérer ce nombre indiqué en page.
Dans ma page 3 ma variable enfant_number est VIDE!!!!et du coup ma boucle ne fonctionne pas.

J'ai lu qu'il fallait que j'utilise la fonction hidden pour passer des réponses de pages en pages mais je n'y arrive pas.

Quelqu'un peut-il m'aider?



page1.html :
<form name="form" method="post" action="page2.php">

Complex_name :
<input type="text" name="complex_name" value=""><br>
Subunit_number:
<input type="text" name="subunit_number" value="" ><br><br><br>

<input type="submit" value="submit">


page2.php
<html>

<?php
//recup des valeurs postees
$complex_name = $_POST['famille_name'];
$subunit_number = $_POST['enfant_number'];
?>

<form name="formulaire" method="post" action="tab_essai.php">

<?php
//vérifier que le champ n'est pas vide
//affichage que si les 2 champs sont remplis

//print ("<br><br>enfant_number<br><br>");

if (empty ($famille_name) OR empty ($enfant_number))
{
print ("Please enter a <b>famille_name</b> and a <b>enfant_number</b>!");
exit();
}
else
{
print ("$famille_name famille<br> $enfant_number
enfant_number<br><br><br> ");
}
print"<b>Please enter informations about each enfant of the famille</b>";

for ($i=1; $i<=$enfant_number $i++)
{
// creation de chaque bloc de sous unité

print ("<hr>");
print("<u>".$i."enfants </u><br><br>");
print("name_enfant :<input type='text' name=name_enfant''.$i value=''><br><br>");
print("age_enfant :<input type='text' name='age_enfant'.$i value=''><br><br>");

}
?>

page3.php

<html>
<?php
//recup des valeurs postees
$famille_name = $_POST['famille_name'];
$enfant_number = $_POST['enfant_number'];

print"le nbre d'enfant est de : $enfant_number<br>";
?>

<form name="formulaire" method="post" action="suite.php">

<?php

for ($i=1; $i<=$enfant_number; $i++)
{
//recup des valeurs postees, pour chaque champ indice $i, dans la page page2.php

${'name_enfant'.$i} = $_POST["name_enfant$i"];
${'age_enfant'.$i} = $_POST["age_enfant$i"];


if (${'name_enfant'.$i} == "" || ${'age_enfant'.$i} == "" )

{
print("Please, fill all the fields !<br><br>");
exit();
}
else
{
print("<br>". ${'name_enfant'.$i}."<br>". ${'age_enfant'.$i}."<br>");
}
}
?>

<input name="save" type="submit" value="save">
</form>

</html>














for ($i=1; $i<=$subunit_number; $i++)
{
// creation de chaque bloc de sous unité
// .pour indiquer ou s'arrête la variable
print ("<hr>");
print("<u>".$i."enfant </u><br><br>");
print("name_enfant' :<input type='text' name='name_enfant'.$i value=''><br><br>");
print(age_enfant ':<input type='text' name=''.$i value=''age_enfant><br><br>");

}
?>


<input name="save" type="submit" value="save">
</form>

</html>

2 réponses

ton code contient beaucoups d'erreur , en voila quelque unes corrige les et essai de tester si ça marche:

pour commencer a la fin ta page2.php change ta boucle for :

for ($i=1; $i<=$enfant_number $i++)
{
// creation de chaque bloc de sous unité

print ("<hr>");
print("<u>".$i."enfants </u><br><br>");
print("name_enfant :<input type='text' name=name_enfant''.$i value=''><br><br>");
print("age_enfant :<input type='text' name='age_enfant'.$i value=''><br><br>");

}


par celle ci:

for ($i=1; $i<=$subunit_number; $i++)
{
// creation de chaque bloc de sous unité

print ("<hr>");
print("<u>"."enfant n°:".$i."</u><br><br>");
print("name_enfant :<input type='text' name=name_enfant$i ><br><br>");


print("age_enfant :<input type='text' name=age_enfant$i ><br><br>");


}
?>


et rajoute ces lignes:


<input type=hidden name="famille_name" value=<? echo $complex_name; ?>>
<input type=hidden name="enfant_number" value=<? echo $subunit_number; ?>>
<input type=submit value="valider">
</form>





et puis on passe vers la page3.php: remplace ton code php suivant:


<?php

for ($i=1; $i<=$enfant_number; $i++)
{
//recup des valeurs postees, pour chaque champ indice $i, dans la page page2.php

${'name_enfant'.$i} = $_POST["name_enfant$i"];
${'age_enfant'.$i} = $_POST["age_enfant$i"];


if (${'name_enfant'.$i} == "" || ${'age_enfant'.$i} == "" )

{
print("Please, fill all the fields !<br><br>");
exit();
}
else
{
print("<br>". ${'name_enfant'.$i}."<br>". ${'age_enfant'.$i}."<br>");
}
}
?>



par celui ci:



<?php

for ($i=1; $i<=$enfant_number; $i++)
{
//recup des valeurs postees, pour chaque champ indice $i, dans la page page2.php
$x="name_enfant".$i;
$y="age_enfant".$i;





if ($$x== "" || $$y == "" )

{
print("Please, fill all the fields !<br><br>");
exit();
}
else
{
print("<br>". $$x."<br>". $$y."<br>");
}
}
?>








il y a probablement d'autre erreurs mais commence par corriger celles ci et rgarde si ça marche........


Remarque: j'ai fais d'autres modification sur ton code et ça marche parfaitement chez moi mais moi je travail avec php4 (j'ai pas besoin de récupérer les variables elles passent automatiquement sans l'instruction $variable=$_Post['$variable'];) et toi apparament tu travaillle avec php5 ......si tu veux je t'envoit le tout et tu fais tes modifications........
0
Merci beaucoup. Il fallait que je mette mes variables en champ caché hidden
0