Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: calenfeaion le le 22-06-2006 a 15:04:55

Titre: Requête MySQL en fonction de la date
Posté par: calenfeaion le le 22-06-2006 a 15:04:55

Bonjour à tous,

J'ai un problème qui pour une fois n'est pas une erreur quelconque mais plutôt sur la manière de si prendre.

Je m'explique :
En faite, j'aimerais sélectionner des entrées dans ma base de données en fonction de leur date, par exemple, sélectionné toutes les entrées qui date d'aujourd'hui, de ce mois-ci, ou de cette année.

Le tout serais dans une fonction qui s'utiliserais comme ceci :
requete_en_fonction_de('mois');

Auriez-vous une idée de comment si prendre ?

Voilà, j'espere avoir été assez clair,
Calen

EDIT: Faute ortho + question

Titre: Re:Requête MySQL en fonction de la date
Posté par: calenfeaion le le 22-06-2006 a 20:52:15

Re

Bon, j'ai trouvé finallement, je préviens: la méthode est un peu lourde, mais je compte faire l'optimisation par après.
Donc si vous avez des conseils pour alléger, je suis preneur :D

En faite, le script est un compteur, et cette partie ce charge de l'affichage, donc, on peut sélectionner les visiteurs par période ( jour, mois et année )

La fonction renvoi alors sous forme d'un tableau :
- Le nombre de visiteurs total pendant la période ( jour, mois et année )
- Le nombre de pages affichés pendant la période ( jour, mois et année )
- Le nombre de visiteurs connectés
- Le nombre de visiteurs connectés sur la même page que l'internaute


Code:

function affiche_internaute($periode, $page_actuel) {
# Cette fonction permet d'affiche les resultats se trouvant dans la base de
# donnee. Elle rends possible l'affichage des stats par jour, mois, annee
# avec les types comme affichage du nbrs de visiteur, pages, etc...
global $erreurs;
   # Verifie que les parametres passe en argument sont correct
   if(!($periode == 'annee' || $periode == 'mois' || $periode == 'jour')) {      
      return 'Les parametres ne sont pas correct !';
   }
   else { // Les parametres sont ok, on continue
   
      # Adapte la requete MySQL a la periode desire
      switch($periode) {
         case 'jour':
            $periode_script = date('d/m/Y');
            $periode_mysql = '%d/%m/%Y';
            break;
         case 'mois':
            $periode_script = date('m/Y');
            $periode_mysql = '%m/%Y';
            break;
         case 'annee':
            $periode_script = date('Y');
            $periode_mysql = '%Y';
            break;
      }      
      # Cree la requete MySQL de selection des visiteurs
      $rq_affiche = "SELECT page_actuel, nbrs_pages, duree
      FROM calen_visite2
      WHERE DATE_FORMAT(date, '$periode_mysql')='$periode_script'";
                     
      # Connexion a la base de donne
      require('./Config/mysql_connect.php');
                     
      # Execution de la requete
      $result_affiche = mysql_query($rq_affiche);
      
      # Clos de la connexion
      mysql_close();
      
      # Verification de la requete
      if(!($result_affiche)) { // La requete a foirer, on affiche un message
         $erreurs .= 'Erreur MySQL N003';
      }
      else { // La requete est ok, on continue
         # Initialisation des variables
         $nbrs_pages = 0;
         $nbrs_connectes = 0;
         $nbrs_meme_pages = 0;
         
         # Calcul du nombre de visiteur(s) repondant a la requete
         $nbrs_visiteurs = mysql_num_rows($result_affiche);
         
         # Calcul des autres parametres
            while ($rows = mysql_fetch_assoc($result_affiche)){
               # Ajout du nombre de page de l internaute au total
               $nbrs_pages = $nbrs_pages + $rows['nbrs_pages'];
               
               # Ajout du nombre de visiteur sur la meme page
               if($page_actuel == $rows['page_actuel']) {
                  $nbrs_meme_pages = $nbrs_meme_pages +1;
               }
               
               # Calcul du nombre de visiteur connecte (300 sec)
               if(($temps_unix - $rows['duree']) < 300) {
                  $nbrs_connectes = $nbrs_connectes +1;
               }
            }
         # Retourne toute les valeurs calculer
         global $calen_visite2;      $calen_visite2=array(
'nbrs_visiteur'=>$nbrs_visiteurs,
'nbrs_pages'=>$nbrs_pages,
'nbrs_connecte'=>$nbrs_connectes,
'nbrs_meme_page'=>$nbrs_meme_pages,
'erreur'=>$erreur);
      }
   }
}


Et la fonction réponds à par exemple :
affiche_internaute('jour', $_SERVER['PHP_SELF']);
print 'Nbrs pages: '.$calen_visite2['nbrs_pages'];

Et pour affiche les erreurs ( si on le désire) :
print calen_visite2['erreur'];

Voilà voilà,
Calen


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.