L'ordre dans les requêtes :-?

yazerty55 Messages postés 13 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 17 septembre 2007 - 16 sept. 2007 à 22:56
yazerty55 Messages postés 13 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 17 septembre 2007 - 17 sept. 2007 à 14:06
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

cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
17 sept. 2007 à 06:38
0
yazerty55 Messages postés 13 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 17 septembre 2007
17 sept. 2007 à 14:06
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.
0
Rejoignez-nous