[php] Somme dans mon resultat de requete

Résolu/Fermé
lonewolf - 11 août 2011 à 14:22
 lonewolf - 11 août 2011 à 15:31
Bonjour a tous, j'ai un script qui compte le nombre de visite sur certaines pages de mon site.

Il me donne donc un tableau avec un nombre de visites pour chaque jour compris entre les dates données dans le script.

Je chercherais plutot a avoir une seule ligne avec le nombre en global.

Cela fait plusieurs jours que je cherche sans trouver. Pouvez vous m'aider svp.

Une partie de mon script :
<?php

	//Connexion à la base. 
	mysql_connect("******","********","*************")or die("Problème avec la base de données");
	mysql_select_db("***********")or die ("pas de connection");

//recup des variables
$dated=$_POST['dated'];
$datef=$_POST['datef'];
$categories=$_POST['categories'];

//Requête
//Vide la table 'nom_de_la_table'
$reponse=mysql_query("SELECT jom15_jstats_visits.visit_date, jom15_categories.title, COUNT(*) 
FROM jom15_jstats_impressions
INNER JOIN jom15_jstats_visits ON jom15_jstats_visits.visit_id = jom15_jstats_impressions.visit_id
INNER JOIN jom15_jstats_pages ON jom15_jstats_pages.page_id = jom15_jstats_impressions.page_id
INNER JOIN jom15_content ON jom15_jstats_pages.page_title = jom15_content.title
INNER JOIN jom15_categories ON jom15_content.catid =
jom15_categories.id 
WHERE jom15_jstats_visits.visit_date BETWEEN '$dated' AND '$datef' AND jom15_categories.id = '$categories' GROUP BY jom15_jstats_visits.visit_date") or die ("Désolé, il y a eu un problème dans la transmission des données". mysql_error()); 
	// 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>
	<!--echo "<meta http-equiv='refresh' content='0';URL=".$_SERVER['PHP_SELF'].".php?refresh=0'>"; -->
<?php

		}



//mysql_close(); // Déconnexion de MySQL
//****************************************************************************************************
	}
	else
	{
	echo 'Pas de champs!!!';
	}
//****************************************************************************************************
?>


Mon resultat actuel (en gros) :


Date        Categories        Nb pages visitées
2011-02-1  FDS S                       2
2011-02-14 FDS S                      2
2011-02-15 FDS S                      4
2011-02-16 FDS S                      6
2011-02-20 FDS S                      2


Et le resultat souhaité :

  Categories        Nb pages visitées
  FDS S                       16


Merci d'avance pour votre aide précieuse
Steph70

2 réponses

lupuz Messages postés 68 Date d'inscription mercredi 10 août 2011 Statut Membre Dernière intervention 12 août 2011 11
11 août 2011 à 14:30
Je te propose d'ajouter une ligne avec les totaux en modifiant ton code comme ca :

....
$total =0
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>
	<!--echo "<meta http-equiv='refresh' content='0';URL=".$_SERVER['PHP_SELF'].".php?refresh=0'>"; -->
<?php

$total +=  $donnees['2'];
}
?>

  <tr>
  
	<td></td>
	<td></td>
	<td><center><font face="tahoma" size="2"><?php echo $total ; ?></font></center></td>
	
   </tr>
	<!--echo "<meta http-equiv='refresh' content='0';URL=".$_SERVER['PHP_SELF'].".php?refresh=0'>"; -->
<?php

...
0
La solution : remplacer le group by comme ceci :

GROUP BY jom15_categories.title


Merci encore

Amicalement
0