Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/12/2010, 12h26   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2008
Messages : 41
Points : 13
Points : 13
Par défaut Récupérer nb d'entrées dans une jointure

Bonjour à tous,
J'ai encore un souci dans une requête qui fait appel à deux bases de données.
En fait, j'ai une liste de rubriques (1ère bdd), et pour chaque rubrique je voudrais indiquer le nb d'images disponibles (2eme bdd).

Ma jointure est comme ci :
Code :
 $reponse = $bdd->query('SELECT r.date_sortie, r.id, r.nom, r.support, r.prix, i.up_id_rubrique FROM rubrique r INNER JOIN images i ON r.id = i.up_id_rubrique WHERE r.categorie =\'Studio\' ORDER BY r.date_sortie DESC');
Ma liste est comme ça :
Code :
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
 
<table width="100%">
<h1>CALENDRIER DES SORTIES DE STUDIO</h1>
<tr id="entete-tableau">
<td width="90px">Date de sortie</td>
<td>Titre</td>
<td>Eléments disponibles</td>
<td>Support</td>
<td width="75px">Prix</td>
</tr>
<?php
while ($donnees = $reponse->fetch())
{
?>	
<tr id="tableau">
<td><?php echo $donnees['date_sortie'] ?></td>
<td><div><a href="/galerie.php?id=<?php echo $donnees['id']?> "/><?php echo $donnees['nom'] ?></a></div></td>
 <td>
<?php 
$nb = count(array($donnees['up_id_rubrique']));
echo $nb;
?>
</td>
<td><?php echo $donnees['support'] ?></td>
<td><?php echo $donnees['prix'] ?> euros</td>
</tr>
<?php
}
 $reponse->closeCursor();
?>
</table>
Or si je fais comme cela, ma requête retourne autant de lignes qu'il y a de fichiers disponibles.
Le souci semble être là :
Code :
1
2
3
4
5
6
7
 
<td>
<?php 
$nb = count(array($donnees['up_id_rubrique']));
echo $nb;
?>
</td>
Je souhaiterais juste qu'elle compte le nb d'entrées :
Auriez-vous une idée ?
MarieNum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 13h32   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Je n'ai pas validé mais avec un COUNT :
Code sql :
1
2
3
4
5
SELECT r.date_sortie, r.id, r.nom, r.support, r.prix, COUNT(i.up_id_rubrique)
FROM rubrique r INNER JOIN images i ON r.id = i.up_id_rubrique 
WHERE r.categorie ='Studio' 
GROUP BY i.up_id_rubrique
ORDER BY r.date_sortie DESC
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 30/12/2010, 13h58   #3
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
plutôt comme ça non?

Code :
1
2
3
4
5
SELECT r.date_sortie, r.id, r.nom, r.support, r.prix, COUNT(i.up_id_rubrique)
FROM rubrique r INNER JOIN images i ON r.id = i.up_id_rubrique 
WHERE r.categorie ='Studio' 
GROUP BY r.date_sortie, r.id, r.nom, r.support, r.prix
ORDER BY r.date_sortie DESC
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/12/2010, 14h05   #4
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Oui, sinon les date_sortie, id, nom, support, prix seront sélectionnés "aléatoirement". MySQL est laxiste, logiquement il devrait refuser un GROUP BY non groupés sur tous les champs du SELECT
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 14h06   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2008
Messages : 41
Points : 13
Points : 13
Génial, la réponse de Sabotage fonctionne super.
Il fallait faire le COUNT dans la requête, (et grouper par "up_id_rubrique"), je ne savais pas qu'on pouvait faire comme ça.
Merci encore,
Très bonnes fêtes à tous !
MarieNum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 14h07   #6
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Lis les 2 réponses précédentes quand même afin de ne pas avoir de mauvaises surprises; )
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/12/2010, 14h07   #7
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Citation:
Envoyé par Madfrix Voir le message
Oui, sinon les date_sortie, id, nom, support, prix seront sélectionnés "aléatoirement". MySQL est laxiste, logiquement il devrait refuser un GROUP BY non groupés sur tous les champs du SELECT
oui et je dirais même plus que le group by portait sur le champ du count ..
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 14h13   #8
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2008
Messages : 41
Points : 13
Points : 13
Autant pour moi, effectivement, j'ai un bug. Ce n'est pas le compte qu'il me donne mais le numéro des rubriques...
Je re-checke et reviens vers vous,
Merci beaucoup
MarieNum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 14h33   #9
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2008
Messages : 41
Points : 13
Points : 13
Effectivement, au final, il semble que la 2e requête "fonctionne", mais elle ne retourne pas le résultat demandé. (ma cellule s'affiche vide).
Code :
1
2
3
4
5
6
 
SELECT r.date_sortie, r.id, r.nom, r.support, r.prix, COUNT(i.up_id_rubrique)
FROM rubrique r INNER JOIN images i ON r.id = i.up_id_rubrique 
WHERE r.categorie ='Studio' 
GROUP BY r.date_sortie, r.id, r.nom, r.support, r.prix
ORDER BY r.date_sortie DESC
Peut-être est-ce parce que je n'appelle pas les données comme il faut.
je l'appelle tout bêtement comme cela :
Code :
 <td><?php echo $donnees['up_id_rubrique'];?> </td>
Comment dois-je appeler le résultat de ce COUNT ?
MarieNum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 14h50   #10
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
utilise un alias
Code :
SELECT r.date_sortie, r.id, r.nom, r.support, r.prix, COUNT(i.up_id_rubrique) as compte
et appelle $donnees['compte']
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/12/2010, 15h03   #11
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2008
Messages : 41
Points : 13
Points : 13
Super Merci, ça cartonne !!!!
Très bonnes fêtes à tous !
MarieNum est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h36.


 
 
 
 
Partenaires

Hébergement Web