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 :

Imbrication de jeux d'enregisqtrements [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
    Inscrit en
    Juillet 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 17
    Par défaut Imbrication de jeux d'enregisqtrements
    Bonjour,

    Je crée un sommaire pour un site qui se présente comme ceci :
    Titre 1
    Sous-titre 1
    Sous-titre 2
    Sous-titre 3

    Titre 2
    Sous-titre 1
    Sous-titre 2
    Sous-titre 3


    Les titres sont rangés dans ma base de donnée dans une table « php_sommaire_titre »
    Poids servant a les ranger dans l’ordre croissant et Id étant un auto incrément.
    De cette façon :

    Id , titre, poids
    1, Titre1, 1
    2, Titre2, 2

    Les sous-titres sont rangés de cette façon dans la table « php_sommaire_menu »
    Poids servant à les ranger dans l’ordre croissant et Id étant un auto incrément et catégorie correspondant à l’Id de la table titre.

    Id, titre, categorie, poids, lien
    1, Sous-titre1, 1, 1, #
    2, Sous-titre2, 1, 2, #
    3, Sous-titre3, 1, 3, #
    4, Sous-titre1, 2, 1, #
    5, Sous-titre2, 2, 2, #
    6, Sous-titre3, 2, 3, #

    Je cherche a générer le sommaire grâce a ces deux tables.

    Voici mon code en simplifié :

    Code php : 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
    mysql_select_db($database_connection, $connection);
    $query_sommaire = "SELECT * FROM php_sommaire_titre ORDER BY poid ASC";
    $sommaire = mysql_query($query_sommaire, $connection) or die(mysql_error());
    $row_sommaire = mysql_fetch_assoc($sommaire);
    $totalRows_sommaire = mysql_num_rows($sommaire);
     
    mysql_select_db($database_connection, $connection);
    $query_menu = "SELECT * FROM php_sommaire_menu WHERE ORDER BY poid ASC";
    $menu = mysql_query($query_menu, $connection) or die(mysql_error());
    $row_menu = mysql_fetch_assoc($menu);
    $totalRows_menu = mysql_num_rows($menu);
     
    do {
    echo $row_sommaire['nom'] ;
    do {
    	if ($row_sommaire['Id'] == $row_menu[' categorie ']){
    echo $row_menu['nom']
    }
    	} while ($row_menu = mysql_fetch_assoc($menu));
    } while ($row_sommaire = mysql_fetch_assoc($sommaire));

    Seulement le résultat est :
    Titre 1
    Sous-titre 1
    Sous-titre 2
    Sous-titre 3

    Titre 2

    Car il ne veut pas régénérer la boucle des sous menus.
    Auriez vous une solution a mon problème…

    Dans l’attente de votre réponse,

    Salutations,

    Antoine

  2. #2
    NoT
    NoT est déconnecté
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 237
    Par défaut
    Salut,

    Pourquoi passes-tu par une boucle de type do while ? C'est ça qui te met dedan, 2 boucles while bien montées suffisent pour ta problématique.

    Ca ne réglera peut-être pas ton problème mais déjà on y verra plus clair.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 17
    Par défaut
    Ok pour y voir plus clair :

    Voici mon code en simplifié :

    Code php : 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
    mysql_select_db($database_connection, $connection);
    $query_sommaire = "SELECT * FROM php_sommaire_titre ORDER BY poid ASC";
    $sommaire = mysql_query($query_sommaire, $connection) or die(mysql_error());
    $row_sommaire = mysql_fetch_assoc($sommaire);
    $totalRows_sommaire = mysql_num_rows($sommaire);
     
    mysql_select_db($database_connection, $connection);
    $query_menu = "SELECT * FROM php_sommaire_menu ORDER BY poid ASC";
    $menu = mysql_query($query_menu, $connection) or die(mysql_error());
    $row_menu = mysql_fetch_assoc($menu);
    $totalRows_menu = mysql_num_rows($menu);
     
    do {
        echo $row_sommaire['nom'] ;
        do {
    	    if ($row_sommaire['Id'] == $row_menu[' categorie ']){
                      echo $row_menu['nom'] ;
                }
    	} while ($row_menu = mysql_fetch_assoc($menu));
    } while ($row_sommaire = mysql_fetch_assoc($sommaire));

    Tu peux changer
    do {

    } while ($row_sommaire = mysql_fetch_assoc($sommaire));


    Par

    while ($row_sommaire = mysql_fetch_assoc($sommaire)){

    }


    Cela revien au même...

  4. #4
    NoT
    NoT est déconnecté
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 237
    Par défaut
    Pas vraiment, ça t'enleve deja la ligne 4 et 9 ( sinon tu zap le premier enregistrement de chaque requete)

    Chaque structure de boucle doit être utilisée dans un cas bien précis, c'est pas par simple caprice que je te fait la remarque

    A un moment donné il te faut réexécuter ta 2e requête car tu as peut-etre déjà passé la catégorie qui t'intéressait.

    Sachant que personnelement j'aurais fait en une seule requete avec une jointure , c'est plus propre.

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 17
    Par défaut
    En gros je cherche si il y a moyen de générer plusieurs mysql_fetch_assoc contenant des sous-menu a l'interieur d'un mysql_fetch_assoc contenant des titres.

    Le résultat que j'ai pour le moment est :

    Il fait le while une fois avec le premier titre en faisant le while des sous-menus, il fait le while des titres une seconde fois en affichant le 2eme titre mais ne fait plus le while des sous menus... En gros mysql_fetch_assoc ses sous-menus est executé une seul fois, j'aimerais l'executer à chaque boucle des titres... Vous comprenez ?

    La jointure me permeteras d obtenir le résultat :

    Titre1
    Sous titre 1
    Sous titre 2
    Sous titre 3
    Titre2
    Sous titre 1
    Sous titre 2
    Sous titre 3

    ???

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 17
    Par défaut
    En fait comment créer un menu de la forme :

    Titre1
    Sous titre 1
    Sous titre 2
    Sous titre 3
    Titre2
    Sous titre 1
    Sous titre 2
    Sous titre 3

    A partir d'une table contenant les titres, une autre les sous-titres...

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Va déjà voir là :
    http://sqlpro.developpez.com/cours/arborescence/

    Une seule table suffit, et donc une seule requête pour récupérer les enreg triés.

  8. #8
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 17
    Par défaut
    Ok c'est bon j'ai réussi a faire mon sommaire...

    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
     
    mysql_select_db($database_connection, $connection);
    $query_jointure = "SELECT * FROM php_sommaire_titre INNER JOIN php_sommaire_soustitre ON php_sommaire_soustitre.categorie = php_sommaire_titre.id ORDER BY php_sommaire_titre.poid, php_sommaire_soustitre.spoid";
    $jointure = mysql_query($query_jointure, $connection) or die(mysql_error());
    $row_jointure = mysql_fetch_assoc($jointure);
    $totalRows_jointure = mysql_num_rows($jointure);
     
    $i = '';
     
    do {
    	if ($i !=$row_jointure['categorie']){
    		echo $row_jointure['nom'] ;	
    	}
    	echo $row_jointure['stitre'],
    	$i = $row_jointure['categorie'] ;
    } while ($row_jointure = mysql_fetch_assoc($jointure));

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

Discussions similaires

  1. Développement jeux vidéo : quelles bases à avoir absolument ?
    Par Ezechiel dans le forum Développement 2D, 3D et Jeux
    Réponses: 175
    Dernier message: 20/02/2018, 16h14
  2. Du réseau dans les jeux
    Par Mathieu.J dans le forum Développement
    Réponses: 3
    Dernier message: 07/05/2004, 16h33
  3. [prg jeux ]Définir l'intersection de deux rectangles
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 30/07/2003, 18h11
  4. jeux de caractères
    Par AHO dans le forum InterBase
    Réponses: 11
    Dernier message: 05/02/2003, 18h45
  5. Editeur de MAP en delphi pour jeux directX
    Par PetitScorpion dans le forum DirectX
    Réponses: 5
    Dernier message: 09/07/2002, 18h47

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