Essayes d'exécuter ta requête et de faire un echo tout simplement ou de faire ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $variable=mysql_result($somme,0)
Essayes d'exécuter ta requête et de faire un echo tout simplement ou de faire ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $variable=mysql_result($somme,0)
elle me sert a recuperer l'id du truc non ?
si je l'enleve :
retourne : 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php $sql = "SELECT COUNT(nombre) as masomme FROM ( SELECT * FROM event WHERE etat = 'publique' OR etat = 'prive') AS tablecompte INNER JOIN inscriptevent on inscriptevent.id_event = tablecompte.id_event GROUP BY inscriptevent.nombre order by COUNT(nombre) ASC"; $somme = mysql_query($sql,$cnx) or die ('Erreur : '.mysql_error() ); $detail = mysql_fetch_array($somme); echo '<hr>'; echo $detail['masomme']; echo $donnees['titre']; ?>
Notice: Undefined variable: donnees in /home/groskane/public_html/matthieu/fr/best_event.php on line 52
En fait, avec ma requête, tu n'as plus besoin que d'une seule requête, donc:
Devient:
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 <?php $retour = mysql_query("SELECT * FROM event WHERE etat = 'publique' OR etat = 'prive' "); while ($donnees = mysql_fetch_array($retour)){ $id_event = $donnees['id_event']; $sql = "SELECT COUNT(nombre) as masomme FROM ( SELECT * FROM event WHERE etat = 'publique' OR etat = 'prive') AS tablecompte INNER JOIN inscriptevent on inscriptevent.id_event = $id_event GROUP BY inscriptevent.nombre order by COUNT(nombre) ASC"; $somme = mysql_query($sql,$cnx) or die ('Erreur : '.mysql_error() ); $detail = mysql_fetch_array($somme); echo '<hr>'; echo $detail['masomme']; echo $donnees['titre']; } ?>
J'ai simplifié un peu l'affichage, mais en théorie, ça devrait fonctionner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $sql = "SELECT COUNT(nombre) as masomme FROM ( SELECT * FROM event WHERE etat = 'publique' OR etat = 'prive') AS tablecompte INNER JOIN inscriptevent on inscriptevent.id_event = $id_event GROUP BY inscriptevent.nombre order by COUNT(nombre) ASC"; $retour = mysql_query($sql) or die(mysql_error()); while ($donnees = mysql_fetch_array($retour)){ echo "<hr>"; echo $donnees['masomme']; }
oui mais la du coup dans ton dernier code, je n'ai plus $id_event
du coup, comment tout recuperer ?
Dans la jointure, il y a $id_event, donc non à mon avis ca risque pas de marcher étant donné que la variable n'est déclarée nulle part.
Je pense qu'il faut simplement remplacer cette ligne :
par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part INNER JOIN inscriptevent on inscriptevent.id_event = $id_event
Code : Sélectionner tout - Visualiser dans une fenêtre à part INNER JOIN inscriptevent on inscriptevent.id_event = event.id_event
en mettantca me retourne : Unknown column 'event.id_event' in 'on clause'
Code : Sélectionner tout - Visualiser dans une fenêtre à part event.id_event
Parce ce que j'ai mis ne doit pas correspondre à ce que tu à toi dans la base de données.
Dans ce cas, c'est parce que la colonne de la table event qui contient l'identificateur de l'événement ne s'appelle pas id_event. Regarde dans ta table et trouve le bon nom de champs.
Ah, c'est vrai, il faut que tu utilises l'alias de la table que tu as créé, donc:
tablecompte.id_event
donc ca nous fait :
mais le calcul ne semble pas juste, et $donnees['titre']; genere une erreur..
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 <?php $sql = "SELECT COUNT(nombre) as masomme FROM ( SELECT * FROM event WHERE etat = 'publique' OR etat = 'prive') AS tablecompte INNER JOIN inscriptevent on inscriptevent.id_event = tablecompte.id_event GROUP BY inscriptevent.nombre order by COUNT(nombre) ASC"; $retour = mysql_query($sql) or die(mysql_error()); while ($donnees = mysql_fetch_array($retour)){ echo "<hr>"; echo $donnees['masomme']; echo $donnees['titre']; } ?>
$donnees['titre'] donne une erreur parce qu'il ne fait pas partie de la liste de champs que tu récupères de la Base de données.
Rajoute le simplement au début:
Pour ce qui est du résultat qui est erroné, il nous est difficile de pouvoir t'aider sans que tu sois un peu plus précis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT COUNT(nombre) as masomme, Titre FROM.....
bon :
voila les structures des deux tables :
la table inscriptevent
La table event :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 inscriptevent `id_inscription` `id_event` `username` `nombre` `participer` `voir` `valider`
le code :
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 `id_event` `titre` `theme` `descriptif` `jour` `mois` `etat` `user` `adresse` `ville` `pays` `valider` `jourf` `moisf` `okfin` `place` `placedispo` `inscription` `img` `heure` `minute` `tag` `categorie` `annee` `anneef` `numero_group` `titre_base`
chaque fois qu'une personne s'inscrit a un évenement, ca rempli la table inscriptevent avec l'id de l'evenement et le nombre de personnes que la personne a inscrite avec elle.
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 <?php $sql = "SELECT COUNT(nombre) as masomme, titre FROM ( SELECT * FROM event WHERE etat = 'publique' OR etat = 'prive') AS tablecompte INNER JOIN inscriptevent on inscriptevent.id_event = tablecompte.id_event GROUP BY inscriptevent.nombre order by COUNT(nombre) ASC"; $retour = mysql_query($sql) or die(mysql_error()); while ($donnees = mysql_fetch_array($retour)){ echo "<hr>"; echo $donnees['masomme']; echo $donnees['titre']; } ?>
Le but du jeu est de ressortir tout les evenement avec a coté le nombre total de personnes inscrites a chaque evenement..
mais la ..![]()
Ah, d'accord... je comprends mieux maintenant pourquoi tu faisais la somme et non le compte. Tu avais donc raison sur ce point... il fallait utiliser SUM.
et donc, pour aller chercher le titre, tu ajoutes:
Et en bout de ligne, $donnees['titre'] devrait arrêter de te faire une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT SUM(nombre) as masomme, tablecompte.titre as titre FROM......
Modifie également la clause ORDER BY pour mettre SUM(nombre) à la place et on devrait être pas mal en business.
donc la ca semble plutot pas tout mal, mais encore tout a fait ca..
en fait j'ai l'impression qu'il ne prends pas tout en compte, se limite a quatre bizarement, et qu'il ne compte pas vraiment..
Voila le resultat : (le premier chiffre est ce qu'il a calculé) , je ne comprends pas pourquoi il prends partie time2 deux fois et dans la table des inscriptions j'ai huit évenements different..
la requete :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 2 partie time 2 4 essai avec editeur de texte 7 test ev 2 8 partie time 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $sql = "SELECT SUM(nombre) as masomme, tablecompte.titre as titre FROM ( SELECT * FROM event WHERE etat = 'publique' OR etat = 'prive') AS tablecompte INNER JOIN inscriptevent on inscriptevent.id_event = tablecompte.id_event GROUP BY inscriptevent.nombre order by SUM(nombre) ASC"; $retour = mysql_query($sql) or die(mysql_error()); while ($donnees = mysql_fetch_array($retour)){ echo "<hr>"; echo $donnees['masomme']; echo $donnees['titre']; }
Il faudrait voir si l'état des autres événements est "publique" ou "privé", autrement il va les ignorer. Également, je me suis trompé dans la clause "group by" de la requête
C'est pas sur le nombre qu'on doit regrouper... mais sur l'ID de l'événement
Donc "GROUP BY nombre"
devient
GROUP BY inscriptevent.id_event
Partager