PHP problème incompréhensible
PHP help !!
-
toto -
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"
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:
- PHP problème incompréhensible
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Retour à la ligne php ✓ - Forum PHP
- Alert php - Forum PHP
3 réponses
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" !
}
}
?>
<?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" !
}
}
?>