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 :

Lister un nombre de résultats par récurrence [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut Lister un nombre de résultats par récurrence
    Salut à tous,

    J'ai un script qui gère entre autres des catégories. On a donc des dossiers, des sous-dossiers, des sous-sous dossiers...
    Dans ma table ils sont référencés par id et refid.
    id est l'auto incrément unique dans ma table et refid indique l'id du dossier parent.

    Ce que je cherche c'est au départ, pour le(s) premier(s) dossier(s), indiquer le nombre de sous dossiers. Donc la méthode c'est de lister les sous-dossiers, puis par récurrence relister ces sous-dossiers.

    Voila ma fonction:
    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
    function count($id=false, $i=0, $total=0) {
      if ($id)
      {
       $n = 'query'.$i; // nom de la requête
       $$n = mysql_query("SELECT id FROM filemanager_cats WHERE refid = '".$id."'") or die ($this->debug()); // sélection de l'id des sous-dossiers
       while (list($id) = mysql_fetch_array($$n)) {
        $total++; // tant qu'il y a un résulant, on incrémente le total
        $i++; // et le nom de la requête
        $this->count($id, $i, $total); // on relance pour vérifier l'existance d'éventuels sous dossiers.
       }
       return $total;
     
      /* Ce qui suit est négligeable */
      } else {
       $query = mysql_query("SELECT id FROM filemanager_cats") or die ($this->debug());
       echo _TEXT_DIR_.": ".mysql_num_rows($query)."<br />";
      }
     }
    Comme je relance la fonction, je me suis dit qu'il était mieux de changer le nom de la requête, et pareil pour le total, le retransmettre à chaque fois. Finalement çe ne fonctionne pas; il m'indique le nombre de sous-dossiers qui se trouve strictement dans le dossier initial.

    J'espère avoir été clair, si quelqu'un voit le problème...
    Merci

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Normal, tu ré-apelles ta fonction récurcivement mais tu ne fait rien du résultat !

    tu a juste a ajouter $total += devant l'appel recurcif :

    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
    function count($id=false, $i=0, $total=0) {
      if ($id)
      {
       $n = 'query'.$i; // nom de la requête
       $$n = mysql_query("SELECT id FROM filemanager_cats WHERE refid = '".$id."'") or die ($this->debug()); // sélection de l'id des sous-dossiers
       while (list($id) = mysql_fetch_array($$n)) {
        $total++; // tant qu'il y a un résulant, on incrémente le total
        $i++; // et le nom de la requête
        $total += $this->count($id, $i, $total); // on relance pour vérifier l'existance d'éventuels sous dossiers.
       }
       return $total;
     
      /* Ce qui suit est négligeable */
      } else {
       $query = mysql_query("SELECT id FROM filemanager_cats") or die ($this->debug());
       echo _TEXT_DIR_.": ".mysql_num_rows($query)."<br />";
      }
     }

  3. #3
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Je n'ai pas compris ce que tu cherches à faire
    Si par exemple tu as ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    + A
    |  + B
    |  + C
    |  |  + D
    |  |  ` E
    |  ` F
    + G
    ` H
       + I
       |  ` J
       ` K
    Qu'est ce que tu veux obtenir ?
    count(A) == 5 ? 3 ?

    Si c'est 5 =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function count($id) {
       $total = 0;
       $req = mysql_query("SELECT * FROM matable WHERE refid = ". $id);
       while($data = mysql_fetch_array($req)) {
          $total += 1 + count($data['id']);
       }
       return $total;
    }
    Si c'est trois alors il suffit de supprimer l'appel récusrisf du code précédent.

  4. #4
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Ah dommage j'aurai pu trouver...

    Merci beaucoup en tout cas ça fonctionne

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

Discussions similaires

  1. Requête compter le nombre de résultats par tranche de 5mn
    Par Sethenssen dans le forum Requêtes
    Réponses: 9
    Dernier message: 20/01/2014, 15h15
  2. nombre de résultats par pages
    Par nal dans le forum Langage
    Réponses: 14
    Dernier message: 03/05/2012, 17h38
  3. Réponses: 2
    Dernier message: 14/06/2011, 16h07
  4. [SQL] Je souhaite limiter le nombre de résultat par page
    Par kilian67 dans le forum PHP & Base de données
    Réponses: 38
    Dernier message: 20/08/2007, 17h55
  5. [SQL] Nombre de résultats par pays
    Par flOZ dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/05/2006, 05h29

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