Version complète: sur le forum Webmaster Hub : requète MySQL & $_SESSION ?
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Nils
bonjour,

Je voudrais savoir s'il est possible de passer une variable de session dans une requète mysql ?

ligne qui marche :

$result = mysql_query("SELECT $email FROM qui_reserve")


ligne qui ne marche pas :

$result = mysql_query("SELECT $_SESSION['email'] FROM qui_reserve")


peut-on passer une variable $_SESSION dans une requète mysql ?

merci.
Nils.
petit-ourson
oui bien évidemment.
Nils
Bon, ok,

alors y aurait-il une erreur dans la ligne suivante ?
pour quelle ne marche pas ?


$result = mysql_query("SELECT $_SESSION['email'] FROM qui_reserve");


merci.
nils.
petit-ourson
"$_SESSION['email']" est bien un champ de "qui_reserve" ??
Anonymus
Tu veux quel champ de la table qui_reserve ?

En fait, lorsque tu mets $_SESSION['email'], ca te renvoie une donnée. C'est cette donnée qui doit correspondre au nom de la table. Si ca te renvoie une adresse mail, ca ne peut marcher.
Nils
re,

écoutes, j'ai relu tout ça, et ai mélangé trop de chose.

Je suis en train de mettre de l'ordre ...

Et je travail sur la structure, qui ($_SESSION['var']) est présent quand ...
etc.

Et comme je butte sur pleins de chose, ça ralenti tout !


En tout cas, oui, les variables de session marche dans une requète.
(je ne doutais pas de ton info, mais il fallait que je la fasse marcher !)

Comme je n'ai pas eu de formation PHP, je n'ai pas les bons automatismes et je galère pas mal ...

encore merci.

à plus.
Nils.
petit-ourson
Rien compris mais bon si tu as pu trouver ton bonheur ici, c'est le principal.
Nils
moi non plus j'y comprends plus rien !

un coup ça marche, un coup ça marche plus.

Impossible d'avoir un truc carré !


j'espère qu'à la soirée du 26, qq pourra m'éclaircir tout ça de vive voix ...

Les variables de session appelées dans des pages appelées par des <balises> ou par des include_once().


à+,
Nils.
bigornot
Je pense que ce qu'il te faut, c'est plus un WHERE, non ?
Dan
Nils,

Je pense que la soirée du 26 ne va pas servir à faire des cours de php smile.gif
Qu'as-tu comme contenu de la variable $_SESSION['email'] ?

S'il s'agit d'autre chose qu'un champ de la table, cela ne pourra pas marcher. Il FAUT qu'à cet endroit de la requête select le nom d'un ou plusieurs champs de la table apparaissent , comme dans:

CODE
select champ1, champ2,..., champn  from table where [condition].....


Dan

PS: merci d'éviter les double interlignes systématiques dans tes posts, ils rendent le texte difficile à lire. smile.gif
Nils
Dan,

Tu as bien raison !
Le 26 n'est pas là pour être un cours, on est bien d'accord !!!
(Mais des fois on est tellement perdu que ...)

Bon, pour les sauts de ligne, c'est vrai c'est une mauvaise habitude que j'ai, toujours envie que ce soit lisible, du coup, j'arrive au contraire de l'effet désiré. blink.gif

Bon, sinon, j'ai mélangé beaucoup trop de choses dans ma petite tête à un moment donné. Et effectivement, ma requète sql, après relecture, ne ressemblait plus à rien !

Enfin, maintenant, ça commence à être plus propre et à fonctionner.
Pourvu que ça dure.
Ces dernières semaines j'ai cummulé les problèmes et difficultés (hd HS, MS en vrac, alors passé sous Linux que je maîtrise pas encore etc ...)

Mais bon, tant qu'il y a du code, ya de l'espoir ....

