Page 1 sur 1

Juste une confirmation

Posté : 25 avr. 2007, 15:48
par dunbar
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:

Posté : 25 avr. 2007, 15:52
par orgerix
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...

Posté : 25 avr. 2007, 15:56
par dunbar
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:

Posté : 25 avr. 2007, 17:27
par Ryle
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"; 

Posté : 25 avr. 2007, 17:34
par dunbar
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 @+

Posté : 25 avr. 2007, 17:59
par Sékiltoyai
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...

Posté : 25 avr. 2007, 18:52
par dunbar
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

Posté : 25 avr. 2007, 19:07
par sylvaing26
essaie en mettant NULL

Posté : 25 avr. 2007, 19:12
par sylvaing26
http://www.manuelphp.com/php/function.empty.php
la fonction empty considère le zero comme vide !

Posté : 26 avr. 2007, 09:55
par Ryle
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 :)

Posté : 26 avr. 2007, 16:25
par dunbar
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:

Posté : 26 avr. 2007, 20:06
par Ryle
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é :)

Posté : 26 avr. 2007, 22:25
par dunbar
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 @+