afficher une variable dans un if

anna70
Invité n'ayant pas de compte PHPfrance

20 janv. 2006, 14:02

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 janv. 2006, 14:08

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: )
Modifié en dernier par Truc le 20 janv. 2006, 14:09, modifié 1 fois.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 19672 Messages

20 janv. 2006, 14:09

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

anna70
Invité n'ayant pas de compte PHPfrance

20 janv. 2006, 15:15

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 .

anna70
Invité n'ayant pas de compte PHPfrance

20 janv. 2006, 20:02

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 == ""))

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 janv. 2006, 22:17

Bien, merci, encore faut-il savoir quel est l'interet du test... car perso je n'ai pas très bien suivi :?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 19672 Messages

20 janv. 2006, 22:56

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 :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: