Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 13/08/2011, 17h51   #1
Invité de passage
 
Inscription : août 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 6
Points : 2
Points : 2
Par défaut Séparer les liens des sous-menus

Bonjour,

J'ai un menu dynamique que je peux gérer (insérer, modifier, supprimer) via une table.

La table se présente sous cette forme : [id] [dt] [dd] [description].
DT étant la catégorie, DD la sous-catégorie.

Mon code se présente comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php  
include("connexion.php");
<blockquote>$req = $bdd->query('SELECT dt, 
GROUP_CONCAT(dd ORDER BY id ASC SEPARATOR "<br />") as dd 
FROM ma_table  
GROUP BY dt ORDER BY id') 
OR die(print_r($bdd->errorInfo()));
 
 
while ($donnees = $req->fetch()) {
 
echo '<dt>' .$donnees['dt']. '</dt>';
 
echo '<dd><a href="entreprises.php?dd=' .$donnees['dd']. '"title="">' .$donnees['dd']. '</a></dd>';
}</blockquote>$req->closeCursor();
?>
Ce qui m'affiche bien :
- Catégorie 1
sous-catégorie 1a
sous-catégorie 1b

- Catégorie 2
sous-catégorie 2a
sous-catégorie 2b

Les sous-catégories sont des hyperliens conduisant à une description.

Mon souci est que le résultat de ma requête SQL lie l'ensemble des sous-catégories d'une même catégorie. ex : ../entreprises.php?dd=sous-categorie1a<br />sous-categorie1b

alors que je souhaite ../entreprises.php?dd=sous-categorie1a en tant que lien à cliquer et séparément de ../entreprises.php?dd=sous-categorie1b.

Voilà, j'espère n'avoir perdu personne en cours de route (?). Je pense que j'ai commis une simple étourderie mais je n'arrive pas à la voir. Une idée peut-être ?

Merci à vous.

Marie.
Marie08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 09h52   #2
Membre confirmé
 
Avatar de GyZmoO
 
Homme Mickaël
Ingénieur développement logiciels
Inscription : février 2006
Messages : 402
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2006
Messages : 402
Points : 238
Points : 238
Envoyer un message via MSN à GyZmoO
Bonjour !

Dans ta requête tu fais un
Cela a pour effet de ne retourner qu'une seule ligne par Catégorie.

C'est donc normal que tu te retrouves avec ton lien contenant toutes les sous catégories pour une catégorie donnée.

Pourrais-t-on voir la définition exacte de la table ?
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.
GyZmoO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 18h40   #3
Invité de passage
 
Inscription : août 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 6
Points : 2
Points : 2
Bonjour et merci de ta réponse mais dans ma requête il y avait déjà un GROUP BY dt.

Depuis mon post j'ai trouvé (avec de l'aide) la solution à mon problème et ai utilisé explode(). Je poste mon code "final" à toutes fins utiles.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<?php  
include("connexion.php");
 
$req = $bdd->query('SELECT dt, 
GROUP_CONCAT(dd ORDER BY id ASC SEPARATOR "<br />") as dd 
FROM ma_table  
GROUP BY dt ORDER BY id ASC') 
OR die(print_r($bdd->errorInfo()));
 
while ($donnees = $req->fetch()) {
 
echo '<dt>' .$donnees['dt']. '</dt>';
 
$donnees['dd'] = explode("<br />", stripslashes($donnees['dd']));
foreach($donnees['dd'] AS $dd =>$donnees['dd']){
echo '<dd><a href="entreprises.php?dd=' .$donnees['dd']. '"title="">' .$donnees['dd']. '</a></dd>';
}	
}
$req->closeCursor();
?>

Excellente fin de semaine.
Marie08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 16h14   #4
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 433
Points : 6 433
Bonjour,

C'est effectivement la bonne façon de procéder : ce n'est pas au SQL de mettre en forme le résultat, mais au langage qui interroge la base (ici le PHP).
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced 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 15h48.


 
 
 
 
Partenaires

Hébergement Web