Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 14/12/2010, 21h52   #1
Invité de passage
 
Inscription : novembre 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 21
Points : 0
Points : 0
Par défaut boucle while sur trois tables

Bonjour à tous,
J'ai dans une base trois tables :

db_client_rub pour les menus principaux
db_client_subrub pour les sous menus
db_client_projets pour les ... projets

quand j'insère dans ma base un sous menu, je le lie à une des rubriques principales par l'ID de la rubrique en question, pareil pour les projets que je lies avec l'ID de la rubrique et l'ID de la sous rubrique.

ID de la rubrique dans subRub : SurRubRubID
ID de la rubrique dans projets : ProjetRubID
ID de la sous rubrique dans projets : ProjetSubRubID

Le probleme, c'est que je veux afficher tout ça sous forme de liste, et c'est là que ça se gate...

je voudrais :
Rubrique 1
-----sous rubrique 1:
projet 1,
projet 2,
projet x,
...
-----sous rubrique 2:
projet 1,
projet 2,
projet x,
...

Rubrique 2
-----sous rubrique 1:
projet 1,
projet 2,
projet x,
...
-----sous rubrique 2:
projet 1,
projet 2,
projet x,
...

etc...

je fais :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
$req = mysql_query("SELECT * FROM db_client_rub, db_client_subrub, db_client_projets WHERE RubID = SubRubRubID = ProjetRubID  AND ProjetSubRubID = SubRubID");
 
	$currentSubRubID;
	$currentProjectID;
 
	while ($projects=mysql_fetch_object($req)){
 
		if($currentSubRubID != $projects -> ProjetSubRubID ){
 
			$currentSubRubID = $projects -> ProjetSubRubID;
			echo $projects -> SubRubTitle.'<br/>';
 
 
		}
		echo $projects -> ProjetTitre.'<br/>';
Et ebn ça marche pas !
J'espère que mes explications sont claires.
Merci d'avance pour vos réponses,
jeanjeanDesign est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 07h35   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il faut que tu classes ta requete par rubrique et par sous-rubrique.
Fait également une jointure JOIN et non avec des WHERE.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 09h35   #3
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Fait vite fait:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$req = mysql_query("SELECT cr.RubTitle,csr.SubRubTitle,cp.ProjetTitre 
FROM db_client_rub cr inner join  (db_client_subrub csr inner join db_client_projets cp on csr.SubRubID= cp.ProjetSubRubID  ) on  cr.RubID = csr.SubRubRubID ");
$currentRubTitle;
$currentSubRubTitle;
			while ($projects=mysql_fetch_object($req)){
		if($currentRubTitle != $projects -> RubTitle ) {
			$currentRubTitle = $projects -> RubTitle
			echo $projects -> RubTitle.'<br/>';	
			$currentRubTitle = $projects -> SubRubTitle;
			echo $projects -> SubRubTitle.'<br/>';	
		} else if ($currentSubRubTitle != $projects -> SubRubTitle ) {
			$currentRubTitle = $projects -> SubRubTitle;
			echo $projects -> SubRubTitle.'<br/>';	
		}
		echo $projects -> ProjetTitre.'<br/>';	
	}
- j'ai supposé que RubTitle est le champ titre de ta rubrique
- si les titre de sous rubrique ou de projet peuvent etre identique dans une meme rubrique il faut faire la meme à partir des id
- ton champ id de rubrique dans ta table clien-projet ne sert à rien ici
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 10h21   #4
Invité de passage
 
Inscription : novembre 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 21
Points : 0
Points : 0
Merci pour vos réponses,
boo64, je vais tester ça de ce pas.
De mon côté j'avais un peu avancé en faisant ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
$req = mysql_query("SELECT * FROM db_client_rub JOIN db_client_subrub ON RubID = SubRubRubID JOIN db_client_projets ON SubRubID = ProjetSubRubID");
 
	$currentRubID;
	$currentSubRubID;
 
	while ($projects=mysql_fetch_object($req)){
 
		if($currentRubID != $projects -> RubID){
 
			echo $projects -> RubTitle.'<br/>';
			$currentRubID = $projects -> RubID;
 
			if($currentSubRubID != $projects -> SubRubID ){
 
				echo '............'.$projects -> SubRubTitle.'<br/>';
				$currentSubRubID = $projects -> SubRubID;
 
			}
 
		}
		echo'--------------------------'.$projects -> ProjetTitre.'<br/>';
 
 
 
		//echo $projects -> ProjetTitre.'<br/>';
 
	}
amis ça ne fonctionne pas complètement (je n'arrive à afficher que la première sous rubrique de chaque rubrique, sous rubrique qui contient tous les projets)

je fais des test, merci encore
jeanjeanDesign est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 11h06   #5
Invité de passage
 
Inscription : novembre 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 21
Points : 0
Points : 0
Bon ben c'est tout bon je crois. En tout cas j'arrive à afficher ce que je veux (peut-être pas dans les règles de l'art, mais je dois bien avouer que SQL et moi...).
Je me sert effectivement des ID plutôt que des titres histoire d'éviter le problème de sous rubriques ayant le même nom dans des rubriques différentes.

Bref j'ai fait :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
$req = mysql_query("SELECT RubID, RubTitle,SubRubTitle, SubRubID, SubRubRubID, ProjetTitre, ProjetRubID, ProjetSubRubID FROM db_client_rub  JOIN db_client_subrub ON RubID = SubRubRubID JOIN db_client_projets ON SubRubID = ProjetSubRubID ");
 
	$currentRubID;
	$currentSubRubID;
 
 
	while ($projects=mysql_fetch_object($req)){
 
 
			if($currentRubID != $projects -> RubID ) {
 
				$currentRubID = $projects -> RubID;
				echo '•'.$projects -> RubTitle.'<br/>';	
 
			}
 
			if ($currentSubRubID != $projects -> SubRubID ) {
 
				$currentSubRubID = $projects -> SubRubID;
				echo '------------------'.$projects -> SubRubTitle.'<br/>';	
 
			}
 
			echo '..............................'.$projects -> ProjetTitre.'<br/>';
J'ai bon ?

Merci encore
jeanjeanDesign est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 11h17   #6
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
oui il me semble
Citation:
(peut-être pas dans les règles de l'art, mais je dois bien avouer que SQL et moi...).
si c'est bon pour le sql juste fait toujours tes jointures sur tes tables de cette façon et pas dans le where : http://mysql.developpez.com/faq/?pag...OINTURES_inner
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 11h52   #7
Invité de passage
 
Inscription : novembre 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 21
Points : 0
Points : 0
Ok, merci pour le conseil.
jeanjeanDesign 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 02h08.


 
 
 
 
Partenaires

Hébergement Web