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 :wink: )