$_POST se comporte différemment...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : $_POST se comporte différemment...

par Invité » 08 août 2006, 08:27

Merci à vous et en particulier à toi RYLE pour ces, une nouvelle fois, riches explications. VIVE LES FORUMS, LE PARTAGE DE CONNAISSANCES en clair VIVE PHP FRANCE ^^

Titoon

par Ryle » 07 août 2006, 16:08

Cela dépend de ton paramétrage php. Dans les dernières versions de php lorsque tu appelles un élément d'un tableau et que celui-ci n'existe pas, il te renvoi de message d'erreur.

Concernant les cases à cocher, il faut savoir que si une case n'est pas cochée, elle n'est simplement pas envoyées via le formulaire. Pour savoir si une case a été cochée, il te suffit donc de tester si elle est définie dans le tableau $_GET ou $_POST.
Ta solution d'utiliser isSet() est donc tout à fait indiquée.

Quant au test pour voir le contenu du tableau, il faut ajouter les guillemets (ou apostrophe) autour du nom de l'index :
print_r($_POST); // pour voir tout ce qui a été envoyé via le formulaire

print_r($_POST["case"]; // pour le détail de l'index "case".
Si "case" n'est pas défini un message d'avertissement est retourné. Pour l'éviter il suffit d'utiliser isSet() :
if(isSet($_POST["case"])) 
  print_r($_POST["case"]; 
else
  echo "Aucune case n'a été cochée";

par Invité » 07 août 2006, 14:48

Re,

Bon j'ai trouvé une soluce en faisant la démarche inverse à savoir :
if (!isset($_POST['cazako'])) { 
echo "Aucune case !"}else{
...
}
Est-ce une/la bonne solution ?

Tit'

par Invité » 07 août 2006, 14:24

Merci déjà pour ton aide.

Ca me donne ces erreurs :

Notice: Use of undefined constant case - assumed 'case' in... ... ...

Notice: Undefined index: case in... ... ...

J'ai déjà fait des scripts multi-tâches sur une page notamment pour des mails et ca marchait mais pas pour des cases à cocher par contre.

Le code pour mes cases à cocher, le voici :

Code : Tout sélectionner

<input type='checkbox' name='case[]' value='".$rows['id']."'>
Je sais que case est une instruction PHP donc "par sécurité" j'ai donc essayé des choses comme cazacocher mais rien n'y fait, toujours la même erreur sauf que le nom change :lol:

Je continue de mon côté ma prise de tête :?

Tit'

par HanX » 07 août 2006, 13:54

fait un print_r($_POST[case]) et donne moi ce qu'il t'affiche

$_POST se comporte différemment...

par Titoon » 07 août 2006, 13:25

Salut tout le monde,

J'ai fait un script sur 2 pages qui marchent parfaitement et pour la perf' j'ai essayé de tout mettre dans la même page. C'est un formulaire utilisant la méthode POST.

Si la variable bouton n'existe pas, on tombe sur une liste de cases à cocher et le fameux bouton. Ensuite on clique et donc la variable existe et la deuxième partie du script peut alors se jouer.

Tant qu'on coche une ou plusieurs cases à cocher et qu'on valide no problemo, mais si on clique sur le bouton sans rien cocher on tombe sur un Notice: Undefined index: ... J'ai donc essayé un count pour voir si tout était ok mais j'ai beau vouloir tester la valeur il me met toujours cette fichue erreur.

Voici le bout de code et ma pseudo feinte qui marche sur 2 pages mais pas sur une :x
//la page qui récupère et la même que celle qui émet.
$justone = count($_POST['case']);//case
//echo $justone;
if($justone<1){ echo "Aucune case cochée"; }else{...}
Une idée ? La récupération dans la même page semble pas lui plaire :cry:

Titoon