L'ordre dans les requêtes :-?

Signaler
Messages postés
13
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 septembre 2007
-
Messages postés
13
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 septembre 2007
-
Bonjour,

Grâce à l'aide de phpcs j'ai réussi à créer un fonction qui affiche la liste des catégories d'un petit annuaire que je suis en train de créer. Mais j'ai un problème d'ordre d'affichage de mes catégories.

le code suivant :
<?php
echo "<select name= "category">
<option value="">Catégories :</option>";
// Séctionner les catégories en dessous de l'actuelle
$sql ="SELECT * FROM categories";
$req = mysql_query($sql) or die(mysql_error());
while ($db_data = mysql_fetch_assoc($req)) {
    $category_id = $db_data['category_id'];
    $sql_sub ="SELECT * FROM categories WHERE parent_num=$category_id ORDER BY parent_num";
    $req_sub = mysql_query($sql_sub) or die(mysql_error());
    if (mysql_num_rows($req_sub)>0) {
        while ($db_data_sub = mysql_fetch_assoc($req_sub)) {
            cat_tree_add ($db_data_sub['category_id'], $category);
        }
    }
}
echo "</select>";
?>

affiche mes catégories correctement mais pas dans un ordre classé. Par exemple j'ai :
Loisits et divertissements > Sport
Loisits et divertissements > Tourisme
Loisits et divertissements > Sport > Rugby
Loisits et divertissements > Sport > Foot

Or bien évidemment je voudrais faire :
Loisits et divertissements > Tourisme
Loisits et divertissements > Sport
Loisits et divertissements > Sport > Rugby
Loisits et divertissements > Sport > Foot

Pour information ma table categories est faite de telle manière :
CREATE TABLE `categories` (
  `category_id` int(11) NOT NULL,
  `parent_num` int(11) NOT NULL,
  `category` varchar(100) NOT NULL,
  `category_desc` text NOT NULL
) ENGINE =MyISAM DEFAULT CHARSET=utf8;

--
-- Contenu de la table `categories`
--

INSERT INTO `categories` VALUES (1, 0, 'Art & Culture', '');
INSERT INTO `categories` VALUES (2, 1, 'Musées', '');
INSERT INTO `categories` VALUES (3, 1, 'Musique', '');
(...)
INSERT INTO `categories` VALUES (16, 0, 'Loisirs & divertissement', '');
(...)
INSERT INTO `categories` VALUES (23, 6, 'Santé', '');
INSERT INTO `categories` VALUES (24, 7, 'Annuaires liens durs', '');
INSERT INTO `categories` VALUES (25, 0, 'Divers', '');
INSERT INTO `categories` VALUES (26, 22, 'Rugby', '');
INSERT INTO `categories` VALUES (27, 22, 'Foot', '');
INSERT INTO `categories` VALUES (28, 0, 'BD blogs', '');
INSERT INTO `categories` VALUES (29, 0, 'Politique', '');
INSERT INTO `categories` VALUES (30, 29, 'Droit', '');
INSERT INTO `categories` VALUES (31, 29, 'Personnalités politiques', '');
INSERT INTO `categories` VALUES (32, 29, 'Institutions', '');
INSERT INTO `categories` VALUES (33, 25, 'Animaux', '');
INSERT INTO `categories` VALUES (34, 16, 'Tourisme', '');

Je ne comprends pas comment ordonner mes requêtes SQL pour avoir une sortie ordonnée correctement, groupée comme il le faut.J'ai déjà essayé plusieurs tatonnements mais aucun n'a été satisfaisant :-/...

Pourriez-vous m'aider s'il vous plait :-?

2 réponses

Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
12
Messages postés
13
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 septembre 2007

Merci pour ta réponse mais malheureusement je comprends à peu près la première partie. Mais les suivantes pas du tout, ça devient trop complexe pour un simple débutant comme moi  :-/.
J'ai fait ça par une méthode récursive parce qu'on m'a dit que ça fonctionnait et ça fonctionne apparemment presque bien ce que j'ai fait, sauf le regroupement par parent.