Aller au contenu

requète MySQL & $_SESSION ?


Nils

Sujets conseillés

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Nils,

Je pense que la soirée du 26 ne va pas servir à faire des cours de php :)

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:

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. :)

Lien vers le commentaire
Partager sur d’autres sites

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:

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 :

mysql_query("SELECT date_resa, nom_passager, status FROM infos_resa WHERE num_enreg_QR='".$_SESSION['autonum_QR']."'");

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Pour ce qui est de ta constante, tu devrais essayer, juste après l'appel à la fonction define, un echo.

Ca doit donner :

define('BASE','resa_fls');
echo BASE;

Si ca ne marche pas, essaies de voir si l'echo marche.

echo"
Constante BASE :".BASE.".";

Ca doit afficher

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... :D )

Mets des 'espions', des 'témoins', qui affichent la variable un peu plus loin, etc.. pour voir quels fichiers sont appelés. Exemple :

echo"
 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 :

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...