Problème comparaison de deux variables
Résolu
Aquecomprendpas
-
Aquecomprendpas -
Aquecomprendpas -
Bonjour à tous,
Merci d'avance pour l'aide que vous allez m'apporter.
Je fais du PHP depuis quelques temps mais je reste encore un débutant. Depuis quelques jours je bute sur un problème dont voici le code:
$Nb = 0; //Initialise la variable Nb à 0
$id = mysql_query("SELECT * FROM dywam_users WHERE id='$Nb'"); //Récupère la première entrée de la table dans la variable id
$session_compa = mysql_fetch_array($id); //Mets cette première entrée dans une array
$session_comp = $session_compa['session']; //Mets dans la variable session_comp la case session de l'array
while ($Nb <= 100 AND $session_comp != $_POST['session']) //Boucle tant que la case session est différente de la valeur session de l'adresse avec au max lecture dans les 100 premières entrées
{
$Nb++; //Incrémente la variable à Nb+1
$id = mysql_query("SELECT * FROM dywam_users WHERE id='$Nb'"); //Récupère l'entrée Nb+1 de la table dans la variable id
$session_compa = mysql_fetch_array($id); //Mets cette entrée Nb+1 dans une array
$session_comp = $session_compa['session']; //Mets dans la variable session_comp la case session de l'array
}
if ($_POST['session'] === $session_comp) //Si et seulement si il trouve dans la table une case session identique à la valeur session de l'adresse
{
echo "blabla";
}
else //Si il ne trouve pas dans la table une case session identique à la valeur session de l'adresse
{
echo "yapas";
}
Le but de cette portion de code est d'aller voir si on a une case "session" dans une des entrées de la table "dywam_user" de ma base de donnée identique à la valeur "session" indiquer dans l'adresse. Si on en a une, afficher le texte "blabla", sinon afficher le texte "yapas".
Or, dans tout les cas, ma page affiche "blabla". J'ai l'impression que n'importe quel que soit la valeur du "session" indiqué dans l'adresse, il prend en compte qu'il est identique à la case "session" de la première entrée de ma table.
Donc si quelqu'un pouvait m'indiquer ce qui ne va pas dans mon code et m'aider à le corriger, encore une fois merci d'avance.
Merci d'avance pour l'aide que vous allez m'apporter.
Je fais du PHP depuis quelques temps mais je reste encore un débutant. Depuis quelques jours je bute sur un problème dont voici le code:
$Nb = 0; //Initialise la variable Nb à 0
$id = mysql_query("SELECT * FROM dywam_users WHERE id='$Nb'"); //Récupère la première entrée de la table dans la variable id
$session_compa = mysql_fetch_array($id); //Mets cette première entrée dans une array
$session_comp = $session_compa['session']; //Mets dans la variable session_comp la case session de l'array
while ($Nb <= 100 AND $session_comp != $_POST['session']) //Boucle tant que la case session est différente de la valeur session de l'adresse avec au max lecture dans les 100 premières entrées
{
$Nb++; //Incrémente la variable à Nb+1
$id = mysql_query("SELECT * FROM dywam_users WHERE id='$Nb'"); //Récupère l'entrée Nb+1 de la table dans la variable id
$session_compa = mysql_fetch_array($id); //Mets cette entrée Nb+1 dans une array
$session_comp = $session_compa['session']; //Mets dans la variable session_comp la case session de l'array
}
if ($_POST['session'] === $session_comp) //Si et seulement si il trouve dans la table une case session identique à la valeur session de l'adresse
{
echo "blabla";
}
else //Si il ne trouve pas dans la table une case session identique à la valeur session de l'adresse
{
echo "yapas";
}
Le but de cette portion de code est d'aller voir si on a une case "session" dans une des entrées de la table "dywam_user" de ma base de donnée identique à la valeur "session" indiquer dans l'adresse. Si on en a une, afficher le texte "blabla", sinon afficher le texte "yapas".
Or, dans tout les cas, ma page affiche "blabla". J'ai l'impression que n'importe quel que soit la valeur du "session" indiqué dans l'adresse, il prend en compte qu'il est identique à la case "session" de la première entrée de ma table.
Donc si quelqu'un pouvait m'indiquer ce qui ne va pas dans mon code et m'aider à le corriger, encore une fois merci d'avance.
A voir également:
- Problème comparaison de deux variables
- Comparaison million milliard - Accueil - Technologies
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Deux whatsapp sur un téléphone - Guide
8 réponses
Chez moi ça marche trés bien
Quand je met 'mp2ZobC4ssn' pour $_POST['session'] il me dit bien "blabla". Sinon ça donne "yapas" .
Veille à bien vérifier ce que contient $_POST['session']
avec ceci
$trouver = false ;
$sql = ("SELECT * FROM dywam_users LIMIT 100");
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($data = mysql_fetch_array($req)) {
$session_comp = $data['session'] ;
echo '"'.$_POST['session']. '" => "' . $session_comp. '"<br />' ;
if ($_POST['session'] === $session_comp) {
$trouver = true;
break ;
}
}
if ($trouver == true) {
echo "blabla";
} else {
echo "yapas";
}
Attention! L'égalité est sensible à la casse des caractères ( 'A' == 'a' ) renvoie false
@+
Quand je met 'mp2ZobC4ssn' pour $_POST['session'] il me dit bien "blabla". Sinon ça donne "yapas" .
Veille à bien vérifier ce que contient $_POST['session']
avec ceci
$trouver = false ;
$sql = ("SELECT * FROM dywam_users LIMIT 100");
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($data = mysql_fetch_array($req)) {
$session_comp = $data['session'] ;
echo '"'.$_POST['session']. '" => "' . $session_comp. '"<br />' ;
if ($_POST['session'] === $session_comp) {
$trouver = true;
break ;
}
}
if ($trouver == true) {
echo "blabla";
} else {
echo "yapas";
}
Attention! L'égalité est sensible à la casse des caractères ( 'A' == 'a' ) renvoie false
@+
dans ce cas la fais du débug,..
fais des echos un peu partout pour comprendre ce qu'il se passe.. ;)
fais des echos un peu partout pour comprendre ce qu'il se passe.. ;)
J'ai rajouté la ligne suivante juste avant le while, à l'intérieur du while et à l'intérieur du if:
echo 'Nb:' . $Nb . '/id:' . $id . '/session_compa:' . $session_compa . '/session:' . $session . '<br>';
Comme réponse avant le while, j'ai:
Nb:0/id:Resource id #2/session_compa:/session:nJRMQVJd5
A l'intérieur du while:
Rien ne s'affiche.
A l'intérieur du if:
Nb:0/id:Resource id #2/session_compa:/session:nJRMQVJd5
Soit la même chose qu'avant le while.
En tout cas je te remercis de m'aider.
echo 'Nb:' . $Nb . '/id:' . $id . '/session_compa:' . $session_compa . '/session:' . $session . '<br>';
Comme réponse avant le while, j'ai:
Nb:0/id:Resource id #2/session_compa:/session:nJRMQVJd5
A l'intérieur du while:
Rien ne s'affiche.
A l'intérieur du if:
Nb:0/id:Resource id #2/session_compa:/session:nJRMQVJd5
Soit la même chose qu'avant le while.
En tout cas je te remercis de m'aider.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Perso je l'aurai tourné de cette manière
$trouver = false ;
$sql = mysql_query("SELECT * FROM dywam_users LIMIT 100");
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($data = mysql_fetch_array($req)) {
$session_comp = $data['session'] ;
if ($_POST['session'] === $session_comp) {
$trouver = true;
break ;
}
}
if ($trouver == true) {
echo "blabla";
} else {
echo "yapas";
}
Bonne continuation!
$trouver = false ;
$sql = mysql_query("SELECT * FROM dywam_users LIMIT 100");
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($data = mysql_fetch_array($req)) {
$session_comp = $data['session'] ;
if ($_POST['session'] === $session_comp) {
$trouver = true;
break ;
}
}
if ($trouver == true) {
echo "blabla";
} else {
echo "yapas";
}
Bonne continuation!
Ha désolé,
mauvais copier collé.
$trouver = false ;
$sql = ("SELECT * FROM dywam_users LIMIT 100");
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($data = mysql_fetch_array($req)) {
$session_comp = $data['session'] ;
if ($_POST['session'] === $session_comp) {
$trouver = true;
break ;
}
}
if ($trouver == true) {
echo "blabla";
} else {
echo "yapas";
}
@+
mauvais copier collé.
$trouver = false ;
$sql = ("SELECT * FROM dywam_users LIMIT 100");
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($data = mysql_fetch_array($req)) {
$session_comp = $data['session'] ;
if ($_POST['session'] === $session_comp) {
$trouver = true;
break ;
}
}
if ($trouver == true) {
echo "blabla";
} else {
echo "yapas";
}
@+
Malheureusement là c'est l'inverse par rapport à ma version, même quand la valeur est bien identique il m'envoit vers le else.
En rajoutant des echo un peu partout:
trouver1:/sql1:SELECT * FROM dywam_users LIMIT 100/req1:Resource id #2
trouver2:/sql2:SELECT * FROM dywam_users LIMIT 100/req2:Resource id #2/data2:Array/session_comp2:FEXiETBBjFa
trouver2:/sql2:SELECT * FROM dywam_users LIMIT 100/req2:Resource id #2/data2:Array/session_comp2:
trouver5:/sql5:SELECT * FROM dywam_users LIMIT 100/req5:Resource id #2/data5:/session_comp5:/POST5:
1. avant le while
2. avant le if à l'intérieur du while
3. dans le if à l'intérieur du while (ne s'affiche pas à l'écran)
4. à l'intérieur du if (ne s'affiche pas l'écran)
5. à l'intérieur du else
En rajoutant des echo un peu partout:
trouver1:/sql1:SELECT * FROM dywam_users LIMIT 100/req1:Resource id #2
trouver2:/sql2:SELECT * FROM dywam_users LIMIT 100/req2:Resource id #2/data2:Array/session_comp2:FEXiETBBjFa
trouver2:/sql2:SELECT * FROM dywam_users LIMIT 100/req2:Resource id #2/data2:Array/session_comp2:
trouver5:/sql5:SELECT * FROM dywam_users LIMIT 100/req5:Resource id #2/data5:/session_comp5:/POST5:
1. avant le while
2. avant le if à l'intérieur du while
3. dans le if à l'intérieur du while (ne s'affiche pas à l'écran)
4. à l'intérieur du if (ne s'affiche pas l'écran)
5. à l'intérieur du else
Peux tu poster un exportation sql de ta table avec les champs id et session.
je vais tester sur mon serveur, ça me permettrai d'en savoir plus sur ce code
@+
je vais tester sur mon serveur, ça me permettrai d'en savoir plus sur ce code
@+
En faite, je passais par une méthode GET et non par un POST, voilà pourquoi cela ne marchais pas. C'est ton dernier code qui affichait la valeur $_POST['session'] qui m'a fait tilté comme je voyais rien s'afficher.
En tout cas merci beaucoup pour le temps que tu as passé sur mon problème ;).