Mysql selection liées avec (les sessions)
glodybiss
Messages postés
440
Date d'inscription
Statut
Membre
Dernière intervention
-
glodybiss Messages postés 440 Date d'inscription Statut Membre Dernière intervention -
glodybiss Messages postés 440 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une petit application conçu en php avec une base des données mysql; ce que j'aimerais faire alors il s'agit donc de catégoriser les utilisateurs par ville, l'utilisateur de la ville de brazzaville ne peut que voir les clients enregistrés dans la base des données mais qui sont dans la ville de brazzaville, l'utilisateur de Libreville ne peut que voir les clients enregistrés avec comme ville Libraville, ainsi de suite pour toute les villes enregistrés.
Alors actuellement, l'application fonctionne mais les utilisateurs voient tous les clients de toute les villes, alors je ne sais pas quelle requette utiliser soit si quelqu'un à une idée il peut m'aider.
Pour la table User dans ma base des données il y a un champ ville et pour les clients aussi.
Voici le code qui me permet d'afficher les clients enregistrés dans la base des données mais j'aimerais que lors de cette requet à partir de la variable session qu'on verifie dans la table de l'utilisateur connecté si la ville est égal à Kinshasa = dans la requet que seul les clients dont les villes est égal à Kinshasa dans la table des clients soit afficher.
Merci d'avance
J'ai une petit application conçu en php avec une base des données mysql; ce que j'aimerais faire alors il s'agit donc de catégoriser les utilisateurs par ville, l'utilisateur de la ville de brazzaville ne peut que voir les clients enregistrés dans la base des données mais qui sont dans la ville de brazzaville, l'utilisateur de Libreville ne peut que voir les clients enregistrés avec comme ville Libraville, ainsi de suite pour toute les villes enregistrés.
Alors actuellement, l'application fonctionne mais les utilisateurs voient tous les clients de toute les villes, alors je ne sais pas quelle requette utiliser soit si quelqu'un à une idée il peut m'aider.
Pour la table User dans ma base des données il y a un champ ville et pour les clients aussi.
Voici le code qui me permet d'afficher les clients enregistrés dans la base des données mais j'aimerais que lors de cette requet à partir de la variable session qu'on verifie dans la table de l'utilisateur connecté si la ville est égal à Kinshasa = dans la requet que seul les clients dont les villes est égal à Kinshasa dans la table des clients soit afficher.
if $_SESSION ['ville'] = $data['ville'] $query = "SELECT * FROM 'client' WHERE ville = $data['ville']"; $result = mysql_query($query);
Merci d'avance
A voir également:
- Mysql selection liées avec (les sessions)
- Mysql community server - Télécharger - Bases de données
- Veuillez ouvrir une session avec les privilèges du gestionnaire ✓ - Forum Windows
- L'indice n'appartient pas à la sélection vba ✓ - Forum VB / VBA
- Veuillez ouvrir une session avec les privilèges de gestionnaire - Forum Windows 10
- Illustrator cadre de sélection disparu ✓ - Forum Illustrator
4 réponses
bonjour,
je n'ai pas trop compris, mais bon faut dire que je l'ai lu en diagonale. Déjà je tombe sur ça
if $_SESSION ['ville'] = $data['ville']
ce n'est pas une condition en php
je n'ai pas trop compris, mais bon faut dire que je l'ai lu en diagonale. Déjà je tombe sur ça
if $_SESSION ['ville'] = $data['ville']
ce n'est pas une condition en php
Bonjour,
eone2 a raison, il ne faut pas mélanger les langages comme ça. Au lieu de tes premières lignes, tu peux faire ça :
fait un echo $query ensuite, pour vérifier que la requête est bien formulée comme tu le penses.
eone2 a raison, il ne faut pas mélanger les langages comme ça. Au lieu de tes premières lignes, tu peux faire ça :
$query = "SELECT * FROM 'client' WHERE ville = ".$_SESSION['ville'];
fait un echo $query ensuite, pour vérifier que la requête est bien formulée comme tu le penses.
Merci de votre aide, Assassin tu es partout où je pose :) merci
J'ai ce message mais la liste ne s'affiche pas
et voici la ligne 29 de mon code
J'ai ce message mais la liste ne s'affiche pas
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\wimaxcustomer\liste_wimaxsite.php on line 29
et voici la ligne 29 de mon code
$query = "SELECT * FROM 'wimax_site' WHERE ville ='.$_SESSION ['ville'].'";
=)
Attention à ta syntaxe. Si tu es avec wamp, tu peux vérifier ta syntaxe (qui sortiras avec un echo) dans l'onglet SQL en collant simplement la phrase.
Un petit truc sur la syntaxe donc, pour pas te laisser galérer à chaque fois.
Tes guillemets " marquent le string de la requête totale(qui sera interprété plus tard)
Tes simple quote ' marquent un string dans ta requête finale.
Tes points . marquent la concaténation entre tes variables php et ton string final.
Au final, je pense que ta requête devrait être formulée ainsi :
(je t'ai mis des espaces entre les différentes quotes à la fin pour que tu les visualises bien, ainsi que leur ordre, mais je pense qu'il faudra les enlever ces espaces)
Attention à ta syntaxe. Si tu es avec wamp, tu peux vérifier ta syntaxe (qui sortiras avec un echo) dans l'onglet SQL en collant simplement la phrase.
Un petit truc sur la syntaxe donc, pour pas te laisser galérer à chaque fois.
Tes guillemets " marquent le string de la requête totale(qui sera interprété plus tard)
Tes simple quote ' marquent un string dans ta requête finale.
Tes points . marquent la concaténation entre tes variables php et ton string final.
Au final, je pense que ta requête devrait être formulée ainsi :
$query = "SELECT * FROM 'wimax_site' WHERE ville =' ".$_SESSION ['ville']." ' ";
(je t'ai mis des espaces entre les différentes quotes à la fin pour que tu les visualises bien, ainsi que leur ordre, mais je pense qu'il faudra les enlever ces espaces)
Merci pour ce rappel pour te dire vrai il n'y a pas une chose qui me complique comme les concaténations, merci beaucoup!
Concernant cette requette
Si tu peux me venir en aide, peut être que j'ai mal penser à la requette!
Concernant cette requette
$query = "SELECT * FROM 'wimax_site' WHERE ville =' ".$_SESSION ['ville']." ' ";je reçois la même erreur mais
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\wimaxcustomer\liste_wimaxsite.php on line 29mais je voulais aussi t'éclaircir sur un point; ce que j'aimerais avoir c'est que quand un user qui se trouve à Kinshasa veut afficher la liste des clients que la liste qui apparaîtra ne soit que la liste des clients qui sont à Kinshasa et cela correspond pour les users des autres ville.
Si tu peux me venir en aide, peut être que j'ai mal penser à la requette!
Reprenons les bases.
- tu t'es connecté à la base de données avant ?
- tu as bien une table nommée wimax_site ?
- avant ta $query, fait un echo $_SESSION ['ville']; et regarde ce que ça donne.
- ce qui est dans ta variable de session, c'est quoi exactement ? Il y a des guillemets/accents/caractères spéciaux ?
- tu t'es connecté à la base de données avant ?
- tu as bien une table nommée wimax_site ?
- avant ta $query, fait un echo $_SESSION ['ville']; et regarde ce que ça donne.
- ce qui est dans ta variable de session, c'est quoi exactement ? Il y a des guillemets/accents/caractères spéciaux ?
Salut !
Question sécurité, je te conseil d'utiliser les requêtes préparés de PDO, et ça sera plus clair après car tu n'aura pas a concaténer(ce qui te pose problème) !
Donc, au lieux de faire ...
Tu va faire ...
-------------------------------------
Concernant les requêtes !
On va supposer que tu possède deux tables !
id et id : INT, PRIMARY KEY, AUTO_INCREMENT
libelle, pseudo, email : VARCHAR(50)
ville : INT
-------------------------------------
Maintenant, pour faire la requête, je suppose que seulement les clients connéctés peuvent afficher la liste des clients(de la meme ville), et que la variable "$_SESSION ['ville']" est initialisé lorsque le client se connecte !
Voila, cela affichera la liste des clients qui se trouvent dans la même ville que l'utilisateur en cours !
--------------------------------------
Si tu veux afficher le nom de la ville a coté de chaque pseudo, alors tu dois faire une jointure, comme ceci !
--------------------------------------
Voila, si tu beug, n'hésite pas !
--------------------------------------
PS : Le premier code que j'ai poser représente la connexion, vers la base de données, donc il est nécessaire qu'il soit présent au début de chaque page (pour que tu puisse intéragir avec la base de données), donc au lieu de le copier/coller au début de chaque page, copie le dans un fichier appart, nomme le par exemple "bdd_connect.php", puis tu va l'inclure au début de chaque page, en utilisant la fonction "require_once" ...
--------------------------------------
Bonne chance !
Mettez en résolu quand c'est résolu -.- ...
Question sécurité, je te conseil d'utiliser les requêtes préparés de PDO, et ça sera plus clair après car tu n'aura pas a concaténer(ce qui te pose problème) !
Donc, au lieux de faire ...
mysql_connect ... etc
Tu va faire ...
try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=nombdd, root, '', $pdo_options); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); }
-------------------------------------
Concernant les requêtes !
On va supposer que tu possède deux tables !
villes(id, libelle) client(id, pseudo, email, ville)
id et id : INT, PRIMARY KEY, AUTO_INCREMENT
libelle, pseudo, email : VARCHAR(50)
ville : INT
-------------------------------------
Maintenant, pour faire la requête, je suppose que seulement les clients connéctés peuvent afficher la liste des clients(de la meme ville), et que la variable "$_SESSION ['ville']" est initialisé lorsque le client se connecte !
$req = $bdd->prepare('SELECT * FROM client WHERE ville = :city'); $req->bindParam(':city', $_SESSION ['ville'], PDO::PARAM_INT); $req->execute(); while($data = $req->fetch()) { echo $data['pseudo'].'<br />'; }
Voila, cela affichera la liste des clients qui se trouvent dans la même ville que l'utilisateur en cours !
--------------------------------------
Si tu veux afficher le nom de la ville a coté de chaque pseudo, alors tu dois faire une jointure, comme ceci !
$req = $bdd->prepare('SELECT c.id, c.pseudo, v.libelle AS libelleVille FROM client c INNER JOIN villes v ON v.id = c.ville WHERE c.ville = :city GROUP BY c.id, c.pseudo, libelleVille'); $req->bindParam(':city', $_SESSION ['ville'], PDO::PARAM_INT); $req->execute(); while($data = $req->fetch()) { echo $data['pseudo'].' - '.$data['libelleVille'].'<br />'; }
--------------------------------------
Voila, si tu beug, n'hésite pas !
--------------------------------------
PS : Le premier code que j'ai poser représente la connexion, vers la base de données, donc il est nécessaire qu'il soit présent au début de chaque page (pour que tu puisse intéragir avec la base de données), donc au lieu de le copier/coller au début de chaque page, copie le dans un fichier appart, nomme le par exemple "bdd_connect.php", puis tu va l'inclure au début de chaque page, en utilisant la fonction "require_once" ...
require_once 'lien_vers_le_fichier_bdd_connect.php';
--------------------------------------
Bonne chance !
Mettez en résolu quand c'est résolu -.- ...