PHP problème incompréhensible

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"
Configuration: Windows XP
Firefox

3 réponses

  1. tes boucle doivent passé trop vite met un tempo pour voir apré un text
    1
    1. 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
      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