(C'est plus lisible ? C'est à dire qu'à chaque fois que je change de thème, je saute une ligne, je dois sûrement parler de trop de trucs à la fois !)

à bientôt.
Nils.
Nils
re,

je reviens avec mon problème de syntaxe dans une fonction myslq_query()

la ligne suivante fonctionne, alors que celle d'après non, qq a-t'il une idée ?
mysql_query("SELECT date_resa, nom_passager, status FROM infos_resa WHERE num_enreg_QR='$autonum_QR'");
mysql_query("SELECT date_resa, nom_passager, status FROM infos_resa WHERE num_enreg_QR='$_SESSION['autonum_QR']'");

Il semble que mysql_query() n'arrive pas à interpréter ce que j'écris dans la 2ième ligne.

Merci. Nils.
Anonymus
Normal, il se mélange les pinceaux entre les ' et les " et le tableau, etc..
En gros, quand tu mets :
name='$_SESSION['nom']' il ne sait pas s'il doit mettre le résultat de $_SESSION, soit Array, ce qui donnerait :
name='Array['nom']', ou s'il doit trouver la variable correspondant à $_SESSION['nom']

Bref, en gros, il faut mettre :
CODE
mysql_query("SELECT date_resa, nom_passager, status FROM infos_resa WHERE num_enreg_QR='".$_SESSION['autonum_QR']."'");
Nils
Merci Nico,

pourquoi faut-il des . entre les " ? il me semble que ça sert à concaténer, mais quoi ici ?

Une autre question du même acabi, j'ai un fichier que j'appelle par un include_once() au début de mon site, il contient :
define ('BASE', 'resa_fls');

après l'avoir inclu une fois (au début), je fais appel à une fonction qui contient: mysql_select_db(BASE);
qui répond : no database selected, un echo BASE; ne donne rien non plus (=> BASE et pas resa_fls). Et pourtant j'ai lu que les constantes étaient accessibles tout le temps.

Si tu peux me dire comment utiliser les constantes dans des fonctions mysql (ou ailleurs) ?
(j'ai vu sur un autre forum qq qui utlisait des ` (quotes inverses) ,est-ce là la solution ?
Merci, Nils.
martin
Tout à fai d'accord avec Anonymus.
Pour ce qui est de la concaténation, cela permet d'inclure une chaine à la suite d'une autre. mais dans ce cas pas besoin d'échapper cetains caractères. Alors que si ta variable est inserée dans une chaine, elle sera traitée, et si ele contient des quotes ou double quotes, cela risque de poser problème.
Anonymus
Pour ce qui est de ta constante, tu devrais essayer, juste après l'appel à la fonction define, un echo.
Ca doit donner :
CODE
define('BASE','resa_fls');
echo BASE;
Si ca ne marche pas, essaies de voir si l'echo marche.
CODE
echo"<br>Constante BASE :".BASE.".";

Ca doit afficher
CITATION
Constante BASE :resa_fls.

Si tu n'as pas cette ligne, c'est que la constante ne s'affiche pas.
Si tu n'as pas au moins cette ligne :
Constante :.
cela signifie que la fonction n'est pas prise en compte. Ca peut etre du à plusieurs raisons :
- on croit qu'il y a un include, mais il n'y en a pas,
- la fonction est en commentaires, exemple :
/* define ('BASE','resa_fls'); */
- il y a une gestion des 'buffers', avec des fonctions telles que 'flush', etc.. qui font que l'affichage est retardé, mais.. annulé avant d'être envoyé au navigateur,
- autres (ca peut venir de pas mal d'autres choses... biggrin.gif )

Mets des 'espions', des 'témoins', qui affichent la variable un peu plus loin, etc.. pour voir quels fichiers sont appelés. Exemple :
CODE
echo"<br> Le programme passe par le fichier connexion.php";

que tu mets au début du fichier inclus, et qui te permet de savoir que le fichier est bien inclus..
Le mieux étant encore cette solution :
CODE
echo"<br> Le programme passe par le fichier connexion.php";
die("");


qui arrète l'execution du programme, et évite les problèmes de <div> hidden, les problèmes d'affichage retardé avec flush, etc..

Nico.
Nils
encore ... merci !

Bon, en fait, j'ai résolu mon problème entre temps (en mettant des echos partout comme tu me l'as suggéré !), en fait, je ne sais pas s'il est résolu, mais la parade à été de mettre au début de mon fichier de fonctions, include_once('mes_constantes.php'), et avec ça, ça marche, est-ce une parade ou une correction, je ne sais pas ...
Mais la syntaxe était finalement bonne, il manquait l'include(mes_constantes), ce qui est curieux c'est que j'ai lu que les constantes devaient pouvoir être lues tout le long du code ... mais en fait, je ne sais pas bien ce que cela veut dire ? Quand est-ce qu'il s'arrête ? Quand on quitte IE, ou quand on appelle une autre page par de l'html ?

Merci pour le die(""); c'est une bonne idée !

à+, Nils.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.