Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/08/2011, 15h21   #1
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : octobre 2005
Messages : 117
Points : 29
Points : 29
Par défaut Opérateurs logiques et chaines de caractères

Bonjour,

J'ai un problème avec la condition suivante :
Code :
if ($lastname_memory != $lastname && $firstname_memory != $firstname) {
Je compare deux choses :
un prénom avec un autre prénom et un nom avec un autre nom.

Les deux devraient être identique pour que ma condition soit validée. Mais si le nom et le nom en mémoire ou le prénom et le nom en mémoire sont identiques cela me retourne le résultat comme si la condition était vérifiée.

Il semble que la condition se comporte comme si elle contenant un OU au lieu du ET.

D'avance merci pour votre aide !
JoN28fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 15h30   #2
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
Bonjour,

Citation:
Les deux devraient être identique pour que ma condition soit validée
différents plutôt non ?

Fait un var_dump de tes variables avant le if pour être sur de leur contenu.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 15h40   #3
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 773
Points : 2 332
Points : 2 332
Je pense que ta condition n'est pas adaptée à ce que tu recherches. Elle se comporte correctement, c'est juste qu'actuellement, tu vérifies une différence, et non pas une égalité...
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 15h56   #4
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : octobre 2005
Messages : 117
Points : 29
Points : 29
Je pense ne pas avoir été clair, je veux que la condition dans mon if soit vraie si :
$lastname_memory est différent de $lastname ET $firstname_memory est différent de $firstname
JoN28fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 16h03   #5
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
Tu as essayé de placer un var_dump juste avant pour voir le contenu ?
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 16h08   #6
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : octobre 2005
Messages : 117
Points : 29
Points : 29
Je ne comprends pas bien l'utilité du var_dump, malgrè la lecture du manuel php...
http://de3.php.net/manual/fr/function.var-dump.php
JoN28fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 16h09   #7
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 460
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 460
Points : 644
Points : 644
Ta condition est vrai si $lastname_memory est différent de $lastname ET $firstname_memory est différent de $firstname.
Si tu vérifier sur si l'un d'eux est différent alors tu dois mettre le ou
Code :
if ($lastname_memory != $lastname || $firstname_memory != $firstname)
ça veux dire si l'un d'eux est différent de l'autre alors la condition sera vrai.
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 16h11   #8
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 773
Points : 2 332
Points : 2 332
Citation:
Envoyé par JoN28fr Voir le message
Je pense ne pas avoir été clair, je veux que la condition dans mon if soit vraie si :
$lastname_memory est différent de $lastname ET $firstname_memory est différent de $firstname
Dans ce cas là ton if est correct... Le problème vient d'ailleurs, vérifie le contenu de tes variables comme le dit Bebel.
La fonction var_dump() permet d'afficher le contenu d'une variable
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 16h12   #9
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
Citation:
Envoyé par JoN28fr Voir le message
Je ne comprends pas bien l'utilité du var_dump, malgrè la lecture du manuel php...
http://de3.php.net/manual/fr/function.var-dump.php
Ca t'affiche le contenu et le type de tes variables. Ca va permettre de voir aussi s'il n'y a pas un espace en trop.

Code :
1
2
3
 
echo '<pre>';
var_dump($lastname_memory, $lastname, $firstname_memory, $firstname);
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 16h17   #10
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
[Edit] Oups ! je retire ...
Donc :
if (Pierre != Roger ET Dupont != Durant) => OK (nom ET prénom différents)
if (Pierre != Roger ET Dupont != Dupont) => PAS OK (meme nom)
if (Pierre != Pierre ET Dupont != Durant) => PAS OK (meme prénom)

C'est ca ?
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 16h27   #11
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : octobre 2005
Messages : 117
Points : 29
Points : 29
le var_dump() me retourne systématiquement string(32) pour tous mes noms et prénoms....

Code :
1
2
3
4
5
6
7
var_dump($firstname_memory);
echo " - ";
var_dump($firstname);
echo " - ";
var_dump($lastname_memory);
echo " - ";
var_dump($lastname);
Me retourne :
string(32) "Daniel " - string(32) "Daniel " - string(32) "CHARTON " - string(32) "DUBUISSON "
JoN28fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 08h58   #12
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
Donc logiquement tu ne devrais pas rentrer dans ton if, vu que les 2 prénoms sont identiques.

Sauf si l'un des deux prénoms contient un caractère bizarre.
Pour le voir essaye de comparer leur valeur hexa avec bin2hex

Ou d'abord essaye de nettoyer tes variables avec trim
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 16h06   #13
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Tu devrais peut être faciliter au parseur la tâche en utilisant les parenthèses et être sur de ton coup :

Code :
1
2
 
if( ( $lastname_memory != $lastname ) && ( $firstname_memory != $firstname ) )
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h38.


 
 
 
 
Partenaires

Hébergement Web