Select count

Résolu/Fermé
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 - 15 sept. 2010 à 13:29
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 15 sept. 2010 à 14:48
Bonjour,

Voila j'ai un soucis, j'utilise 3 tables que je note ci-dessous :
table indexation (id_index, eid, id_users)
table phpc_events (eid, cid, owner, subject, description, readonly, catid, archive)
table phpc_occurrences(oid, eid, startdate, enddate, starttime, endtime, timetype)

phpc_events corresponds à l'entrée des évenements dans un calendrier avec sujet et description

phpc_occurrences est lié au précédent et montre l'heure de début, l'heure de fin, la date de début et la date de fin d'un évenement.

indexation correspond aux groupes formé entre un évenement et un utilisateur. (eid etant l'id de l'évenement et id_user celui de l'utilisateur)

J'ai donc crée un tableau de ce style
<table>
<tr>
<td>sujet</td><td>supprimer</td><td nbr inscrits</td>


Mon idée était de pouvoir visualiser l'ensemble des évenements entrés dans le calendrier avec le nombre d'inscrits à côté.

Mon problème étant que je n'arrive à visualiser que les évenements où il y a des inscrits... Si pas d'inscrits rien à l'écran :(

mon code ci-dessous :

- code php avant header
$sql="select phpc_events.eid, phpc_events.subject, phpc_events.description, phpc_events.archive, phpc_occurrences.eid, phpc_occurrences.oid, phpc_occurrences.starttime, phpc_occurrences.endtime, phpc_occurrences.startdate, phpc_occurrences.enddate 
FROM phpc_events, phpc_occurrences 
WHERE phpc_events.eid=phpc_occurrences.eid 
ORDER BY phpc_occurrences.startdate";

$rez=mysql_query($sql);
$nb_lignes = mysql_affected_rows();


$sql_count="SELECT count(indexation.eid)as nb_inscrits, phpc_events.eid 
	FROM indexation, phpc_events
	WHERE indexation.eid=phpc_events.eid
	GROUP BY indexation.eid
	ORDER BY indexation.eid desc";

	$rez_count=mysql_query($sql_count);
	$nb_lignes3 = mysql_affected_rows();


- code php de la table
<?php
while(($nn=mysql_fetch_array($rez)) && ($nnc=mysql_fetch_array($rez_count))){
	?>
<tr>
	<?php if ($nn[3] != 1){ ?>
<td><a href="gestion_agenda.php?eid=<?php echo $nn[0]; ?>">&nbsp;- <?php echo $nn[1]."(le&nbsp;".date("d/m/Y", strtotime($nn[8])).")"; ?></a></td>

<td align="center"><a href="files/traitement_agenda.php?eid=-<?php echo $nn[0]; ?>"><img src="img/false.png" border="0" /></a></td>
<td align="center"><?php echo $nnc[0]; ?>
</td>
	<?php } ?>
</tr>
	<?php 
	}
	?>


Si quelqu'un pouvait m'aider ce serait sympa, je tourne en rond depuis ce matin :(


5 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 15/09/2010 à 14:10
Bonjour,

Essaie cette requête :
table indexation (id_index, eid, id_users)
table phpc_events (eid, cid, owner, subject, description, readonly, catid, archive)
table phpc_occurrences(oid, eid, startdate, enddate, starttime, endtime, timetype)
SELECT count(*) as nb_inscrits,  
    e.eid, 
    e.subject, 
    e.description,  
    e.archive,  
    o.starttime,  
    o.endtime, 
    o.startdate,  
    o.enddate  
FROM phpc_events e 
INNER JOIN phpc_occurences o ON e.eid = o.eid 
LEFT OUTER JOIN indexation i ON e.eid = i.eid 
GROUP BY e.eid 
ORDER BY o.startdate 

Cette requête remplace tes deux requêtes.
Le code de ta table s'écrit alors :
<?php 
$query = "SELECT count(*) as nb_inscrits,  
    e.eid, 
    e.subject, 
    e.description,  
    e.archive,  
    o.starttime,  
    o.endtime, 
    o.startdate,  
    o.enddate  
FROM phpc_events e 
INNER JOIN phpc_occurences o ON e.eid = o.eid 
LEFT OUTER JOIN indexation i ON e.eid = i.eid 
GROUP BY e.eid 
ORDER BY o.startdate"; 
$rez = mysql_query($query) 
    or die("Erreur dans la requête $query<br />".mysql_error()); 

while($nn = mysql_fetch_array($rez)) 
{ 
    echo "<tr>"; 
    if ($nn["archive"] != 1) 
    { 
        echo "<td><a href=\"gestion_agenda.php?eid=".$nn["eid"]."\"> - ".$nn["subject"]."(le ".date("d/m/Y", strtotime($nn[startdate])).")</a></td>"; 

        echo "<td align=\"center\"><a href=\"files/traitement_agenda.php?eid=-".$nn["eid"]."\"><img src=\"img/false.png\" border=\"0\" /></a></td>"; 
        echo "<td align='center'>".$nn["nb_inscrits"]."</td>"; 
    } 
    echo "</tr>"; 
} 
?>

Je me suis permis de remplacer les nn[x] par des nn["nom"] que je trouve beaucoup plus explicites et pratiques, ainsi que la gestion du code html. c'est une préférence personnelle, mais tu fais comme tu veux :)

Xavier
1
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
15 sept. 2010 à 14:15
je test ça et je te dis si ça fonctionne le temps de créer une sauvegarde de mon fichier entre-temps :P
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
15 sept. 2010 à 14:24
alors c'est cool ça fonctionne y'a juste des doubles quote oubliées à ($nn[startdate])...

par contre si tu pouvais juste m'expliquer comment tu fais pour que le o. ou le e. soient reconnus sans que tu ais fait de AS ? Oo que je puisse le réutiliser pour mes autres requête du coup :P

merci pour le coup de main super sympa ^^
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
15 sept. 2010 à 14:31
Le AS est facultatif :
FROM phpc_events e
INNER JOIN phpc_occurences o ...
LEFT OUTER JOIN indexation i ...

Nom de la table suivi du nom qu'on veut lui donner (alias)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
15 sept. 2010 à 14:40
d'accord je te remercie... juste un tit truc c'était pas count(*) qu'il fallait mettre mais count(i.eid)... si * ça mettait 1 inscrit partout ^^
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
15 sept. 2010 à 14:48
Oui c'est ce que je venais de me dire :)
Content que t'aies pu corriger ^^
0