Page 1 sur 1

afficher une variable dans un if

Posté : 20 janv. 2006, 14:02
par anna70
Bonjour à tous,

voila je me trouve devant un problème qui me turlupine :oops: :

Code : Tout sélectionner

$valid = "#^[^-_\.][a-z0-9-_\.]+[^-_\.]@[^-_\.][a-z0-9-_\.]+[^-_\.]\.[a-z]{2,4}$#"; $phone = "#^\d{6,10}$#"; if ($motdepasse0 != '' || $motdepasse1 != '' || $motdepasse2 != '') { $verif="|| $motdepasse0 == '' || $motdepasse1 == '' || $motdepasse2 == ''"; }else { $verif=""; } /** * Traitement de vérification des champs vides ou invalides (téléphone et/ou email ) * Conditions de mauvaises réponses (champ vide par exemple) */ if ($mail == '' || $telportable == '' || !(preg_match($phone,$telportable)) || $mail == '' || !(preg_match($valid, $mail)) $verif) { Traiter et Afficher les erreurs }else { Executer }

je sais par test que le problème vient de la variable $verif dans le if :

Code : Tout sélectionner

if ($mail == '' || $telportable == '' || !(preg_match($phone,$telportable)) || $mail == '' || !(preg_match($valid, $mail)) $verif)
1- comment vous, l'auriez vous écrit pour ne pas qu'il ait erreur ???
2- est ce que j'ai le droit de l'écrire comme ça ?

merci d'avance

Posté : 20 janv. 2006, 14:08
par Truc
Salut, Non tu n'as pas le droit d'écrire comme ça :wink:

Quel est le but des différents tests ? (déroulement, me doute que c'est pour vérifier des champs :wink: )

Posté : 20 janv. 2006, 14:09
par Cyrano
Le problème vient effectivement de la présence de cette variable toute seule : La structure d'un if() est la suivante:

Code : Tout sélectionner

if(condition = xyz) { instruction abc; }
Là, tu as :

Code : Tout sélectionner

if((condition = xyz) variable_orpheline) { instruction abc; }
Ça ne peut que générer une erreur. DOnc, il faut savoir en fin de compte ce que tu veux vérifier avec cette variable ?

Posté : 20 janv. 2006, 15:15
par anna70
merci , c'est ce que je pensais aussi mais je me disais aussi ( on sait jamais ) peut être qu'il y'avait une façon qui ressemble à ça qui aurait pu m'aller .

je vais y réfléchir autrement alors . merci .

Posté : 20 janv. 2006, 20:02
par anna70
Bonjour

c'est bon c'est réglé j'ai trouvé comment faire, voila je le met au cas ou qq1 a le même problème :

Code : Tout sélectionner

if ($mail == '' || $telportable == '' || !(preg_match($phone,$telportable)) || $mail == '' || !(preg_match($valid, $mail)) || ($motdepasse0 != "" && $motdepasse1 == "" && $motdepasse2 == "") || ($motdepasse0 != "" && $motdepasse1 != "" && $motdepasse2 == "") || ($motdepasse0 != "" && $motdepasse1 == "" && $motdepasse2 != "") || ($motdepasse0 == "" && $motdepasse1 != "" && $motdepasse2 != "") || ($motdepasse0 == "" && $motdepasse1 == "" && $motdepasse2 != "") || ($motdepasse0 == "" && $motdepasse1 != "" && $motdepasse2 == ""))

Posté : 20 janv. 2006, 22:17
par Truc
Bien, merci, encore faut-il savoir quel est l'interet du test... car perso je n'ai pas très bien suivi :?

Posté : 20 janv. 2006, 22:56
par Cyrano
Suggestion : quand tu as une suite de condition, pour ton propre confort de lecture (et le nôtre), écris ça comme ceci:
if ($mail == '' || 
    $telportable == '' || 
    !(preg_match($phone,$telportable)) || 
    $mail == '' || 
    !(preg_match($valid, $mail)) || 
    ($motdepasse0 != "" && $motdepasse1 == "" && $motdepasse2 == "") || 
    ($motdepasse0 != "" && $motdepasse1 != "" && $motdepasse2 == "") || 
    ($motdepasse0 != "" && $motdepasse1 == "" && $motdepasse2 != "") || 
    ($motdepasse0 == "" && $motdepasse1 != "" && $motdepasse2 != "") || 
    ($motdepasse0 == "" && $motdepasse1 == "" && $motdepasse2 != "") || 
    ($motdepasse0 == "" && $motdepasse1 != "" && $motdepasse2 == ""))
Tu t'y retrouveras beaucoup plus facilement :)