Page 1 sur 1

Probleme filtre de requete sur session

Posté : 25 juin 2007, 19:11
par Chile
Bonjour,
J'ai un petit soucis:
J'execute une requete (avec DW), avec comme filtre une session ($_SESSION['track']).
Le probleme est que meme avec la session vide, ma requete recherche des données dans ma base et me l'affiche.
session_start();
$colname_enr_affilie = "1";
if (isset($_SESSION['track'])) {
  $colname_enr_affilie = (get_magic_quotes_gpc()) ? $_SESSION['track'] : addslashes($_SESSION['track']);
}
mysql_select_db($database_mabase, $mabase);
$query_enr_affilie = sprintf("SELECT * FROM affilies WHERE track = '%s'", $colname_enr_affilie);
$enr_affilie = mysql_query($query_enr_affilie, $mabase) or die(mysql_error());
$row_enr_affilie = mysql_fetch_assoc($enr_affilie);
$totalRows_enr_affilie = mysql_num_rows($enr_affilie);
et un peu plus bas
if (!isset($_SESSION['track'])) 
{
 $_SESSION['track']="";
  }
   else
    {
	 $affilie_track=$row_enr_affilie['nom'];
	 $email3=$row_enr_affilie['email'];
	 $track=$_SESSION['track'];
	}
J'ai fait un test d'afichage de ces 3 données...

Lorsque qu'il a une donnée en memoire dans la session il m'affiche bien la session, l'email et le nom lié a cette session. Par contre : Lorsque la session est vide il m'affiche tout de meme le nom et l'email de la premiere dans la base. je bute !! :cry:

Posté : 25 juin 2007, 23:51
par zeus
Actuellement, ton code fait la chose suivante

Code : Tout sélectionner

Si la variable de session existe Alors récupérer la valeur de cette variable Finsi Exécuter la requete Afficher les résultats
Alors que, selon tes explications, il devrait être

Code : Tout sélectionner

Si la variable de session existe Alors Récupérer la valeur de cette variable Exécuter la requête Afficher les résultats Finsi
Il ne te reste plus qu'a essayer de modifier ton code selon ce nouvel algo ;)

Posté : 26 juin 2007, 01:15
par Chile
salut Zeus,
J'ai mis en place ce que tu m'a dit (si j'ai bien compris),
mais ca me fait pareil...la variable track est vide
mais il va tout de meme me chercher le mail et le nom de la premiere ligne de ma base...
if (isset($_SESSION['track'])) {
  $colname_enr_affilie_track= (get_magic_quotes_gpc()) ? $_SESSION['track'] : addslashes($_SESSION['track']);

mysql_select_db($database_mabase, $mabase);
$query_enr_affilie_track= sprintf("SELECT * FROM affilies WHERE track = '%s'", $colname_enr_affilie_track);
$enr_affilie_track= mysql_query($query_enr_affilie_track, $mabase) or die(mysql_error());
$row_enr_affilie_track= mysql_fetch_assoc($enr_affilie_track);
$totalRows_enr_affilie_track= mysql_num_rows($enr_affilie_track);
	 $affilie_track=$row_enr_affilie_track['nom'];
	 $email4=$row_enr_affilie_track['email'];
	 $track=$_SESSION['track'];
}
en clair ce que j'essaye de faire est de verifier si la variable de session $_SESSION['track'] embarque une donnée, et si oui, recuperer l'email d'un affilie dans ma base avec cette variable de session $_SESSION['track'] qui sera egale à la colonne track !
C'est pas ma première requete, mais j'avoue que celle-ci m'épuise...

après 2h00...

il semble que j'ai trouvé l'origine du probleme !!
j'ai éliminé ce genre ce genre code :
 if (!isset($_SESSION['track'])) $_SESSION['track']="";
avec ce code je pensais confirmer que la variable est bien vide...
et sans ce code en amont il semble que ma variable de session est enfin reconnue vide si elle l'est ! :?
si qlq peut me donner une petite explication sur la fonction de ce code ?
merci

Posté : 26 juin 2007, 11:21
par Ryle
Et pourquoi ne pas tout simplement modifier ton test :

Code : Tout sélectionner

Si la variable de session existe Alors
en

Code : Tout sélectionner

Si la variable de session existe ET qu'elle n'est pas vide Alors
:)

Il y a une différence entre une variable non définie et une variable vide (qui est de fait définie)
$var1 = '';
$var2 = 'xxx';

isSet($var1); // => vrai
isSet($var2); // => vrai
isSet($var3); // => faux

$var1 == ''; // => vrai
$var2 == ''; // => faux 
$var3 == ''; // => erreur : variable non définie