Problème récupération des variables depuis un formulaire inclus dans un code php
anakyl
Messages postés12Date d'inscriptionlundi 3 mars 2008StatutMembreDernière intervention26 août 2008
-
20 juin 2008 à 15:57
anakyl
Messages postés12Date d'inscriptionlundi 3 mars 2008StatutMembreDernière intervention26 août 2008
-
27 juin 2008 à 09:46
Bonjour à tous,
Je suis depuis plusieurs jours sur un problème que je n'arrive pas à résoudre.
Je souhaite créer un formulaire avec une liste déroulante proposant 3 choix, dont chacun renvoi vers un formulaire différent, et ainsi de suite.
Exemple :
Choisissez votre article :
- Outils -> Si choisi me renvoi avec formulaire outils
- Accessoires -> Si choisi me renvoi avec formulaire accesoire
- Divers -> Si choisi me renvoi avec formulaire divers
Shématiquement, c'est comme une arborescence avec différents chemins (formulaires) en fonction du choix effectué. Et chaque variable doit être récupérée d'une page à l'autre.
Et donc afin d'afficher le bon formulaire en fonction du choix, j'utilise la méthode if, elseif, else.
Il y a un slash devant chaque apostrophe et accent, car à chaque fois on me retournait des erreurs de syntaxes à ce niveau là.
<!-- END TEMPLATE: bbcode_code -->Je n'ai aucun problème pour afficher le bon formulaire suivant le choix du 1er formulaire vers le 2ème (car le 1er est entièrement en html), mais concernant le fait de passer du 2nd au 3ème formulaire, cela ne fonctionne pas car les variables ne sont pas transmises (et car le 2nd formulaire est entièrement inclus dans un code php).
Pour information, je n'ai pas inclus <form method="post"></form> dans le code php. Il se présente ainsi :
<form method="post" action="page3.php">
<?php//le code ci-dessus avec les if, elseif et les formulaires ?>
</form>
Je suis débutant.. Je ne sais pas du tout si j'utilise la bonne méthode.. J'espère que c'est un peu plus claire pour vous. Si ça se trouve, je fais n'importe quoi. J'essaie désespérément de récupérer les variables du formulaire avec liste déroulante.
J'espère que mon message est clair.
Merci pour votre aide.<!-- / message --><!-- edit note -->
A voir également:
Problème récupération des variables depuis un formulaire inclus dans un code php
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 21 juin 2008 à 21:46
Salut !
Je m'ennuyais ferme .... et j'ai codé ^^
Donc, j'ai fait un petit code pour montrer comment faire.
En fait, j'ai supprimé ton IF/ELSE, pour le remplacer par un SWITCH.
Tu dis pour tes ", mais tu te complique la vie .... fais un echo '...'; (avec des simples quotes ( ' )) et met tes " normales pour ton formulaire ;)
Et pour ton problème, en fait tu dois sauvegarder tes informations. Pour celà, tu traites tes données normalement, sauf qu'au lieu de les sauvegardées, tu les mets dans ton formulaire. (une boucle me semble le plus adapté). Pour celà, fait des
Voilà mon code (pas testé ;))
<?php
// Je conseil une fonction utilisant magic_quotes_runtime(); pour nettoyer les POST, GET, COOKIES, ... (addslashes/stripslashes)
// La fonction de traitement qui permet de sauvegarder les informations
function hidden_POST()
{
$args=func_get_args();
$list=array();
if(count($args)==0)
{
$args[0]=true;
}
foreach($argsas$val)
{
if($val===true)
{
$list=array();
foreach($_POSTas$post_name=>$post_val)
{
$list[$post_name]='.urlencode($post_name).'" value="'.urlencode($post_val).'" />';
}
}
elseif(isset($_POST[$val]))
{
$list[$val]='.urlencode($val).'" value="'.urlencode($_POST[$val]).'" />';
}
}
returnarray_unique($list);
}
if(isset($_POST['article']))
{
// On fait un SWITCH, une série de if/else équivalent à :
// If( $val == $a ) { ... }
// else If($val == $b ) { ... }
// else { ...} (else -> "default :")
// On force la case (minuscule)
switch(strtolower(urldecode($_POST['article'])))
{
// If ... == 'article'
case'article':
echo'
<form action="" method= "POST">
', implode('', hidden_POST())</gras> ,'
<label for ="outil">Choisissez un outil :</label>
<select name="outil" id="outil">
<option value="cle">Cle</option>
<option value="marteau">Marteaux</option>
<option value="tourne vis">Tourne vis</option>
<option value="ciseaux">Ciseaux</option>
<option value="perceuse">Perceuse</option>
</select>
</form>';
// Et hop, un echo '...'; (qui est plus recomandé que echo "...") et plus besoin de " (mais besoin pour les \')
break;
case'accessoires':
// ...
break;
// formulaire défault (else)
default:
// ...
break;
}
}
/*
* Ici, c'est " implode('', hidden_POST()) " qui fait tout.
* Grâce à elle, tu récupère TOUTES les informations envoyées
précedemment. En fait, elle renvoie les valeurs POST à l'aide d'input
hidden.
* Son utilisation :
* hidden_POST() & hidden_POST(true) : retourne un Array contenant TOUS les _POST
* hidden_POST('mon_form1', 'mon_form2') : retourne les X _POST demandés
* Elle réenvoi un Array avec les demandés
* Il suffit donc d'utiliser un inplode('', $resultat_de_la_fonction); pour afficher
*/
?>
<hr />Si ma reponse te convient, merci de l'accepter !