Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/09/2006, 14h07   #1
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Par défaut [Conception] Aide pour les liaison entre 2 table

Bonjour,
j'ai besoine de votre présieuce aide.
Voic ma structure:
J'ai 2 table, 1 user l'autre category

Dans ma tabel user
==============

J'ai 3 champs, "id", "user", "id_cat"

Dans ma table cat
================
J'ai 3 champs, "id, id_cat","categorie"

J'aimerai faire un while qui:
-->Affiche la categorie, puis toutes les personne qui appartienne a cette categore
--> Puis affiche la deuxieme categorie et toutes les personne qui appartienne a cette categorie
--> et ainsi de suite jusqu'a la derniere categorie.

Je sais qu'il faut commencer par un while qui va regarder dans la table "cat" puis un deuxieme while, inclu dans le premier qui va regarder dans la table >"user"

Mais comment faire pour qu'il puisse faire la liaison entre les 2 "id_cat"


Pourriez vous m'aider avec du code?

Merci merci beaucoup
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 14h22   #2
Membre expérimenté
 
Avatar de papyphp
 
Inscription : avril 2005
Messages : 425
Détails du profil
Informations personnelles :
Âge : 62
Localisation : Belgique

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 425
Points : 545
Points : 545
Bonjour,

Citation:
select user, categorie from user, cat where user.id_cat=cat.id_cat
Mais il y a une chose que je ne comprends pas c'est la façon de créer tes tables.
A quoi correspond 'id' dans la table cat

perso j'utiliserais trois tables
users ('id_user','user')
categories('id_cat','categorie')
lien('id_user','id_cat')
et le select deviendrait
Citation:
select user, categorie from users, categories, liens where users.id_user=lien.id_user and categories.id_cat=lien.id_cat order by user
Dans le cas de figure qui te préoccupes le gain est minime si pas inexistant mais si tu avais plus de champs dans ta table user, le gain augmenterait en conséquence

[edit] va aussi voir du coté de JOIN
__________________
Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp. Et ce coup ci, elle ne nous a pas ratés
papyphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 15h27   #3
wkd
Nouveau Membre du Club
 
Inscription : janvier 2004
Messages : 112
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 112
Points : 33
Points : 33
Sans hesiter:
Code :
1
2
3
4
 
SELECT *
FROM user, cat
WHERE user.id_cat=cat.id_cat
normalement, tu devrais faire 2 tables qui ressemble à ceci:
Code :
1
2
3
 
user(id_user,#id_cat)
cat(id_cat,catégorie)
si tu fais:
Code :
1
2
3
 
user(id,id_user,#id_cat)
cat(id,id_cat,catégorie)
cela revient à faire 2 fois la meme chose
__________________
Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...
wkd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 16h27   #4
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Oui mais ca marce pas.

qu'il ya t il de faut
Mes table
========
user (id_category, user)
user_category(id_category, category_fr, category_en, category_order)

mon code
=======
Citation:
$select_category = "SELECT * FROM user_category WHERE id_category <> 3 ORDER BY category_order";
$query_category = mysql_query($select_category) or die('Erreur SQL : <br>'.$select_category.'<br>'.mysql_error());
while($result_category = mysql_fetch_array($query_category))
[... code ...]


$select_user = "SELECT * FROM user, user_category WHERE user.id_category=user_category.id_category ORDER BY user_category.category_order";
$query_user = mysql_query($select_user) or die('Erreur SQL : <br>'.$select_user.'<br>'.mysql_error());

while ($result_user = mysql_fetch_array($query_user)){

echo htmlentities($result_user["position_en"]);

}


[... code ...]
}
?>
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 16h44   #5
Membre expérimenté
 
Avatar de papyphp
 
Inscription : avril 2005
Messages : 425
Détails du profil
Informations personnelles :
Âge : 62
Localisation : Belgique

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 425
Points : 545
Points : 545
Ce serait plus facile si tu nous disait ce qui ne va pas.
Comme ça, a pouf :
Citation:
echo htmlentities($result_user["position_en"]);
position_en ne se trouve dans aucune de tes tables
__________________
Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp. Et ce coup ci, elle ne nous a pas ratés
papyphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 16h54   #6
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Oui, il se trouve, mais y en a tellement que je n'ai enumeré celle qu'il rentre en jeu.

Mon probleme, c'est que dans mon deuxieme while, il affiche tous le utilisateurs, categorie mélangées (j'ai 3 categories). alors qu'il devrait lister , dans la premier boucle tous les utilisateur de la table "user", appartenant a la categorie la categorie 1

dans la deuxiemen boucle lister tous les utilisateur de la categorie 2

dans la troiseme boucle lister tous les utilisateur de la categorie 3.

Puis il a plus de boucle carj e n'ai que 3 categorie listée dans ma table " user_categorie.

Dans le chanp "id_categorie" de ma table "user_categorie", j'ai les valeur "1"+, "2" et "3" qui corresponde a des categorie

Dans le champs "id_categorie" de la table "user", 'ai les valeur soit 1 ou 2 ou 3 en fonction de leur affectation.

Merci pour ton/votre aide
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 17h03   #7
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
(le reste fonctionne)
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 17h44   #8
Membre expérimenté
 
Avatar de papyphp
 
Inscription : avril 2005
Messages : 425
Détails du profil
Informations personnelles :
Âge : 62
Localisation : Belgique

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 425
Points : 545
Points : 545
Il faut mettre un where dans ta requête

Citation:
$select_user = "SELECT * FROM user, user_category WHERE user.id_category=user_category.id_category and user_category.id_category = 1 ORDER BY user_category.category_order";
Tu récupère ainsi tous les user de la catégorie 1
Tu fais la même chose avec user_category.id_category = 2 pour ceux de la catégorie 2 et ainsi de suite

Si j'ai bien compris ta question
__________________
Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp. Et ce coup ci, elle ne nous a pas ratés
papyphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2006, 13h03   #9
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
merci beaucoup,
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h38.


 
 
 
 
Partenaires

Hébergement Web