PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

excusez-moi, j'ai raconté n'importe quoi ! big_smile

ça fonctionne, en faisant comme ceci :


Requête :
[code PHP]
mysql_select_db($database_base, $base);
$query_Recordset2 = "SELECT cat_telech.id, cat_telech.titre, COUNT(telechargement.cat) AS nbdocs FROM cat_telech LEFT JOIN telechargement ON telechargement.cat=cat_telech.id GROUP BY cat_telech.id";
$Recordset2 = mysql_query($query_Recordset2, $base) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);
[/code]

Affichage :

[code PHP]
<?php
      do { ?>
        <p><a href="telechargement2.php?id=<?php echo $row_Recordset2['cat_telech.id']; ?>"><?php echo $row_Recordset2['titre']; ?></a> <?php echo $row_Recordset2['nbdocs']; ?></p>
       <?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?>[/code]


Ouf !

bon, on peut améliorer je pense !

Merci en tout cas de votre aide !

#2 Re : Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

ou alors faire une seule requête, je pense que c'est mieux, mais j'ai essayé d'ajouter dans la requête de Kris les champs t.id et t.titre et ça plante...

#3 Re : Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

ha ben oui, je fais pas de boucle sur le recordset 2 mais sur le 1, donc il affiche uniquement le premier résultat de la requête et ce pour chaque ligne!

je dois inclure une deuxième boucle ?

#4 Re : Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

j'ai fait le test sous phpmyadmin, et là ça fonctionne, nbdocs représente bien le nombre correct de documents par catégorie.

le problème doit donc venir de ma boucle pour l'affichage.

je vais regarder de ce côté là.

#5 Re : Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

Me voici de retour avec de mauvaises nouvelles ! big_smile

J'ai utilisé le code proposé par Kris et ça donne le même résultat qu'avant, à savoir le nombre 10 à coté de chaque ligne...

voici mon select, j 'ai peut-être fait une erreur ? :

[code php]
SELECT cat_telech.id, cat_telech.titre, COUNT(*) AS nbdocs
FROM cat_telech
LEFT JOIN telechargement
        ON telechargement.cat=cat_telech.id
GROUP BY cat_telech.id[/code]

#6 Re : Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

Merci beaucoup pour les explications, et le temps passé à les donner !

Je vais essayer tout ça, assimiler les connaissances, et je reviens vous dire ce qu'il en est !

#7 Re : Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

re xTG,

j'ai essayé avec cat_telech.id, ça donne toujours le nombre 10 à côté de chaque ligne...

#8 Re : Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

ha, pour le "nombre" j'ai trouvé ce que c'est :

MySQL a étendu l'utilisation de la clause GROUP BY . Vous pouvez utiliser des noms de colonnes ou des expressions qui n'apparaissent pas dans la clause GROUP BY . Elles prennent alors n'importe quelle valeur possible dans ce groupe .


C'est cela ?

#10 Re : Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

alors j'ai essayé comme ceci :

[code php]
mysql_select_db($database_perene, $perene);
$query_Recordset2 = "SELECT cat_telech.titre, COUNT(telechargement.id) AS nombre
FROM cat_telech INNER JOIN telechargement
ON cat_telech.id = telechargement.cat
GROUP BY telechargement.cat";
$Recordset2 = mysql_query($query_Recordset2, $perene) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);[/code]

et pour l'affichage :
[code php]
<?php echo $row_Recordset2['nombre']; ?>[/code]

(j'ai essayé d'utiliser le "nombre")

résultat : ça me met "10"  à côté de chaque ligne. smile

doit y avoir un bug, héhé!

#11 Re : Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

Merci bcp!

je vais essayer ça et je te redis.

à la première ligne, que représente "nombre" ? c'est un champs?

#12 Re : Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

ok merci, j'ai regardé la doc du group by, ça me donne plus d'infos pour continuer !

alors voici ma réflexion :

déjà mes tables:

les catégories sont dans la table "cat_telech", avec les champs : id, titre

les documents sont dans la table "telechargement", avec les champs : id, titre, fichier, cat (qui reprend le n° de catégorie).

il faudrait donc faire la requete suivante :

SELECT Count(*) FROM telechargement GROUP BY cat


Question : comment afficher le bon numéro à côté de chaque catégorie? avec un WHERE?

#13 Forum Général PHP » compter nombre d'enregistrements par catégories » 08-12-2010 16:23:32

troubadour
Réponses : 25

Bonjour à tous!

je suis nouvellement inscrit sur ce forum car j'ai un petit souci dans une requête.

j'affiche une liste de catégories dans une page php. Chaque éléments de cette liste est un lien vers une page de détails, où l'on trouve les documents faisant partie de la catégorie choisie.

A côté de chaque catégorie, j'aimerais afficher le nombre de documents qui en font partie.

J'ai regardé du côté de la fonction Count, mais j'ai du mal à comprendre comment cela fonctionne.


Pour l'instant, j'ai la requête suivante :


mysql_select_db($database_BASE, $BASE);
$query_Recordset1 = "SELECT * FROM cat_telech ORDER BY cat_telech.titre";
$Recordset1 = mysql_query($query_Recordset1, $BASE) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
 

et j'affiche les catégories comme ceci :


<?php do { ?>
        <p><a href="telechargement2.php?id=<?php echo $row_Recordset1['id']; ?>"><?php echo $row_Recordset1['titre']; ?></a> </p>
        <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>

Si quelqu'un a une piste, ce serait sympa !

Merci à vous de m'avoir lu ! smile

Pied de page des forums

Propulsé par FluxBB