Vous n'êtes pas identifié(e).
Hello à tous,
je me suis mis à vouloir afficher des stats, et donc, j'ai lu et essayer d'utiliser COUNT, mais je bloque sur la façon de faire pour afficher les resultats en triant les données par des listbox contenant l'année, le mois, le jour, et l'heure....
<table width="600" border="0" align="center" cellpadding="0" cellspacing="0" id="tableprincipale">
<tr>
<td width="300" class="td4">Opérateur : </td>
<td class="td5">
<label>
<select name="operateur" id="operateur">
<option value="operateur01">operateur 01</option>
<option value="operateur02">operateur 02</option>
<option value="operateur03">operateur 03</option>
<option value="operateur04">operateur 04</option>
</select>
</label> </td>
</tr>
<tr>
<td colspan="4" class="td4"><input type="submit" name="Submit" value="Envoyer" /></td>
</tr>
</table>
</form>
<br />
<?php
// connexion a la base
require_once("connexion.php");
$BD_link = mysql_connect("${'BD_host'}${'BD_port'}", $BD_login, $BD_pass) or die("Connexion de la base impossible : ". mysql_error());
$operateur = $_POST["operateur"];
echo $operateur ;
//comptage des entrées
$req = mysql_query("SELECT COUNT(*) as Count FROM `prospect` WHERE valid ='1' AND operateur = '$operateur' " );
if ($req)
{
$res = mysql_fetch_array($req);
echo '<center>Il y a '.$res["Count"].' annonce(s) en attente de validation</center>';
}
?>
Ma methode est loin d'être parfaite (un self aurait été bienvenue mais bon, ça me va), mais ça compte le nombre validé par l'opérateur que je selectionne. Il me reste pouvoir afficher le resultats en rajoutant par le annee/mois/jour. Mais dans ma table, j'enregistre la date au format date 2010-05-07.
Merci d'avance
Hors ligne
salut,
Mais si tu veux de vraies stats, je te conseille des sites comme Piwik... ou Google Analytics
P.S : pourquoi tu mets pas ton $BD_link dans ton fichier connexion.php ??
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Hello Alnoss,
non, non, je ne veux pas de vrai stats, c'est réservé à une utilisation interne afin d'affiner l'ergonomie.
Pour le BDLINK, j'avoue ne pas y avoir pensé un seul instant...
Hors ligne
Bonsoir,
AWstats est ton ami. Par contre faut que ca soit ton hébergeur qui te le mette en place sur ton serveur.
D'autre part si dans ton champ datetime tu enregistres strictement au format yyyy-mm-dd tu peux oublier l'heure dans tes critères de requêtes^^.
Dernière modification par Jc (11-05-2010 21:54:02)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Hello JC,
AWstats , je vais chercher des infos dessus, car je ne connais pas du tout.
Alors pour la date, est ce que j'ai fait une erreur, j'ai prévu 2 champ :
Est qu'il faut mieux que j'utilise dans SQL un champ DATETIME OU DATE suffit ? Je ne vois pas bien la différence entre les 2.
Hors ligne
AWstats est ton ami. Par contre faut que ca soit ton hébergeur qui te le mette en place sur ton serveur
Certes léger, mais comporte le GROS inconvénient de requérir une intervention de l'hébergeur.
Et pour l'heure, tu pourrais stocker directement : $dateetheure = date("d-m-Y H:i");
Et dans ton Mysql, il faut simplement que tu agrandisses la taille de ton champ
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
>> DATETIME OU DATE suffit ? Je ne vois pas bien la différence entre les 2.
c'est bizarre, moi je la vois la différence !!!!
a++
Hors ligne
Bonjour,
Le mieux à faire et dans tous les cas de figure c'est ceci :
- Mettre un TIMESTAMP avec en valeur par défaut CURRENT_TIMESTAMP pour stocker la date et l'heure à la seconde prêt de la création de l'enregistrement
- Mettre un DATETIME pour chaque champ date de la table concernée en enregistrant la date et l'heure dedans par ex sur un insert
A partir du timestamp ou du datetime on peut extraire ce qui nous interesse via les fonctions DAY(), DAYOFWEEK(), MONTH(), YEAR(), HOUR() etc...
On peut aussi faire un classement sur le champ date en ASC et DSC même sur les enregistrements du même jour (elles seront classées par ordre de précédence en fonction de l'heure voire de la seconde sur la même journée).
On récupére dans les requêtes les informations dont on a besoin sur le champ datetime en fonction de ce qu'on a besoin d'afficher, soit avec les fonctions citées précédemment, soit avec la fonction DATE_FORMAT().
N'oubliez pas, qui peut le plus, peut le moins et ça prends pas plus de ressources.
Voila
Dernière modification par Jc (12-05-2010 09:48:51)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
A Alnoss: Moi je propose AWstats sur mes packs d'hebergements en install automatique. Avoir des stats performantes et exhaustives sur son(ses) site(s) selon ses besoins et le cahier des charges imposé par ses clients, peut être un critère pour choisir son hébergeur.
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Petite parenthèse sur les hébergements :
@ Jc : certes, mais c'est parce que tu proposes toi même un hébergement... L'utilisateur lambda qui sera sur ce forum aura surement un hébergement 1&1, OVH, et j'en passe. Perso, je suis en 1&1 (Mutualisé) pour le perso/pro et Oxyd (Dédié) pour mon boulot.
Les 2 proposes déjà des stats suffisantes mais limitées (1&1 : soft 1&1 - Oxyd : AWStat)
@ Tous : J'ai longtemps testé plusieurs scripts et modules, sans jamais trouvé un vrai outils... (sauf Piwik, sur les dernières versions).
Cependant, je viens de mettre en place le "petit" script de Google Analytics, et j'en suis plus que satisfait...
Il permet justement une aide au dev si on sait un minimum lire les données...Par ailleurs, il ne requiert ni bdd, ni code à rallonge...
Ce n'est pas dans mes habitudes, mais il faut reconnaitre que Google frappe un grand coup avec ce "soft"
(d'autant plus pertinent que le moteur de recherche est issu des mêmes infos)
[si vous voulez un démo in vivo, demandez moi ! je vous créer un accès - (requiert un compte google/gmail)]
Pardonnez moi cet aparté et revenons en à nos moutons
A partir du timestamp ou du datetime on peut extraire ce qui nous interesse via les fonctions DAY(), DAYOFWEEK(), MONTH(), YEAR(), HOUR() etc...
Solution universelle - complète - fiable ! Je plussoie
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Pierrot > effectivement, c'est quand même clair, c'est moi qui le suis de moins en moins
Donc j'ai effectivement changer mon champ DATE en DATETIME. Je garde mon champ heure tel qui est même si je n'en vois plus réellement l'utilité.
Comme je ne fais pas vraiment un INSERT mais un UPDATE :
Et ça fonctionne, reste à voir les fonctions que tu me cites JC (DAY(), DAYOFWEEK(), MONTH(), YEAR(), HOUR() etc.) que je connais pas car jamais exploité
Dans tout les cas, merci de vos contributions, j'avance bien.
Hors ligne
Bonjour
à theavengers : now() est une fonction intégrée à mySQL qui fonctionne donc même dans une requête update. La bonne syntaxe dans ton cas est :
car current_timestamp est un attribut de colonne et vaut mieux l'utiliser comme tel car dans ton cas si ton champ date est défini en DATETIME, ta requête SET date=current_timestamp générera une belle erreur.
voila
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Merci, je vais modifier cela au plus vite. Mon update fonctionne, mais ça doit être une tolérance du serveur... jusqu'au jour ou ...
Hors ligne
Bonjour,
J'ai vérifié tout de même dans la doc mySQL car ca me paraissait bizare et visiblement mySQL considère aussi ton current_timestamp comme un synonyme de now().^^
Je tenais à te le dire.
a+
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Jc, merci pour ce complément d'information. Bon, je pleure un peu pour afficher les stats par listbox. je vais poster mon code au cas ou.
Hors ligne
Bon, je bloque toujours, ça doit être de la façon dont je crée ma variable $madate ...
<table width="600" border="0" align="center" cellpadding="0" cellspacing="0" id="tableprincipale">
<tr>
<td width="100" class="td4">Opérateur : </td>
<td width="100" class="td5">
<label>
<select name="operateur" id="operateur">
<option value="">Choix</option>
<option value="operateur01">operateur 01</option>
<option value="operateur02">operateur 02</option>
<option value="operateur03">operateur 03</option>
<option value="operateur04">operateur 04</option>
</select>
</label> </td>
<td class="td5">Année</td>
<td class="td5"><select name="annee" id="annee">
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="20111">2011</option>
</select></td>
<td class="td5">Mois</td>
<td class="td5"><select name="mois" id="mois">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
</select></td>
<td class="td5">Jour</td>
<td class="td5"><select name="jour" id="jour">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
</select></td>
</tr>
<tr>
<td colspan="10" class="td4"><input type="submit" name="Submit" value="Envoyer" /></td>
</tr>
</table>
</form>
<br />
<?php
// connexion a la base
require_once("connexion.php");
$BD_link = mysql_connect("${'BD_host'}${'BD_port'}", $BD_login, $BD_pass) or die("Connexion de la base impossible : ". mysql_error());
$operateur = $_POST["operateur"];
$annee = $_POST["annee"];
$mois = $_POST["mois"];
$jour = $_POST["jour"];
$madate = $jour." ".$mois." ".$annee;
//comptage des entrées
//$jour." ".$mois." ".$annee;
$req = mysql_query("SELECT COUNT(*) as Count FROM `prospect` WHERE valid ='1' AND operateur = '$operateur' AND date = '$madate' " );
if ($req)
{
$res = mysql_fetch_array($req);
echo '<center>L\' ',$operateur,' à traité</center>';
echo '<center>Il y a '.$res["Count"].' annonce(s)</center>';
}
?>
Hors ligne
Bonjour,
Oui, soit tu mets $madate au même format que le format de stockage, soit du fait
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne