Page 1 sur 1
if else qui fonctionne pas
Posté : 22 août 2005, 10:53
par Maitrepylos
Bonjour,
je récupère une valeur dans un bdd et j'essaie de faire un choix suivant cette valeur , mais il prend toujours le else
if ($cur[parcivilite]=="Monsieur")
{
$pdf->Rect(127, 87, 35, 35);
}
else
{
$pdf->Circle(144.5,104.5,17.5);
}
Merci de votre aide
MaitrePylos
Posté : 22 août 2005, 10:54
par ouckileou
avec des quotes autour de parcivilite peut-être :
$cur['parcivilite']
Posté : 22 août 2005, 11:32
par Maitrepylos
avec des quotes autour de parcivilite peut-être :
$cur['parcivilite']
Non plus, j'ai l'impression qu'il ne compare pas le Monsieur de la bdd avec celui que j'ai inscrit
if ($cur['parcivilite']=="Monsieur")
Posté : 22 août 2005, 11:34
par ouckileou
alors affiche avant ton test la variable $cur['parcivilite'] pour voir ce qu'il y a dedans
tu verras s'il y a un problème à ce niveau
Posté : 22 août 2005, 11:53
par Maitrepylos
l'echo de la varibale donne Monsieur!
la je ramme
Posté : 22 août 2005, 11:57
par ouckileou
vérifie la condition exécutée avec un simple echo plutôt qu'avec les fonctions
if ($cur['parcivilite'] == "Monsieur")
{
echo "Monsieur";
$pdf->Rect(127, 87, 35, 35);
}
else
{
echo "Madame";
$pdf->Circle(144.5,104.5,17.5);
}
sinon je ne vois pas...
Posté : 22 août 2005, 12:09
par Ripat
Un petit trim() sur la variable au cas où...
Posté : 22 août 2005, 12:44
par Maitrepylos
la réponse est Madame et trim ne donne rien de précis non plus
Posté : 22 août 2005, 13:15
par Ripat
Si
echo (int) ($cur['parcivilite'] == "Monsieur");
te donne 0, il y a certainement un caractère spécial dans ta chaîne $cur['parcivilite']
Petit test:
for ($i = 0; $i < strlen($cur['parcivilite']); $i++){
echo ord($cur['parcivilite']{$i}), ' - ';
}
echo '<hr />';
$var="Monsieur";
for ($i = 0; $i < strlen($var); $i++){
echo ord($var{$i}), ' - ';
}
Posté : 22 août 2005, 13:48
par Maitrepylos
Si
echo (int) ($cur['parcivilite'] == "Monsieur");
cela donne bien 0
for ($i = 0; $i < strlen($cur['parcivilite']); $i++){
echo ord($cur['parcivilite']{$i}), ' - ';
}
echo '<hr />';
$var="Monsieur";
for ($i = 0; $i < strlen($var); $i++){
echo ord($var{$i}), ' - ';
}
ceci donne
Code : Tout sélectionner
77 - 111 - 110 - 115 - 105 - 101 - 117 - 114 - 32 - 32 - 32 - 32 - 32 - 32 - 32 - 32 - 32 - 32 - 32 - 77 - 111 - 110 - 115 - 105 - 101 - 117 - 114 -
je suis sous linux et j'encode en utf8, cela ma déja posé des probléme peut-être ici aussi?
Posté : 22 août 2005, 15:29
par Ripat
Tu as simplement des espaces derrière ta variable.
Je suis étonné qu'un trim() ne fonctionne pas! Essaye, une fois encore:
echo (int) (trim($cur['parcivilite']) == "Monsieur");
Posté : 22 août 2005, 16:29
par Maitrepylos
T
Je suis étonné qu'un trim() ne fonctionne pas! Essaye, une fois encore:
echo (int) (trim($cur['parcivilite']) == "Monsieur");
Un grand merci cela fonctionne.
Je fais ceci et c'est nickel
if ((int) (trim($cur['parcivilite']) == "Monsieur"))
{
$pdf->Rect(127, 87, 35, 35);
}
else
{
$pdf->Circle(144.5,104.5,17.5);
}
A mon avis j'ai du mal faire la commande "trim".
merci pour votre aide.
MaitrePylos
Posté : 22 août 2005, 16:53
par Ripat
Le transtypage (int) n'est pas indispensable dans un if, fais simplement:
if (trim($cur['parcivilite']) == "Monsieur")
Ca ne change rien au résultat mais, c'est plus logique (c'est le mot!) et lisible.
Bonne continuation (et un petit résolu

)