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 :

Calculer le nombre de sous-catégories [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut Calculer le nombre de sous-catégories
    Bonjour.

    Je cherche à pouvoir calculer le nombre de sous-catégories qu'il y a la catégorie correspondante.

    Donc, j'ai 2 table :

    table categorie : idCat, nom_cat, cat_ordre
    table ss_categorie :: id_ss_cat, nom_ss_cat, idCat

    Mais, je cherche à pouvoir mettre sur ma page d'accueil, sous forme de tableaux, le :
    • Le nombre de sous-catégories qu'il y a à chacune des catégories
    • Est le nom des catégories (sa c'est bon)


    Voici ma page d'index :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("azerty"); // On se connecte à la BDD
     
    echo'<div id="corps">
    <h1 class="titre_h1">Système de tutoriel<br />
    <a href="admin.php" style="font-size:large; color:#f9fca9;">Administration</a></h1>
    
    	 <table>
    <tr>
    <th>Nombre</th>
    <th>Système de tutoriel</th>
    </tr>';
     
     
    $retour = mysql_query('SELECT idCat,nom_cat 
    FROM categorie'); 
    // On sélectionne l'id est le nom de la catégorie puis on met les id par ordre 1,2,3, etc.
    while ($cat = mysql_fetch_array($retour)) // On fait une boucle pour lister les catégories
    { //Début de la boucle
    echo'
    <tr>
    <td></td>
    <td><a href="ss_cat.php?ss_cat='.$cat['idCat'].'">'.$cat['nom_cat'].'</a></td>
    </tr>'; 
    // Ici on a pris les informations dans la requête pour afficher les noms des catégories avec leurs id respectifs, est grâce à la boucle, tout va être répété. 
     
    } //Fin de la boucle
    echo'
    </table>
    </div>';
    ?>
    Pour ma part, je pense que c'est un problème facile à faire mais, là je bloque complètement. J'ai essayer de faire des LEFT JOIN... J'ai tout essayer.

    Si quelqu'un pourrait m'aider, je lui en serait reconnaissant.
    Par avance, Merci.

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    J'ai tout essayer.
    Faux

    Le code ci-dessous affiche le nombre de sous catégories de chaque catégorie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $sql_cats = mysql_query('SELECT * FROM categorie');
    while($cat = mysql_fetch_array($sql_cats)){
       echo mysql_result(mysql_query("SELECT COUNT(id_ss_cat) As nb_sous_cats FROM  ss_categorie WHERE idCat=".$cat['idCat']),0,"nb_sous_cats");
    }
    ?>

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    Citation Envoyé par ThomasR
    Faux
    En faite quand j'ai "tout essayé", c'est que j'avais vraiment tout essayé à mes connaissances. ^^ Mais, j'avais donné le code qui n'afficher aucune erreur

    Enfin, merci votre code marche parfaitement. C'est une requête que j'avais jamais vus... j'ai appris au moins quelque chose.

    Merci, encore.

    Juste une chose : Il veut dire quoi le 0 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE idCat=".$cat['idCat']),0,

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    Désoler, mais je veux comprendre, qu'est qui veut dire ce 0 ?

  5. #5
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Il veut dire : "la première ligne de la requête passé en paramètre", en l'occurence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(id_ss_cat) As nb_sous_cats FROM  ss_categorie WHERE idCat=".$cat['idCat']
    ne renvoie qu'un seule ligne mais si tu avais :

    SELECT * FROm table

    et si tu remplaces le 1 par le 0, tu aurais la valeur pour le deuxième enregistrement renvoyé par la requête.

    http://fr.php.net/mysql_result

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    Bonjour, je viens juste de m'apercevoir que mon code ne marcher pas.
    Je ne parvient pas a affiché le nombre de tutoriel sur la page ss_cat.php, cette page contient la liste des sous-catégories.

    Quand, je rentre ce code sa m'affiche le nombre total de tutoriel....

    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
     
    <?php
    $retour = mysql_query('SELECT id_ss_cat,nom_ss_cat,idCat FROM ss_categorie WHERE idCat = "'.$ss_cat.'" ORDER BY idCat');
    //On sélectionne les id, le nom de la sous-catégorie
    while($ss_cat = mysql_fetch_array($retour))
    { //Début de la boucle
     
    echo'
    <tr>
    <td class="nbr_tuto">'.mysql_result(mysql_query("SELECT COUNT(idtutoriel) As nb_tuto FROM tutoriel WHERE valide = '1' AND idCat=".$ss_cat['idCat']),0,"nb_tuto").'</td>
    <td><a href="liste.php?cat='.$ss_cat['id_ss_cat'].'">'.$ss_cat['nom_ss_cat'].'</a></td>';
    echo'
    </tr>';
    } //Fin de la boucle
    ?>
    Pourtant, j'ai pris exemple sur le code que vous m'avez donné, mais sa ne marche pas...

    Voici les tables que j'utilise pour mon script :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    CREATE TABLE `categorie` (
      `idCat` int(11) NOT NULL auto_increment,
      `nom_cat` varchar(255) NOT NULL,
      `cat_ordre` int(11) NOT NULL,
      KEY `idCat` (`idCat`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
     
    CREATE TABLE `ss_categorie` (
      `id_ss_cat` int(11) NOT NULL auto_increment,
      `nom_ss_cat` varchar(255) NOT NULL,
      `idCat` int(11) NOT NULL,
      `cat_ordre` int(11) NOT NULL,
      KEY `id_ss_cat` (`id_ss_cat`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
     
    CREATE TABLE `tutoriel` (
      `idtutoriel` int(11) NOT NULL auto_increment,
      `titretutoriel` varchar(255) NOT NULL,
      `contenu` text NOT NULL,
      `idCat` int(11) NOT NULL,
      `auteur` varchar(255) NOT NULL,
      `valide` enum('0','1') NOT NULL default '0',
      `nb_vues` mediumint(8) NOT NULL,
      `timestamp` bigint(20) NOT NULL default '0',
      `timestamp_modification` bigint(20) NOT NULL default '0',
      KEY `idtutoriel` (`idtutoriel`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
    Si vous pouviez m'aider, je vous en serez reconnaissant.

  7. #7
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour,

    mysql_result(mysql_query("SELECT COUNT(idtutoriel) As nb_tuto FROM tutoriel WHERE valide = '1' AND idCat=".$ss_cat['idCat']),0,"nb_tuto")
    Cette requête renvoie le nombre de tutoriels valides dont la catégorie est $ss_cat['idCat'].

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    Votre code est le même que ce celui que j'ai mis, sa ne marche toujours pas...

    Edit :

    A ce que parfois on peut être bête est négliger des erreurs stupide....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '.mysql_result(mysql_query("SELECT COUNT(idtutoriel) As nb_tuto FROM tutoriel WHERE valide = '1' AND idCat=".$liste_ss_cat['id_ss_cat']),0,"nb_tuto").'
    La sa marche ^^ Mon erreur venait du WHERE, avant je faisait sa (est je ne c'est pas pourquoi... )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND idCat=".$ss_cat['idCat']
    Ce qui bien sûr afficher rien du tout.... j'ai juste remplacer sa par :

    est sa marche du tonnerre.

    Merci !

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

Discussions similaires

  1. [AC-2003] Calculer le nombre d'entrées selon la catégorie
    Par sl1881 dans le forum Access
    Réponses: 2
    Dernier message: 31/12/2014, 19h53
  2. [Debutant(e)]Calcul du nombre de ligne sous eclipse
    Par skywalker3 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 10/12/2004, 08h53
  3. Comparaison de base et calculs du nombre d'éléments dans Bas
    Par BXDSPORT dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/07/2004, 08h00
  4. Compter le nombre de sous-repertoires
    Par n00bi dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2004, 12h11

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