PHP problème incompréhensible

Fermé
PHP help !! - 9 sept. 2008 à 16:26
 toto - 9 sept. 2008 à 16:36
Bonjour,

Dans le code ci-dessous, quelque-soit la valeur de la variable $Role, c'est la dernière boucle qui est systématiquement exécutée. POURQUOI ?

Quelques précisions :
- $Role peut prendre les valeurs "P" ou "C".
- d'autres variables sont passées à cette fonction mais je les ai supprimées pour une meilleure visibilité car elles sont indépendantes de ce pb.
- IMPORTANT : ce code est contenu dans un fichier PHP appelé par du javascript (AJAX). Quand j'ouvre directement le fichier PHP en mettant ?Role=P à la fin de l'url, ça fonctionne ! Il y a peut-être un truc avec Ajax... vos conseils sont les bienvenus, voilà plus d'un mois que je bloque à cause de ce problème.
- le problème est le même quel que soit le navigateur.

<?php
function f($Role){
echo ("Role = ".$Role); // ce check affiche "P"
$r = "ici une requête SQL";

if ($Role == "P"){
echo("boucle engagée : P");
$r = $r."ici suite de la requête SQL";
}

elseif ($Role == "C"){
echo("boucle engagée : C");
$r = $r."ici suite de la requête SQL";
}

else{ // cette boucle ne devrait jamais s'exécuter... mais c'est la seule qui s'exécute systématiquement
echo("boucle engagée : P ou C");
echo(" et Role = ".$Role); // ce check affiche toujours "P" !
}
}
?>

Le résultat est donc toujours "boucle engagée : P ou C et Role = P"
A voir également:

3 réponses

arkos78 Messages postés 618 Date d'inscription mardi 4 décembre 2007 Statut Membre Dernière intervention 3 septembre 2009 48
9 sept. 2008 à 16:28
tes boucle doivent passé trop vite met un tempo pour voir apré un text
1
hamza_bba Messages postés 78 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 6 août 2009 1
9 sept. 2008 à 16:32
essaye cette solution :


<?php
function f($Role){
echo ("Role = ".$Role); // ce check affiche "P"
$r = "ici une requête SQL";

if (($Role == "P") || ($Role == "C")) {

if ($Role == "P"){
echo("boucle engagée : P");
$r = $r."ici suite de la requête SQL";
}

if ($Role == "C"){
echo("boucle engagée : C");
$r = $r."ici suite de la requête SQL";
}

}
else{ // cette boucle ne devrait jamais s'exécuter... mais c'est la seule qui s'exécute systématiquement
echo("boucle engagée : P ou C");
echo(" et Role = ".$Role); // ce check affiche toujours "P" !
}
}
?>
1
Bonjour

j'insérerais bien un petit echo strlen($Role) pour voir s'il n'y a pas un espace qui traîne...
0