Mysql selection liées avec (les sessions)

Fermé
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 - Modifié par glodybiss le 22/08/2012 à 09:13
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 - 23 août 2012 à 15:25
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.


if $_SESSION ['ville'] = $data['ville'] 
$query = "SELECT * FROM 'client' WHERE ville = $data['ville']"; 
$result = mysql_query($query);    





Merci d'avance



4 réponses

Utilisateur anonyme
22 août 2012 à 11:14
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
0
AssassinTourist Messages postés 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 311
22 août 2012 à 12:16
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 :
$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.
0
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
22 août 2012 à 16:32
Merci de votre aide, Assassin tu es partout où je pose :) merci

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'].'";
0
AssassinTourist Messages postés 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 311
22 août 2012 à 18:14
=)

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)
0
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
Modifié par glodybiss le 23/08/2012 à 11:11
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
$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 29
mais 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!
0
Utilisateur anonyme
23 août 2012 à 13:04
bah c'est clair que ta requette n'est pas bonne s'il affiche ça. Il faut verifier que wimax_site est bien une table et que ta variable $_SESSION ['ville'] n'est pas vide.
0
AssassinTourist Messages postés 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 311
23 août 2012 à 13:53
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 ?
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 23/08/2012 à 14:33
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 ...
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 -.- ...
0
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
23 août 2012 à 15:25
JooS, merci beaucoup
J'essaie, j'enlève partout où j'ai utilisé la connexion par mysql_connect dans peu de temps je reviens a toi pour te dire merci et si je beug je reviens encore :)
merci
0