Page 1 sur 1

Conseil pour le $_POST

Posté : 02 oct. 2005, 12:16
par gesualda
Bonjour

Dans les formulaires, on récupère les données ainsi:
$_POST['sens_a'] 
J'ai lu quelque part que pour une question de comodité de code on pouvait raccourcir celui ci après le post:
$sens_a = $_POST['sens_a'] 
Donc si je veux faire un controle d'existance je peux procéder comme cela:
$sens_a = $_POST['sens_a'] ;
if(isset($sens_a)){
  blablabla
}
es ce correct ou bien faut-il faire ainsi:
if(isset($_POST['sens_a'])){
  blablabla
}
Si oui, pourquoi ?

Merci et désoler d'etre encore un bleu !! :D

Posté : 02 oct. 2005, 12:27
par rami
Cela revient strictement à la même chose. Certains préfèrent stocker dans une variable (avec un nom plus court) les données de $_POST pour avoir moins à écrire plus tard. D'autres ne préfèrent pas utiliser de variables supplémentaires. En gros, c'est une question de goût. ;)

Posté : 02 oct. 2005, 12:27
par Truc
Salut, la 2eme proposition est la bonne . En effet dans la 1ere tu fait deja un appel a la variable POST pour l'affecter à $sens_a:
$sens_a = $_POST['sens_a'] ; 
Donc si cette meme variable POST n'existe pas tu aura une erreur.

Sur la 2eme proposition le isset que tu fait verifi l'existence de la variable avant meme qu'on appel a son contenu.
Ce que tu as du voir devait ressembler a ceci:
$sens_a="";
if(isset($_POST['sens_a']))
{
   $sens_a = $_POST['sens_a'] ;
   blablabla..
}
ensuite tu peut utiliser $sens_a dans le reste du code (si la variable a été initialisée avant.

ou encore
$sens_a = isset($_POST['sens_a']) ? $_POST['sens_a']: NULL;
qui aura pour meme effet d'affecter le contenu de la variable POST (si elle existe) a $sens_a sinon une affectation par défaut (ici NULL).

Posté : 02 oct. 2005, 13:07
par gesualda
Alors donc si je comprend bien je pourrais raccourcir après avoir vérifier la validité du submit ici "send" comme cela:
if(isset($_POST['send'])){
  $sens_a = $_POST['sens_a'];
if(isset($sens_a)){
blablabla
}
}
:oops:

Posté : 02 oct. 2005, 13:09
par rami
Oui tu peux mais tu n'as pas besoin du deuxième isset():
if(isset($_POST['send'])){
  $sens_a = $_POST['sens_a'];
  blablabla
}
else{
  //traitement si $_POST['send'] n'est pas défini
}

Posté : 02 oct. 2005, 13:23
par gesualda
dans un premier temps je controle l'existence de l'envoie des posts, mais je ne sais pas si $sens_a existe
if(isset($_POST['send'])){
  $sens_a = $_POST['sens_a'];
if(isset($sens_a)){
blablabla
} 
Je controle donc avec un deuxième
if(isset($sens_a)){ 
Tu me dit que je n'ai pas besoin du deuxième isset, donc je sais pas si elle existe ou pas, ou bien a ce moment la, vaudrait il mieux remplacer "isset" par un
if(empty($sens_a)){ 


j'essaye surtout de comprendre, merci de vos explications

Posté : 02 oct. 2005, 13:39
par Cyrano
Attention, empty implique qu'on traite nue variable définie. Mais si tu la définis à NULL, alors tu auras une erreur en testant avec empty;

Ce que tu peux faire:
$sens_a = isset($_POST['sens_a']) ? $_POST['sens_a']: "";
if(!empty($sens_a))
{
    echo("<p>Bla bla bla</p>\n");
}
En résumé :
  • isset() vérifie l'existence;
  • empty() vérifie si le contenu existe dans une variable existante.

Posté : 02 oct. 2005, 13:48
par rami
empty() renvoit true si on lui passe une variable null.
Voir dans la doc:
http://fr.php.net/manual/fr/types.comparisons.php

Par contre, il faut se méfier de empty() car si tu lui donnes une chaîne ayant comme valeur '0', empty() renverra true.

Posté : 02 oct. 2005, 14:07
par gesualda
Merci à tous :D