Bonjour ! Je galère depuis un bon moment sur une requête simple (je pense et je l'espère). j'ai une table category:
La colonne parent a une jointure avec l'id de la même table. Si la colonne est null cela veut dire que c'est une "catégorie parent" et si il y a un id c'est que c'est une sous catégorie de la catégorie parent. A la fin j'aimerai afficher un truc du style (faite comme si les lignes représentaient un tableau).
J'ai fait ceci déjà mais je ne pense pas que c'est ce que j'ai besoin:
SELECT
category_article.name
FROM
category_article
LEFT JOIN
category_article as CA on category_article.id = CA.parent
Tout d'abord excuser moi de ma réponse tardive, j'étais malade.
Il y a tout le temps trois niveau max. category parent -> category -> article (Boissons -> Minérales -> Coca-cola).
Je suis d’accord avec votre requete mais maintenant ce que je cherche a faire c'est mettre dans le bonne ordre les informations.
c'est à dire mettre les infos dans cette ordre:
Boissons
Minérales
Vins
Snacks
Sucrés
Salés
Il faudrait que la catégorie parent soit tout en haut et que juste en dessous il y ait les catégorie de la catégorie parent. (une catégorie parent -> suivie de toutes ses catégories "enfant" | une catégorie parent -> suivie de toutes ses catégorie "enfant").
Je suis en 5.7.25... Mais du coup si je fais un simple select du name de la table category, je récupère deja tout les name et ensuite je fais des jointure et des boucles et ça devrait le faire?
Si le nombre de catégories dans les deux premiers niveaux n'est pas trop important (moins de 50), je pense que le plus simple c'est de faire ta récursivité en PHP :
<?php
$bdd = new PDO( ... );
function listeCategories( $parent = false ) {
if( $parent ) {
$requete = $bdd->prepare( 'SELECT id, name FROM categorie WHERE parent = ? ORDER BY name' );
$requete->execute( array( $parent ) );
} else {
$requete = $bdd->query( 'SELECT id, name FROM categorie WHERE parent IS NULL ORDER BY name' );
}
$categories = $requete->fetchAll();
if( count( $categorie ) ) {
echo '<ul>';
foreach( $categories as $categorie ) {
echo '<li><a href="categorie.php?id='.$categorie->id.'">'.$categorie->name.'</a></li>';
listeCategories( $categorie->id );
}
echo '</ul>'
}
}
listeCategories();
?>
De cette manière, tu vas balayer tout ton arbre dans l'ordre et avec une organisation <ul><li> structurée.
Par contre cela va lancer potentiellement une requête par niveau parent, donc à éviter si ce nombre est élevé (plus de 50 à vu de nez).
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Mon instagram: cebri_6
Mon instagram: cebri_6
Mon instagram: cebri_6
Mon instagram: cebri_6
Mon instagram: cebri_6