[php] Ne lit que la premiere entree

Résolu
lonewolf -  
 lonewolf -
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><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><CODE>

A voir également:

10 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Rien d'étonnant à cela.
Dans ta requête d'insertion, tu utilises la date sans l'heure.
En effet, CURDATE() donnera juste la date.
Comme dans ton select, tu fais un DISTINCT, toutes les lignes qui ont la même date seront réduites à une seule.
Utilise plutôt NOW(), qui donne Date + Heure.
http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html

Xavier
1
lonewolf
 
Un petit up
Merci pour votre aide
Amicalement
0
le père
 
Bonjour

Comme il n'y a rien d'anormal qui me saute aux yeux et que personne ne te répond, une question bête : as-tu essayé ta requête "à la main", par exemple dans phpmyadmin ?
As-tu bien plusieurs visiteurs différents ? Sinon, c'est normal que tu n'aies qu'une seule réponse avec WHERE jom15_jstats_visits.visit_date = CURDATE() GROUP BY jom15_users.name : tu sélectionnes une seule date et tu regroupes toutes les visites de chaque utilisateur
0
lonewolf
 
Tout d'abord merci de l'interet que tu portes a ma question.

Oui j'ai fait la requete a la main dans phpmyadmin et j'ai le meme resultat.

Je n'ai que la première entrée comme si la requete s'arretait dès quelle a trouvé quelques choses sans aller plus loin.

Amicalement
0

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

Posez votre question
lonewolf
 
Bonjour,
je comprend bien ta réponse et elle est bien frappé du bon sens, néanmoins elle ne change rien.

En effet, j'ai essayé avec NOW(), meme avec la date en dure, et meme en enlevant le DISTINCT mais ca ne change rien au resultat.

Merci encore pour ton aide

Amicalement
0
le père
 
Utiliser NOW() n'a aucune raison de t'apporter quelque chose si ton champ visit_date ne contient, comme son nom semble l'indiquer, que la date.

Tu n'as pas répondu à ma question : as-tu bien plusieurs visiteurs le même jour ?

Avec ton GROUP BY jom15_users.name tu ne visualises qu'une seule ligne par visiteur, même s'il a vu plusieurs pages. Tu n'auras qu'une page pour chaque personne, et non pas chaque page vue par chaque personne
0
lonewolf
 
excuse moi, je n'avais pas vu ta question.

Oui j'ai plusieurs visiteurs le meme jour

Amicalement
0
lonewolf
 
Effectivement, lorsque j'enleve le GROUP BY, j'ai plus de reponse.

Néanmoins comment faire pour avoir un classement alphabétique si j'enleve le GROUP BY ?

Amicalement
0
le père
 
comment faire pour avoir un classement alphabétique si j'enleve le GROUP BY ?
Je ne vois pas le rapport entre le GROUP BY et le classement alphabétique.
J'ai l'impression que ce que tu cherches c'est
$reponse = mysql_query("SELECT 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"); 
0
lonewolf
 
Merci c'est bien cela que je cherchais

Post resolu

Merci beaucoup pour votre aide précieuse

Amicalement
0