Formulaire/ affichage x fois une page
pontarose
Messages postés
151
Statut
Membre
-
pontarose Messages postés 151 Statut Membre -
pontarose Messages postés 151 Statut Membre -
Bonjour,
Je suis dans le cas d'un formulaire et j'aimerais afficher une même page x fois en fonction du nombre d'élement entré par l'utilisateur.
J'ai une page 1 dans laquelle l'utilisateur entre le nombre d'élement (par exemple 3)
En cliquant sur le bouton OK, il arrive sur une page 2 (pour chaque élement il doit remplir 2 champs, mais j'aimerais qu'il puisse le faire en cliquant sur un bouton next en ayant ainsi une page pour chaque élement)
pour l'élément 1, il doit remplir les 2 champs.
En cliquant sur next il remplit les 2 champs pour l'élément 2
En cliquant sur next il remplit les 2 champs pour l'élément 3
Pourriz vous m'indiquer comment faire cela?
Merci
Je suis dans le cas d'un formulaire et j'aimerais afficher une même page x fois en fonction du nombre d'élement entré par l'utilisateur.
J'ai une page 1 dans laquelle l'utilisateur entre le nombre d'élement (par exemple 3)
En cliquant sur le bouton OK, il arrive sur une page 2 (pour chaque élement il doit remplir 2 champs, mais j'aimerais qu'il puisse le faire en cliquant sur un bouton next en ayant ainsi une page pour chaque élement)
pour l'élément 1, il doit remplir les 2 champs.
En cliquant sur next il remplit les 2 champs pour l'élément 2
En cliquant sur next il remplit les 2 champs pour l'élément 3
Pourriz vous m'indiquer comment faire cela?
Merci
A voir également:
- Formulaire/ affichage x fois une page
- Whatsapp formulaire opposition - Guide
- Site x - Guide
- Sites X : Pornhub, YouPorn et Redtube sont de nouveau accessibles en France - Guide
- Supprimer une page word - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
9 réponses
Bonjour,
Voila une petit approche :
Des que tu arrives $nb c'est a dire le nombre d'élément tu fais une redirection.
Voila une petit approche :
<?php
// récupération en post du nombre d'élément
$nb = $_POST['nbElement']; // nbElment correspond au name du champe input
$page = empty($_GET['page']) ? 1 : $_GET['page'];
?>
<form action="test.php?page=<?php echo ($page + 1)?>" method="post">
<p>
<label>Champ 1</label>
<input type="text" name="champ1" />
</p>
<p>
<label>Champ 2</label>
<input type="text" name="champ2" />
</p>
<p><input type="submit" value="Valider" /><p>
</form>
Des que tu arrives $nb c'est a dire le nombre d'élément tu fais une redirection.
Je pensais que tu voulais juste réafficher le même formualaire non?
Pour afficher sur ta page :
echo $_POST['champ1'];
echo $_POST['champ2'];
Pour afficher sur ta page :
echo $_POST['champ1'];
echo $_POST['champ2'];
Bonjour,
Voici une autre solution, mais peut etre que j'ai mal compris:
1. l'utilisateur entre le nombre d'enregistrements.
2. génération du formulaire avec un champs caché contenant le nombre entré par le user: <input type="hidden" name="nbr" value="<?php echo $_GET['nbr'] ?>">
3. Tu nommes chaques champs de la sorte: chp1_$i (avec i la valeur en cours de la boucle que tu fais aller jusqu'à $nbr).
4. l'utilisateur obtiens un formulaire avec $nbr lignes à remplir. Il clic sur envoyer.
4. Dans ta page de traitement, tu boucles jusqu'au nombre du champs hidden.
Voili voilou. Pour le code à toi de trouver !
N'hésites pas si tu as d'autres questions.
Voici une autre solution, mais peut etre que j'ai mal compris:
1. l'utilisateur entre le nombre d'enregistrements.
2. génération du formulaire avec un champs caché contenant le nombre entré par le user: <input type="hidden" name="nbr" value="<?php echo $_GET['nbr'] ?>">
3. Tu nommes chaques champs de la sorte: chp1_$i (avec i la valeur en cours de la boucle que tu fais aller jusqu'à $nbr).
4. l'utilisateur obtiens un formulaire avec $nbr lignes à remplir. Il clic sur envoyer.
4. Dans ta page de traitement, tu boucles jusqu'au nombre du champs hidden.
Voili voilou. Pour le code à toi de trouver !
N'hésites pas si tu as d'autres questions.
Pas encore je suis en train d'y remedier...
Je me suis sans doute mal exprimé
Je part d'un exemple ou nb_element=2
Page 1
print("Nombre d'element: ");
print("<input type=text name='nb_element' size=1></text><br>");
page2
Je vérifie que la varaible nb_element existe
je vérifie que ma variable nb_element n'est pas vide
pour chaque élement de ma variable je dois remplir le champ 1 et champ 2 (mais je veux que pour chaque élement apparaisse une page et qu'en cliquant sur next cela m'affiche l'element suivant avec les champ 1 et 2 a remplir)
Actuellemnt avec mon script je remplis le champ 1 et 2 de l'élement 1 puis je clique sur next et alors vue que je vérifie que ma variable nb_element existe et qu'elle est pas vide cela ne me permet pas d'afficher pour l'élement 2 le champ 1 et 2.
<?php
// récupération en post du nombre d'élément
$nb = $_POST['nb_element']; // nbElment correspond au name du champe input
$page = empty($_GET['page']) ? 1 : $_GET['page'];
?>
<?php
//faut que les variables existent
if(isset($_POST['nb_element']))
{
$nb_element = $_POST['nb_element'];
//faut que tous les champs soient remplis
if(!empty ($nb_element))
{
?>
<form action="test.php?page=<?php echo ($page + 1)?>" method="post">
<p>
<label>Champ 1</label>
<input type="text" name="champ1" />
</p>
<p>
<label>Champ 2</label>
<input type="text" name="champ2" />
</p>
<p><input type="submit" value="next" /><p>
</form>
<?php
}
}
?>
Je me suis sans doute mal exprimé
Je part d'un exemple ou nb_element=2
Page 1
print("Nombre d'element: ");
print("<input type=text name='nb_element' size=1></text><br>");
page2
Je vérifie que la varaible nb_element existe
je vérifie que ma variable nb_element n'est pas vide
pour chaque élement de ma variable je dois remplir le champ 1 et champ 2 (mais je veux que pour chaque élement apparaisse une page et qu'en cliquant sur next cela m'affiche l'element suivant avec les champ 1 et 2 a remplir)
Actuellemnt avec mon script je remplis le champ 1 et 2 de l'élement 1 puis je clique sur next et alors vue que je vérifie que ma variable nb_element existe et qu'elle est pas vide cela ne me permet pas d'afficher pour l'élement 2 le champ 1 et 2.
<?php
// récupération en post du nombre d'élément
$nb = $_POST['nb_element']; // nbElment correspond au name du champe input
$page = empty($_GET['page']) ? 1 : $_GET['page'];
?>
<?php
//faut que les variables existent
if(isset($_POST['nb_element']))
{
$nb_element = $_POST['nb_element'];
//faut que tous les champs soient remplis
if(!empty ($nb_element))
{
?>
<form action="test.php?page=<?php echo ($page + 1)?>" method="post">
<p>
<label>Champ 1</label>
<input type="text" name="champ1" />
</p>
<p>
<label>Champ 2</label>
<input type="text" name="champ2" />
</p>
<p><input type="submit" value="next" /><p>
</form>
<?php
}
}
?>
Alors:
switch($_POST['pg']) {
default:
$code = '<form action="page.php" method="post">';
$code .= '<input type=text name="nb_element" size=1></text>';
$code .= '<input type="hidden" name="pg" value="fill">';
$code .= '<input type="submit" value="next" /></form>';
echo $code;
break;
case 'fill':
if (isset($_POST['nb_element'])){
$nb_element = $_POST['nb_element'];
} else {
$nb_element = '';
}
if (!empty ($nb_element))
{
$code = '<form action="page.php" method="post">';
$compteur = 0;
while ($compteur < $nb_element) {
$code .= '<label>Champ 1</label>';
$code .= '<input type="text" name="champ1_'.$compteur.'" /><br>';
$code .= '<label>Champ 2</label> ';
$code .= '<input type="text" name="champ2_'.$compteur.'" /><br><br>';
$code .= '<input type="hidden" name="nb_element" value="'.$nb_element.'">';
$code .= '<input type="hidden" name="pg" value="filled">';
$compteur++;
}
$code .= '<input type="submit" value="next"></form>';
echo $code;
} else {
echo 'Merci de remplir le champs';
}
break;
case 'filled':
$compteur = 0;
$code = '';
while ($compteur < $_POST['nb_element']){
$code .= $compteur.' - Champs 1:'.$_POST['champ1_'.$compteur].' Champs 2: '.$_POST['champ2_'.$compteur].'<br>';
$compteur++;
}
echo $code;
break;
}
Je sais on aurait pu utiliser un for.. mais j'aime le while :p pas vous ?
Whilesspresso... what else ?
switch($_POST['pg']) {
default:
$code = '<form action="page.php" method="post">';
$code .= '<input type=text name="nb_element" size=1></text>';
$code .= '<input type="hidden" name="pg" value="fill">';
$code .= '<input type="submit" value="next" /></form>';
echo $code;
break;
case 'fill':
if (isset($_POST['nb_element'])){
$nb_element = $_POST['nb_element'];
} else {
$nb_element = '';
}
if (!empty ($nb_element))
{
$code = '<form action="page.php" method="post">';
$compteur = 0;
while ($compteur < $nb_element) {
$code .= '<label>Champ 1</label>';
$code .= '<input type="text" name="champ1_'.$compteur.'" /><br>';
$code .= '<label>Champ 2</label> ';
$code .= '<input type="text" name="champ2_'.$compteur.'" /><br><br>';
$code .= '<input type="hidden" name="nb_element" value="'.$nb_element.'">';
$code .= '<input type="hidden" name="pg" value="filled">';
$compteur++;
}
$code .= '<input type="submit" value="next"></form>';
echo $code;
} else {
echo 'Merci de remplir le champs';
}
break;
case 'filled':
$compteur = 0;
$code = '';
while ($compteur < $_POST['nb_element']){
$code .= $compteur.' - Champs 1:'.$_POST['champ1_'.$compteur].' Champs 2: '.$_POST['champ2_'.$compteur].'<br>';
$compteur++;
}
echo $code;
break;
}
Je sais on aurait pu utiliser un for.. mais j'aime le while :p pas vous ?
Whilesspresso... what else ?
Salut,
Je crois que je m'exprime vraiment mal; (en fait je ne veux pas remplir sur une même page les champ 1 et 2 de chaque élement mais je veux que cela se fasse sur des pages différentes, autant de page que j'ai d'élement)
page 1
entrez le nombre d'élement: 2
page 2
ELEMENT A
Champ 1:
Champ 2:
next
//je remplis le champ 1 et 2 puis je clique sur next
ELEMENT B
Champ 1:
Champ 2:
OK
Je crois que je m'exprime vraiment mal; (en fait je ne veux pas remplir sur une même page les champ 1 et 2 de chaque élement mais je veux que cela se fasse sur des pages différentes, autant de page que j'ai d'élement)
page 1
entrez le nombre d'élement: 2
page 2
ELEMENT A
Champ 1:
Champ 2:
next
//je remplis le champ 1 et 2 puis je clique sur next
ELEMENT B
Champ 1:
Champ 2:
OK
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
la solution pour toi est de mettre en champs caché nbElement
<input type =hidden value =<?php echo $_POST[(nb['element]?>
<input type =hidden value =<?php echo $_POST[(nb['element]?>
Voici donc ce que tu veux :) tu copies et colles et c'est fini:
<?php
session_start();
if (isset($_POST['pg'])){
$pg = $_POST['pg'];
} else {
$pg = 'init';
}
switch($pg) {
case 'init':
session_unregister('elements');
$code = '<form action="page.php" method="post">';
$code .= '<input type=text name="nb_element" size=1></text>';
$code .= '<input type="hidden" name="pg" value="ask">';
$code .= '<input type="submit" value="next" /></form>';
echo $code;
break;
case 'ask':
if (!isset($_POST['actu_element'])){
$actu_element = 0;
} else {
$actu_element = $_POST['actu_element'];
$_SESSION['elements'][$actu_element][1] = $_POST['champ1'];
$_SESSION['elements'][$actu_element][2] = $_POST['champ2'];
$actu_element++;
}
$nb_element = $_POST['nb_element'];
if ($actu_element == $nb_element) {
$value_pg = 'filled';
} else {
$value_pg = 'ask';
}
$code = 'Nombre: '.$actu_element.'<br>';
$code .= '<form action="page.php" method="post">';
$code .= '<label>Champ 1</label>';
$code .= '<input type="text" name="champ1" /><br>';
$code .= '<label>Champ 2</label> ';
$code .= '<input type="text" name="champ2" /><br><br>';
$code .= '<input type="hidden" name="actu_element" value="'.$actu_element.'">';
$code .= '<input type="hidden" name="nb_element" value="'.$nb_element.'">';
$code .= '<input type="hidden" name="pg" value="'.$value_pg.'">';
$code .= '<input type="submit" value="next"></form>';
echo $code;
break;
case 'filled':
$compteur = 0;
$code = '';
$nbr = sizeof($_SESSION['elements']);
while ($compteur < $nbr){
$code .= $compteur.' - Champs 1:'.$_SESSION['elements'][$compteur][1].' Champs 2: '.$_SESSION['elements'][$compteur][2].'<br>';
$compteur++;
}
echo $code;
echo '<br> <a href="page.php">Retour</a>';
break;
}
?>
Explication:
Le tableau des réponses est stocké dans une variable de session 'elements'.
<?php
session_start();
if (isset($_POST['pg'])){
$pg = $_POST['pg'];
} else {
$pg = 'init';
}
switch($pg) {
case 'init':
session_unregister('elements');
$code = '<form action="page.php" method="post">';
$code .= '<input type=text name="nb_element" size=1></text>';
$code .= '<input type="hidden" name="pg" value="ask">';
$code .= '<input type="submit" value="next" /></form>';
echo $code;
break;
case 'ask':
if (!isset($_POST['actu_element'])){
$actu_element = 0;
} else {
$actu_element = $_POST['actu_element'];
$_SESSION['elements'][$actu_element][1] = $_POST['champ1'];
$_SESSION['elements'][$actu_element][2] = $_POST['champ2'];
$actu_element++;
}
$nb_element = $_POST['nb_element'];
if ($actu_element == $nb_element) {
$value_pg = 'filled';
} else {
$value_pg = 'ask';
}
$code = 'Nombre: '.$actu_element.'<br>';
$code .= '<form action="page.php" method="post">';
$code .= '<label>Champ 1</label>';
$code .= '<input type="text" name="champ1" /><br>';
$code .= '<label>Champ 2</label> ';
$code .= '<input type="text" name="champ2" /><br><br>';
$code .= '<input type="hidden" name="actu_element" value="'.$actu_element.'">';
$code .= '<input type="hidden" name="nb_element" value="'.$nb_element.'">';
$code .= '<input type="hidden" name="pg" value="'.$value_pg.'">';
$code .= '<input type="submit" value="next"></form>';
echo $code;
break;
case 'filled':
$compteur = 0;
$code = '';
$nbr = sizeof($_SESSION['elements']);
while ($compteur < $nbr){
$code .= $compteur.' - Champs 1:'.$_SESSION['elements'][$compteur][1].' Champs 2: '.$_SESSION['elements'][$compteur][2].'<br>';
$compteur++;
}
echo $code;
echo '<br> <a href="page.php">Retour</a>';
break;
}
?>
Explication:
Le tableau des réponses est stocké dans une variable de session 'elements'.
Bonjour,
Merci beaucoup de ton aide.
- j'ai du mal a comprendre cette annotation $_SESSION['elements'][$actu_element][1] ).
- je ne comprend pas pourquoi utiliser session_unregister
Mon souci actuel est que je n'arrive pas a visualiser le tableu de réponse qui est stocké dans ma variable de session; j'obtiens (par exemple pour nb_element=2; 0 - Champ1 ) ma variable '.$_SESSION['elements'][$compteur][1].' ne contient rien
J'ai fais quelques modification sur le script et
script.nombre_element.php
<?php
$code = '<form action="page.php" method="post">';
$code .= '<label>nb_element</label>';
$code .= '<input type=text name="nb_element" size=1></text>';
$code .= '<input type="hidden" name="pg" value="ask">';
$code .= '<input type="submit" value="next" /></form>';
echo $code;
?>
script.page.php
<?php
session_start();
$nb_element = $_POST['nb_element'];
?>
<?php
if(!empty ($nb_element))
{
session_start();
if (isset($_POST['pg']))
{
$pg = $_POST['pg'];
}
switch($pg)
{
case 'ask':
if (!isset($_POST['actu_element']))
{
$actu_element = 1;
}
else
{
$actu_element = $_POST['actu_element'];
$_SESSION['elements'][$actu_element][1] = $_POST['champ1'];
$actu_element++;
}
$nb_element = $_POST['nb_element'];
if ($actu_element == $nb_element)
{
$value_pg = 'filled';
}
else
{
$value_pg = 'ask';
}
$code = 'Nombre: '.$actu_element.'<br>';
$code .= '<form action="page.php" method="post">';
$code .= '<label>champ1</label>';
$code .= '<textarea name="champ1" cols=15 rows=3></textarea><br>';
$code .= '<input type="hidden" name="actu_element" value="'.$actu_element.'">';
$code .= '<input type="hidden" name="nb_element" value="'.$nb_element.'">';
$code .= '<input type="hidden" name="pg" value="'.$value_pg.'">';
$code .= '<input type="submit" value="next"></form>';
echo $code;
break;
case 'filled':
$compteur = 0;
$code = '';
$nbr = sizeof($_SESSION['elements']);
while ($compteur < $nbr)
{
$code .= $compteur.' - Champ1:'.$_SESSION['elements'][$compteur][1].'<br>';
$compteur++;
}
echo $code;
echo '<br><form action="suite.php" method="post">';
echo'<input type="submit" value="end"></form>';
break;
}
?>
Merci beaucoup de ton aide.
- j'ai du mal a comprendre cette annotation $_SESSION['elements'][$actu_element][1] ).
- je ne comprend pas pourquoi utiliser session_unregister
Mon souci actuel est que je n'arrive pas a visualiser le tableu de réponse qui est stocké dans ma variable de session; j'obtiens (par exemple pour nb_element=2; 0 - Champ1 ) ma variable '.$_SESSION['elements'][$compteur][1].' ne contient rien
J'ai fais quelques modification sur le script et
script.nombre_element.php
<?php
$code = '<form action="page.php" method="post">';
$code .= '<label>nb_element</label>';
$code .= '<input type=text name="nb_element" size=1></text>';
$code .= '<input type="hidden" name="pg" value="ask">';
$code .= '<input type="submit" value="next" /></form>';
echo $code;
?>
script.page.php
<?php
session_start();
$nb_element = $_POST['nb_element'];
?>
<?php
if(!empty ($nb_element))
{
session_start();
if (isset($_POST['pg']))
{
$pg = $_POST['pg'];
}
switch($pg)
{
case 'ask':
if (!isset($_POST['actu_element']))
{
$actu_element = 1;
}
else
{
$actu_element = $_POST['actu_element'];
$_SESSION['elements'][$actu_element][1] = $_POST['champ1'];
$actu_element++;
}
$nb_element = $_POST['nb_element'];
if ($actu_element == $nb_element)
{
$value_pg = 'filled';
}
else
{
$value_pg = 'ask';
}
$code = 'Nombre: '.$actu_element.'<br>';
$code .= '<form action="page.php" method="post">';
$code .= '<label>champ1</label>';
$code .= '<textarea name="champ1" cols=15 rows=3></textarea><br>';
$code .= '<input type="hidden" name="actu_element" value="'.$actu_element.'">';
$code .= '<input type="hidden" name="nb_element" value="'.$nb_element.'">';
$code .= '<input type="hidden" name="pg" value="'.$value_pg.'">';
$code .= '<input type="submit" value="next"></form>';
echo $code;
break;
case 'filled':
$compteur = 0;
$code = '';
$nbr = sizeof($_SESSION['elements']);
while ($compteur < $nbr)
{
$code .= $compteur.' - Champ1:'.$_SESSION['elements'][$compteur][1].'<br>';
$compteur++;
}
echo $code;
echo '<br><form action="suite.php" method="post">';
echo'<input type="submit" value="end"></form>';
break;
}
?>
Salut,
Alors:
$_SESSION['elements'][$actu_element][1] -> C'est un tableau :) mais en variable de session $NOMTABLEAU[LIGNE][COLONNE]
Pour le unregister, c'est simple, si tu ne détruis pas ta variable lorsque tu vas demander à l'utilisateur le nombre de champs qu'il veut, s'il l'a déjà fait une fois, alors l etableau affiché sera l'ancien, c'est à dire celui enregistré dans la session :)
Est ce que la varible est bien enregitré dans la session ? est ce que les sessions marchent sur ton serveur ?
(finalement tu n'as gardé qu'un champ :p)
Alors:
$_SESSION['elements'][$actu_element][1] -> C'est un tableau :) mais en variable de session $NOMTABLEAU[LIGNE][COLONNE]
Pour le unregister, c'est simple, si tu ne détruis pas ta variable lorsque tu vas demander à l'utilisateur le nombre de champs qu'il veut, s'il l'a déjà fait une fois, alors l etableau affiché sera l'ancien, c'est à dire celui enregistré dans la session :)
Est ce que la varible est bien enregitré dans la session ? est ce que les sessions marchent sur ton serveur ?
(finalement tu n'as gardé qu'un champ :p)
Merci j'ai compris pour le tableau de session
pour unregister pas totalement (je ne l'utilise pas dans mon script); oui c'est mon ancien tableau qi s'affiche mais je ne veux pas écraser l'ancien je veux lui ajouter le nouveau (càd la valeur entré pour le Champ 1 de mon element B!non?).
Element A
Champ1: essai
puis je clique sur next
Alors en ayant fais un print_r($_SESSION['elements']); je retrouve ma variable de session (Array([1]=>Array([1]=>essai))
Element B
Champ2: test
puis je clique sur next
j'obtiens en ayant fais un print_r($_SESSION['elements']); (Array([1]=>Array([1]=>essai))
pour unregister pas totalement (je ne l'utilise pas dans mon script); oui c'est mon ancien tableau qi s'affiche mais je ne veux pas écraser l'ancien je veux lui ajouter le nouveau (càd la valeur entré pour le Champ 1 de mon element B!non?).
Element A
Champ1: essai
puis je clique sur next
Alors en ayant fais un print_r($_SESSION['elements']); je retrouve ma variable de session (Array([1]=>Array([1]=>essai))
Element B
Champ2: test
puis je clique sur next
j'obtiens en ayant fais un print_r($_SESSION['elements']); (Array([1]=>Array([1]=>essai))
Merci de ta réponse.
Après avoir cliqué sur Valider, je tombe sur http://xxx/test.php?page=2 mais rien ne s'affiche or je voudrais voir s'afficher
champ 1:
Champ 2:
Le problème est que je vérifie que mon champ nbElement soit rempli; comment chunter cette vérification dans le cas de mon deuxième affichage pour mon second élement?
<?php
// récupération en post du nombre d'élément
$nb = $_POST['nbElement']; // nbElment correspond au name du champe input
$page = empty($_GET['page']) ? 1 : $_GET['page'];
?>
<?php
//faut que les variables existent
if(isset($_POST['nbElement']))
{
$nbElement = $_POST['nbElement'];
//faut que tous les champs soient remplis
if(!empty ($nbElement))
{
?>
<form action="test.php?page=<?php echo ($page + 1)?>" method="post">
<p>
<label>Champ 1</label>
<input type="text" name="champ1" />
</p>
<p>
<label>Champ 2</label>
<input type="text" name="champ2" />
</p>
<p><input type="submit" value="Valider" /><p>
</form>
<?php
}
}
?>