Problème comparaison de deux variables

Résolu/Fermé
Aquecomprendpas - 2 févr. 2010 à 17:07
 Aquecomprendpas - 2 févr. 2010 à 21:47
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.
A voir également:

8 réponses

3wlabs Messages postés 17 Date d'inscription lundi 1 février 2010 Statut Membre Dernière intervention 4 février 2010 1
2 févr. 2010 à 21:11
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

@+
1
Aquecomprendpas
2 févr. 2010 à 21:47
Ça marche nickel.
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 ;).
0
jona303 Messages postés 369 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 janvier 2013 28
2 févr. 2010 à 17:28
moi j'ai l'impression que tu n'as pas besoin de 3 "=" ici
if ($_POST['session'] === $session_comp)
0
Aquecomprendpas
2 févr. 2010 à 17:38
Cela me donne la même chose avec deux ou trois égales.
0
jona303 Messages postés 369 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 janvier 2013 28
2 févr. 2010 à 18:25
dans ce cas la fais du débug,..
fais des echos un peu partout pour comprendre ce qu'il se passe.. ;)
0
Aquecomprendpas
2 févr. 2010 à 19:07
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
3wlabs Messages postés 17 Date d'inscription lundi 1 février 2010 Statut Membre Dernière intervention 4 février 2010 1
2 févr. 2010 à 19:05
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!
0
Aquecomprendpas
2 févr. 2010 à 19:14
Ça me donne:

Erreur SQL !
Resource id #2
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #2' at line 1
0
3wlabs Messages postés 17 Date d'inscription lundi 1 février 2010 Statut Membre Dernière intervention 4 février 2010 1
2 févr. 2010 à 19:18
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";
}

@+
0
Aquecomprendpas
2 févr. 2010 à 19:54
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
0
3wlabs Messages postés 17 Date d'inscription lundi 1 février 2010 Statut Membre Dernière intervention 4 février 2010 1
2 févr. 2010 à 20:08
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

@+
0
Aquecomprendpas
2 févr. 2010 à 20:17
-- phpMyAdmin SQL Dump
-- version 3.1.5
-- https://www.phpmyadmin.net/
0
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 975
2 févr. 2010 à 21:33
Y' a encore plus simple, modifie le a ta sauce:


<?php
if(isset($_SESSION['pseudo']) && ($_SESSION['pseudo'] == $tavariablesession)
{
echo 'Yatoutbon';
echo '</div>';
}
else
{
echo 'yapas';
}
?>


Si j' ai bien compris ton souci :)
0