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 21/04/2008, 10h38   #1
Membre à l'essai
 
Étudiant
Inscription : mars 2008
Messages : 80
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2008
Messages : 80
Points : 22
Points : 22
Par défaut Test conditionnel avec apostrophe

Bonjour,

Voilà j'ai un petit souci j'essaie de faire un test avec un if... jusque là, tout va bien...
Un de mes premiers tests est le suivant :

Code :
if ($lib == 'Tarif réduit'){echo" Accessible pour les -18ans, demandeurs d'emploi, 3ème âge, familles nombreuses (sous présentation d'une carte)."; }
Mais mon second test ne marche pas, à cause de l'apostrophe que contient ma variable $lib (que je peux afficher, mais simplement le if qui ne marche pas)

Code :
1
2
if ($lib == 'Carnet d'abonnement'){echo" Contient 6 places valables pendant un an.";
	}
Erwan M. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 10h46   #2
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Bonjour,

Deux possibilités :
- utiliser les guillemets doubles
- echapper l'apostrophe avec un antislash

http://thierrylhomme.developpez.com/php/ultra_php/
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 10h47   #3
Futur Membre du Club
 
Inscription : avril 2008
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 22
Points : 19
Points : 19
Simplement parce que tu fermes trop top ton expression à tester.
Ici ton if va tester si $lib == 'Carnet d'. En plus de cela, il ne comprendra pas pourquoi tu rajoutes après ça onnement. Si tu veux que ton test fonctionne, essaye avec des doubles quotes :

Code :
1
2
if ($lib == "Carnet d'abonnement"){echo" Contient 6 places valables pendant un an.";
	}
Flameo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 10h56   #4
Membre à l'essai
 
Étudiant
Inscription : mars 2008
Messages : 80
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2008
Messages : 80
Points : 22
Points : 22
J'ai bien testé les 2 solutions... que ce soit les guillemets doubles et l'antislash... aucun des deux ne me réécris ce dont j'ai besoin pour le Carnet d'abonnement...

Et c'est bien pour ça que je voulais savoir si vous aviez d'autres idées...
Erwan M. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 10h59   #5
Futur Membre du Club
 
Inscription : avril 2008
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 19
Points : 18
Points : 18
Fais un print $lib pour voir ce qu'il y a dedans
Dlteck2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 11h01   #6
Membre à l'essai
 
Étudiant
Inscription : mars 2008
Messages : 80
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2008
Messages : 80
Points : 22
Points : 22
Et c'est bien Carnet d'abonnement qui en ressort...

Je vois vraiment pas ce qui cloche, et ça me bloque...
Erwan M. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 11h10   #7
Futur Membre du Club
 
Inscription : avril 2008
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 19
Points : 18
Points : 18
Essaye

Code :
1
2
3
4
 
if ($lib == "Tarif réduit"){echo " Accessible pour les -18ans, demandeurs d'emploi, 3ème âge, familles nombreuses (sous présentation d'une carte)."; }
elseif ($lib == "Carnet d'abonnement"){echo " Contient 6 places valables pendant un an.";}
else {echo "Cherche un peut il doit y avoir une couille dans ton code.";}
Dlteck2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 11h14   #8
Membre à l'essai
 
Étudiant
Inscription : mars 2008
Messages : 80
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2008
Messages : 80
Points : 22
Points : 22
La couille dans mon code apparaît clairement pour le carnet d'abonnement...

Mais pourtant, ça me ressort bien ça quand je fais un echo... c'est à n'y rien comprendre...
Même en testant avec un switch, ça ne marche pas...
Erwan M. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 11h20   #9
Futur Membre du Club
 
Inscription : avril 2008
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 22
Points : 19
Points : 19
Où et comment initialises-tu $lib?
Flameo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 11h23   #10
Membre à l'essai
 
Étudiant
Inscription : mars 2008
Messages : 80
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2008
Messages : 80
Points : 22
Points : 22
Code :
1
2
3
4
5
$consultetarif = liste_tarifs();
while($info = mysql_fetch_array($consultetarif)):
$lib = $info['libelleTarif'];
echo $lib;
endwhile;
Et mon if, ou switch, se trouve à l'intérieur de ma boucle while, juste après l'echo $lib, qui, je répète, me ressort très bien mon carnet d'abonnement...
Erwan M. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 11h33   #11
Futur Membre du Club
 
Inscription : avril 2008
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 22
Points : 19
Points : 19
Essaie d'enlever les caractères qui peuvent poser problème dans ta chaîne, en commençant par le quote et en continuant par l'espace.
Utilises un str_replace sur ton $lib avant de faire ton test, et édites ton test qui devra(it) être comme ça :

Code :
if ($lib == "Carnetdabonnement"){
Flameo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 11h58   #12
Futur Membre du Club
 
Inscription : avril 2008
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 19
Points : 18
Points : 18
Arf, c'est vraiment pas terrible ce que tu fais !

Comment ont été saisies les infos dans la base ?
Il y a peut être eu un htmlspecialchars() ?

Faire un test sur du texte, c'est pas top, le mieux et de tester sur un chiffre (int).

Essaye

Code :
1
2
3
4
5
6
7
8
 
$consultetarif = liste_tarifs();
 
while($info = mysql_fetch_array($consultetarif)){
     $lib = $info['libelleTarif'];
     $lib = htmlspecialchars_decode($lib)
     echo $lib;
}
Dlteck2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 12h06   #13
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Citation:
Envoyé par Dlteck2000 Voir le message
Arf, c'est vraiment pas terrible ce que tu fais !
Comment ont été saisies les infos dans la base ?
...
Voilà la vraie question !
Déterminer les traitements par un test sur un libellé, c'est vraiment pas top.
Il faut tester sur un code, moins parlant mais plus strict, et tu peux ensuite récupérer le libellé par une simple table de correspondance.

--- edit ---
Sorry je m'enflamme, c'est exactement ce qui est prôné par Dlteck. Les grands esprits se rencontrent.
s.n.a.f.u 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 19h37.


 
 
 
 
Partenaires

Hébergement Web