Tableaux type $_POST

Eléphanteau du PHP | 21 Messages

05 juin 2006, 15:22

Bonjour,

Voila j'ai une page HTML qui contient plusieurs formulaires, je veux faire une recherche sur une base de donnée et pour cela je propose 3 types de recherches :
une par Nom (nomasupprimer), l'autre par Mail (mailasupprimer ) et la derniere par n°INSEE (INSEEasupprimer).
J'ai donc en fonction de ce choix, 1 des 3 formulaires qui s'affiche.
Ces 3 formulaires envois leur données a la meme page PHP.

donc j'effectue en debut de script PHP un test pour savoir quel formulaire a envoyé ses données : nomasupprimer, mailasupprimer ou INSEEasupprimer mais c'est ici que je bute, c'est tout bete mais je ne sais pas comment utiliser efficacement le tableaux $_POST.

par exemple si j'envois avec le formulaire INSEE(INSEEasupprimer) et que je fais un print_r j'obtient ceci :

Array ( [INSEEasupprimer] => 1760462498030 [envoyer] => Supprimer )

et j'aimerais pouvoir isoler le contenu dans les premiers [...]
comme çà je peux faire ma requete SQL en fonction du formulaire utilisé.

J'espere avoir été clair. Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 juin 2006, 15:41

$_POST (ou $_GET) sont des tableaux associatifs, c'est à dire qu'à une clé ou index, est associé une valeur. Dans ton cas ce sont les champs et valeur du formulaire :

Code : Tout sélectionner

Array ( [INSEEasupprimer] => 1760462498030 [envoyer] => Supprimer )
A la clé "INSEEasupprimer" est associée la valeur 1760462498030
A la clé "envoyer" est associée la valeur "Supprimer"

Ainsi si tu affiches $_POST["INSEEasupprimer"] (c'est à dire la valeur de l'index "INSEEasupprimer" du tableau $_POST) tu obtiendras la valeur 1760462498030.

Tu cherches donc à savoir si l'index "INSEEasupprimer" (respectivement "nomasupprimer", ou "mailasupprimer") est défini dans le tableau pour exécuter le traitement associé. Le plus simple pour cela est d'utiliser la fonction isSet() qui te permet de savoir si un élément est défini :
if(isSet($_POST["INSEEasupprimer"] )) {
  // l'index est défini, j'exécute la partie du code spécifique à insee
  // je récupère la valeur concernée dans $_POST["INSEEasupprimer"] 
}
if(isSet($_POST["nomasupprimer"] )) {
  ...
}
...
:)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 juin 2006, 15:54

A mon avis, tu penses que INSEEasupprimer est un index qui contient les valeurs de ton formulaire du même nom :-k

Alors qu'en fait, tu doit avoir un index qui porte l'attribut name="INSEEasupprimer"
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 21 Messages

05 juin 2006, 16:02

Ca marche parfaitement, merci bcp. J'avais encore le temps de chercher, mon probleme c'est que je ne connais pas trop les fonctions et commandes specifiques telles IsSet. C'est avec l'experience que çà viendra.

Sinon j'etais parti sur un bidouillage, çà marchait presque. j'avais changé le nom de mes buttons dans les formulaires pour obtenir ceci :

Array ( [INSEEasupprimer] => 1760462498030 [type] => INSEE )
Array ( [nomasupprimer] => 1760462498030 [type] => Nom )
et
Array ( [mailasupprimer] => 1760462498030 [type] => Mail )

et j'avais reussi a afficher le contenu de type en faisant : echo "$_POST[type]";
mais lorsque je voulais assigner ce contenu a une variable pour enfin faire mes tests : $type_formulaire = $POST[type];

ca m'affichait une erreure que je ne comprenais pas trop.

'fin ceci dit, maintenant çà marche et je t'en suis tres reconnaissant.

Cdt,

Mickael

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 juin 2006, 16:11

Un p'tit clic sur le bouton résolu ? ;)

En principe ta solution fonctionnait tout aussi bien - même si personnellement j'aurais utilisé un champ caché (input de type hidden) plutot que de modifier le bouton... -
Ton soucis provenait de l'oubli de l'underscore (souligné) dans $_POST :)

Invité
Invité n'ayant pas de compte PHPfrance

05 juin 2006, 20:02

Oky merci bcp mais au fait pkoi çà ne marche pas lorsque j'essais de la passer dans une variable :

$variable = $_POST["nomasupprimer"];

??

Merci

PS: je cliquerais sur resolu lorsque tu auras (lol c'est pas un ordre non plus ! :D ) repondu a cette derniere question. En tout cas merci bcp

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 juin 2006, 10:08

Argh, il fait du chantage en plus ?! :)

Dans ton code précédent, c'est parce qu'il manquait l'underscore à $_POST:
$type_formulaire = $_POST[type];
En revanche dans le dernier, tu devrais bien récuperer la valeur (si l'index "nomasupprimer" est bien présent, sinon il sera vide, voire génèrera une erreur). Un p'tit test :
$variable = "";
if(isSet($_POST["nomasupprimer"])) {
  $variable = $_POST["nomasupprimer"];
  echo $variable ." / ". $_POST["nomasupprimer"];
}
else
  echo "L'index \"nomasupprimer\" n'existe pas dans $_POST";