PHP problème incompréhensible

PHP help !! -  
 toto -
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. arkos78 Messages postés 662 Statut Membre 48
     
    tes boucle doivent passé trop vite met un tempo pour voir apré un text
    1
  2. hamza_bba Messages postés 82 Statut Membre 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
  3. toto
     
    Bonjour

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