IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

boucle while sur trois tables [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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,

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut que tu classes ta requete par rubrique et par sous-rubrique.
    Fait également une jointure JOIN et non avec des WHERE.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    Fait vite fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    oui il me semble
    (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

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Par défaut
    Ok, merci pour le conseil.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. boucle while sur 2 tables
    Par vince62fr dans le forum Langage
    Réponses: 1
    Dernier message: 29/03/2011, 12h40
  2. [PostgreSQL] (Requête sur trois tables)
    Par nils56 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/05/2006, 13h50
  3. [VB6] Requete sur Trois Tables
    Par ayouss dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/05/2006, 15h09
  4. [MySQL] Problème de boucle while sur base de données
    Par Darhyl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/05/2006, 15h11
  5. jointure sur TROIS tables
    Par caribou_belle dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/03/2004, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo