Page 1 sur 1

Tableaux type $_POST

Posté : 05 juin 2006, 15:22
par kilianh
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

Posté : 05 juin 2006, 15:41
par Ryle
$_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"] )) {
  ...
}
...
:)

Posté : 05 juin 2006, 15:54
par zeus
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"

merci

Posté : 05 juin 2006, 16:02
par kilianh
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

Posté : 05 juin 2006, 16:11
par Ryle
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 :)

Posté : 05 juin 2006, 20:02
par Invité
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

Posté : 06 juin 2006, 10:08
par Ryle
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";