[PHP]Passer deux variables dans un formulaire
Résolu/Fermé
A voir également:
- [PHP]Passer deux variables dans un formulaire
- Formulaire de réclamation facebook - Guide
- Comment faire deux colonnes indépendantes dans word - Guide
- Passer de windows 7 à windows 10 - Accueil - Mise à jour
- Deux ecran pc - Guide
- Passer de qwerty a azerty - Guide
6 réponses
Xil
Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
257
24 janv. 2008 à 15:06
24 janv. 2008 à 15:06
tu peux séparer tes données par un séparateur au choix ('-', '_' , ':' , ';' , ',' ,...), un caractère que tu sais ne pas être présent ni dans tes noms de tome, ni dans tes noms de page.
exemple: coté html
Coté php, tu pourra faire un
/!\ Ne pas oublier la sécurité !
https://www.php.net/strip_tags
exemple: coté html
<option value="<?php echo $tome.'_'.$page;?>">
Coté php, tu pourra faire un
$tmp = explode('_',$_POST['tome']); $tome = $tmp[0]; $page = $tmp[1];
/!\ Ne pas oublier la sécurité !
https://www.php.net/strip_tags
rescue
Messages postés
1039
Date d'inscription
vendredi 16 novembre 2007
Statut
Contributeur
Dernière intervention
27 mars 2019
136
24 janv. 2008 à 15:09
24 janv. 2008 à 15:09
Bonjour,
As tu essayé un GET ?
Dans <form method="get" action="read.php">
@+
As tu essayé un GET ?
Dans <form method="get" action="read.php">
@+
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
24 janv. 2008 à 15:12
24 janv. 2008 à 15:12
Bonjour,
Si tu mets "method=POST", il faut récupérer tes variables avec $_POST["tome"] et $_POST["page"].
Si tu veux utiliser $_GET, alors il faut mettre method="GET".
Par ailleurs, ton utilisation de value est extrêmement déconseillée ! Et un navigateur normal transformera les entités HTML de sorte qu'elles n'apparaissent pas dans l'URL telles quelles. Tu n'auras pas deux variables, mais une seule qui contiendra par exemple "4&page=2".
Les deux solutions possibles sont soit de mettre deux champs de saisie, un pour le tome un pour la page, soit de concaténer les deux dans une seule variable, par exemple en mettant value="<?php echo "$tome;$page"; ?>", qu'il faudra en sortie traiter par un explode(";",$_GET['tome']);
Xavier
<form method="post" action="read.php">
Si tu mets "method=POST", il faut récupérer tes variables avec $_POST["tome"] et $_POST["page"].
Si tu veux utiliser $_GET, alors il faut mettre method="GET".
Par ailleurs, ton utilisation de value est extrêmement déconseillée ! Et un navigateur normal transformera les entités HTML de sorte qu'elles n'apparaissent pas dans l'URL telles quelles. Tu n'auras pas deux variables, mais une seule qui contiendra par exemple "4&page=2".
Les deux solutions possibles sont soit de mettre deux champs de saisie, un pour le tome un pour la page, soit de concaténer les deux dans une seule variable, par exemple en mettant value="<?php echo "$tome;$page"; ?>", qu'il faudra en sortie traiter par un explode(";",$_GET['tome']);
Xavier
Oui, pardon, j'avais mis un get, mais dans mon recopiage, je me suis précipité.
Et le problème avec le get est celui que Xavier énonce, à savoir qu'il m'intrprète "1&page=2" comme la valeur de $post.
Je vais essayer avec un explode ^^
Et le problème avec le get est celui que Xavier énonce, à savoir qu'il m'intrprète "1&page=2" comme la valeur de $post.
Je vais essayer avec un explode ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
D'accord la solution de Xil , mais moi je mettrai un caractère qui ne risque pas d'être présent dans le nom du tome ou de la page or _ risque d'y être
mets plutôt | (Alt Gr+touche 6) à la place de _
et GET ne résoudra rien, c'est la valeur de value="..." du la liste qui est envoyé, donc il faut travailler la dessus.
Pour ton name de liste mets autre chose que 'tome', il risque d'y avoir confusion avec la variable $ tome
en résumé:
tu as un '; qui traine après </option>
@lain
mets plutôt | (Alt Gr+touche 6) à la place de _
et GET ne résoudra rien, c'est la valeur de value="..." du la liste qui est envoyé, donc il faut travailler la dessus.
Pour ton name de liste mets autre chose que 'tome', il risque d'y avoir confusion avec la variable $ tome
en résumé:
<?php $tome = $_GET['tome']; $page = $_GET['page']; ?> <form method="post" action="read.php"> <p>Aller vers :</p> <select name="choix"> <option value="<?php echo $tome.'|'.$page;?>">--Page courante--</option> </select> <input type="submit" value="OK" /> </form> et dans la page qui récupère: <?php $tmp = explode('|',$_POST['choix']); $tome = $tmp[0]; $page = $tmp[1]; ?>
tu as un '; qui traine après </option>
@lain