Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 05/10/2011, 15h56   #1
Nouveau Membre du Club
 
Inscription : février 2009
Messages : 123
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 123
Points : 29
Points : 29
Par défaut Ne lit que la premiere entrée

Bonjour a tous,

j'ai un serveur web et je voudrais pouvoir savoir precisement quelle personne a vu quelle page.

J'ai donc fait un script php en choisissant la date courante.

Celui ci fonctionne qu'a moitie car il me donne que la premiere page visitée de la journée.

Je ne comprend pas mon erreur.

Alors si vous pouvez m'aider, je vous en serais très reconnaissant.

Merci d'avance.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<html lang="fr"><head><meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"></head>
<body>
<basefont face="Tahoma" size="2"> 
<br>
<center><h2><span style="color: rgb(92, 168, 10);"><i>Les visiteurs</i></span></h2></center>
<center><TABLE width="300" border="1" cellspacing="0" cellpadding="0">
 
  <tr>
	<td width="5"><font face="tahoma" size="2"><span style="color: rgb(92, 168, 10);"><div align="center">Nom</div><span></font></td>
 
	<td width="5"><font face="tahoma" size="2"><span style="color: rgb(92, 168, 10);"><div align="center">Date</div><span></font></td>
 
	<td width="5"><font face="tahoma" size="2"><span style="color: rgb(92, 168, 10);"><div align="center">Pages</div><span></font></td>
 
 </tr>
<?php
 
//Connection Mysql
mysql_connect("*****","*****","******")OR die("Problème avec la base de données");
mysql_select_db("*********")OR die ("pas de connection");
 
 
$reponse = mysql_query("SELECT DISTINCT jom15_users.name, jom15_jstats_visits.visit_date, jom15_jstats_pages.page_title
FROM jom15_users
INNER JOIN jom15_jstats_visits ON jom15_jstats_visits.joomla_userid = jom15_users.id
INNER JOIN jom15_jstats_impressions ON jom15_jstats_impressions.visit_id = jom15_jstats_visits.visit_id
INNER JOIN jom15_jstats_pages ON jom15_jstats_pages.page_id = jom15_jstats_impressions.page_id
WHERE jom15_jstats_visits.visit_date = CURDATE() GROUP BY jom15_users.name")  OR die ("Désolé, il y a eu un problème dans la transmission des données"); // Requête SQL
 
 
 
// ON fait une boucle pour lister tout ce que contient la TABLE :
//***********************************************************************************************************************
if ($reponse)
{
//*************************************************************************************************************************
while ($donnees = mysql_fetch_array($reponse))
 
{
 
?>
 
  <tr>
 
	<td><center><font face="tahoma" size="2"><?php echo $donnees['0']; ?></font></center></td>
	<td><center><font face="tahoma" size="2"><?php echo $donnees['1']; ?></font></center></td>
	<td><center><font face="tahoma" size="2"><?php echo $donnees['2']; ?></font></center></td>
 
   </tr>
 
<?php
 
}
 
 
 
//mysql_close(); // Déconnexion de MySQL
//****************************************************************************************************
}
else
{
echo 'Pas de champs!!!';
}
//****************************************************************************************************
?>
</table></center>
<br><br>
</body></html>
steph70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 16h21   #2
Membre expérimenté
 
Inscription : janvier 2007
Messages : 620
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 620
Points : 553
Points : 553
Bonjour,
Pour mieux cerner ton problème, je te conseilles d'exécuter cette requête sous phpmyadmin et voir quel résultat tu obtiens.
kabkab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 16h30   #3
Nouveau Membre du Club
 
Inscription : février 2009
Messages : 123
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 123
Points : 29
Points : 29
Je viens de tester et j'ai le meme resultat.

Il ne m'affiche que la première entrée.

c'est fou !!!

Amicalement
Steph70
steph70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 23h18   #4
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Sans chercher à analyser ta requête, c'est visiblement un problème SQL, donc il faudrait poster dans le forum SQL.
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 21h07   #5
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 641
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 641
Points : 2 634
Points : 2 634
bonjour,

Code :
1
2
3
4
5
6
7
 
SELECT DISTINCT jom15_users.name, jom15_jstats_visits.visit_date, jom15_jstats_pages.page_title
FROM jom15_users
INNER JOIN jom15_jstats_visits ON jom15_jstats_visits.joomla_userid = jom15_users.id
INNER JOIN jom15_jstats_impressions ON jom15_jstats_impressions.visit_id = jom15_jstats_visits.visit_id
INNER JOIN jom15_jstats_pages ON jom15_jstats_pages.page_id = jom15_jstats_impressions.page_id
WHERE jom15_jstats_visits.visit_date = CURDATE() GROUP BY jom15_users.name
Déjà essayez sans le group by qui est inutile ici (et mal utilisé).
Le distinct suffit.

Si votre requête continue à ne retourner qu'un résultat et bien c'est que votre site n'est regardé que par une seule personne ! ou que vos jointures sont trop restrictive par rapport à votre besoin.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 08h28   #6
Nouveau Membre du Club
 
Inscription : février 2009
Messages : 123
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 123
Points : 29
Points : 29
Merci a tous,

La solution :

Code :
1
2
3
4
5
6
SELECT DISTINCT jom15_users.name, jom15_jstats_visits.visit_date, jom15_jstats_pages.page_title
FROM jom15_users
INNER JOIN jom15_jstats_visits ON jom15_jstats_visits.joomla_userid = jom15_users.id
INNER JOIN jom15_jstats_impressions ON jom15_jstats_impressions.visit_id = jom15_jstats_visits.visit_id
INNER JOIN jom15_jstats_pages ON jom15_jstats_pages.page_id = jom15_jstats_impressions.page_id
WHERE jom15_jstats_visits.visit_date = CURDATE()GROUP BY jom15_users.name,jom15_jstats_pages.page_title ORDER BY jom15_users.name,jom15_jstats_pages.page_title")  or die ("Désolé, il y a eu un problème dans la transmission des données
steph70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 09h00   #7
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 641
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 641
Points : 2 634
Points : 2 634
bonjour,

Je vais me répeter mais votre requête est, syntaxiquement, FAUSSE.

La clause "group by" n'est à utiliser qu'avec des fonctions d'agrégation du type : sum, max, min, etc.


De plus dans la clause select vous devez avoir toutes les colonnes non agrégée de votre group by. Ici ce n'est pas le cas.

Ici vous n'avez pas de message d'erreur car votre SGBD doit être MySql qui réagit très bizarement sur ce genre de statement.

Donc j'en reviens à ce que j'ai dit plus haut, le group by, ici, est inutile et inadapté.

Gardez seulement le distinct.


un peu de lecture : http://sqlpro.developpez.com/cours/sqlaz/ensembles/
punkoff 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 21h14.


 
 
 
 
Partenaires

Hébergement Web