Juste une confirmation

ViPHP
ViPHP | 2291 Messages

25 avr. 2007, 15:48

Bonjour,

Je souhaiterais une confirmation svp voici un bout de code.
<?php
if($_POST){
   

   $erreurs = array();
   if( empty($prenom) $erreurs = "il manque votre prénom";
   if( empty($nom) $erreurs = "il manque votre nom";
   if( empty($email) $erreurs = "il manque votre email";
   if( empty($tel) $erreurs = "il manque votre téléphone";
   if( empty($message) $erreurs = "il manque votre message";

}
?>
Qui voie l'erreur :?:
Ne serais t'il pas plus judicieux comme dirais R.... :wink:
de faire ceci ?
<?php
if($_POST){
   

   $erreurs = array();
   if( empty($prenom)) $erreurs = "il manque votre prénom";
   if( empty($nom)) $erreurs = "il manque votre nom";
   if( empty($email)) $erreurs = "il manque votre email";
   if( empty($tel)) $erreurs = "il manque votre téléphone";
   if( empty($message)) $erreurs = "il manque votre message";

}
?>
D'avance merci :wink:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Mammouth du PHP | 693 Messages

25 avr. 2007, 15:52

Heu, ca sert à quoi de poser une question si tu as déjà une réponse ?

En effet, dans le premier code, les parenthèse ne sont pas toutes fermées...

ViPHP
ViPHP | 2291 Messages

25 avr. 2007, 15:56

Heu, ca sert à quoi de poser une question si tu as déjà une réponse ?

En effet, dans le premier code, les parenthèse ne sont pas toutes fermées...
A rien effectivement je voulais juste être certain :oops:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

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

25 avr. 2007, 17:27

Ne serait-il pas plus judicieux de... éh ?! mais c'est moi R ?! grumpf... bon passons... ;) Ca serait-y pas mieux, disais-je avant qu'on ne m'interrompe, de tester la valeur dans $_POST ? Voire de tester si elle est bien définie ? Et encore plus mettre des crochets à ton tableau pour dire à php que tu veux ajouter un nouvel élément et pas juste écraser la variable ? :)
if( !isSet($_POST['prenom']) || empty($_POST['prenom'])) 
  $erreurs[] = "il manque votre prénom"; 
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 2291 Messages

25 avr. 2007, 17:34

Ne serait-il pas plus judicieux de... éh ?! mais c'est moi R ?! grumpf... bon passons... ;) Ca serait-y pas mieux, disais-je avant qu'on ne m'interrompe, de tester la valeur dans $_POST ? Voire de tester si elle est bien définie ? Et encore plus mettre des crochets à ton tableau pour dire à php que tu veux ajouter un nouvel élément et pas juste écraser la variable ? :)
if( !isSet($_POST['prenom']) || empty($_POST['prenom'])) 
  $erreurs[] = "il manque votre prénom"; 
Salut,

L'exemple plus haut n'est pas de moi je viens de tomber dessus, c'est un site qui propose des formations en php entre autre :? et payante.
Quand à moi j'ai opter pour une vérification en js
function check1() {

if (document.commande.modem.value == '') {
alert('message erreur');
document.commande.modem.style.borderColor= 'red';
document.commande.modem.focus();
return false;
}
Si je ne trompe pas c'est aussi bien que la vérification en php :?:

Merci @+
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 5924 Messages

25 avr. 2007, 17:59

C'est pas question d'être mieux ou pas, c'est qu'une vérification en js est facultative, alors qu'elle est indispensable au niveau du php...

ViPHP
ViPHP | 2291 Messages

25 avr. 2007, 18:52

Salut

Oui mais j'ai un gros soucis avec cette vérif
Mes champs par défaut ont une valeur de 0
if(empty($_POST['modem']) || $_POST['modem']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ modem il y avait le chiffre 0.";
    exit();
    }
    if(empty($_POST['modemcable']) || $_POST['modemcable']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ modemcable il y avait le chiffre 0.";
    exit();
    }
    if(empty($_POST['niu3']) || $_POST['modniu3em']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ niu3 il y avait le chiffre 0.";
    exit();
    }
    if(empty($_POST['niu4']) || $_POST['niu4']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ niu4 il y avait le chiffre 0.";
    exit();
    }
    if(empty($_POST['colvert']) || $_POST['colvert']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ colvert il y avait le chiffre 0.";
    exit();
    }
    if(empty($_POST['cable']) || $_POST['cable']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ cable il y avait le chiffre 0.";
    exit();
    }
Il ne prend pas le 0 en compte et crois qu'il est vide pourquoi ????

Merci
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Mammouth du PHP | 686 Messages

25 avr. 2007, 19:07

essaie en mettant NULL

Mammouth du PHP | 686 Messages

25 avr. 2007, 19:12

http://www.manuelphp.com/php/function.empty.php
la fonction empty considère le zero comme vide !

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

26 avr. 2007, 09:55

C'est pas tant le problème de la fonction empty, c'est php pour qui : zéro (0), faux (FALSE), chaine vide ('') sont trois valeurs strictement identiques.
if (0 == FALSE) // vrai
if (0 == '') // vrai
if (FALSE == '') // vrai
La seule façon de différencier ces valeurs, c'est de considérer leurs types. Le premier est un nombre (int), le deuxième un booléen (boolean) et le dernier une chaine (String). Tu peux pour cela soit utiliser getType() pour connaitre le type d'une variable, soit utiliser les opérateurs "===" ou "!==" pour comparer valeur et type.
if (0 === FALSE) // faux, la valeur est la même, mais le type est différent (int / boolean)
if (0 === '') // faux
if (FALSE === '') // faux
Normalement, même si php n'est pas intransigeant sur la question, il ne faudrait comparer que des varibles de même type (ce qu'impose la plupart des autres langages). Ainsi pour comparer un nombre et une chaine, il faudrait convertir (cast) l'un des deux avant de pouvoir faire la comparaison :)

Pour en revenir à ton cas, pourquoi mettre une valeur par défaut à 0 et rendre le champ obligatoire ? pourquoi ne pas simplement le laissé vide et facultatif ? au pire si tu as besoin du 0, il te suffit de l'affécter si jamais tu constates que le champ est resté vide :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 2291 Messages

26 avr. 2007, 16:25

Pour en revenir à ton cas, pourquoi mettre une valeur par défaut à 0 et rendre le champ obligatoire ? pourquoi ne pas simplement le laissé vide et facultatif ? au pire si tu as besoin du 0, il te suffit de l'affécter si jamais tu constates que le champ est resté vide
La raison est simple, c'est un formulaire de commande qui est envoyer par mail() et je préfère avoir
par exemple dans le mail ceci :
modem 0 pièce(s)
que ceci
modem pièce(s)
je trouve cela plus propre.
Et comme je sais que si je demande aux techniciens de mettre 0 si il ne commande pas cette pièce ils vont le faire 2 x et puis oups oublier.
Alors par contre la dernière proposition m'intèresse mais j'ai absolument aucune idée de la manière de faire :cry:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

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

26 avr. 2007, 20:06

Bah si au lieu de :
if(empty($_POST['modem']) || $_POST['modem']=="") { 
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ modem il y avait le chiffre 0."; 
    exit(); 
} 
Tu fais :
if(empty($_POST['modem'])) { 
  $_POST['modem'] = "0";
} 
Ca devrais rendre ton champ facultatif et mettre une valeur par défaut s'il n'est pas renseigné :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 2291 Messages

26 avr. 2007, 22:25

Bah si au lieu de :
if(empty($_POST['modem']) || $_POST['modem']=="") { 
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ modem il y avait le chiffre 0."; 
    exit(); 
} 
Tu fais :
if(empty($_POST['modem'])) { 
  $_POST['modem'] = "0";
} 
Ca devrais rendre ton champ facultatif et mettre une valeur par défaut s'il n'est pas renseigné :)
Effectivement :wink: merci @+
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.