IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Compter enregistrements pour la semaine en cours dans SQL


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut Compter enregistrements pour la semaine en cours dans SQL
    Bonjour,

    J’ai un petit problème,

    Je souhaite compter le nombre d’enregistrement qu’il y a une table qui se nomme « voix » chez un champs date qui m’insère donc le jour, mois, année heures, minute et secondes.

    En faite je souhaiterai compter par une requête SQL le nombre d’enregistrement pour aujourd’hui

    J’aurais pas les heures minute et secondes sa irai mais la je sais pas comment faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db=@mysql_query("SELECT count(id) FROM voix WHERE date ?????? ");
    Merci de votre réponse

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Ton champ date dans ta base, il est de quel type (date, dateTime, Timestamp) ?
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Il est en datetime (exemple : 2012-07-27 10:20:12)

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    J'ai pas testé, mais ça devrait fonctionner. Il y a surement une technique plus propre que les 3 where à la suite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(id) 
    FROM voix 
    WHERE DAY(date) = DAY(NOW())
    AND WHERE MONTH(date) = MONTH(NOW())
    AND WHERE YEAR(date) = YEAR(NOW());
    Au cas ou à voir aussi les cours et tutoriels PHP : http://php.developpez.com/cours/

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 17
    Points : 24
    Points
    24
    Par défaut
    Je pense que tu peux le faire de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(id) FROM voix WHERE date = CURDATE()
    A tester, cela fonctionne avec les champs de type DATE mais ça devrait passer aussi avec les DATETIME.

    Sinon remplace CURDATE() par NOW() et re-test et ça devrait fonctionner.

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    Citation Envoyé par Vrugar Voir le message
    Je pense que tu peux le faire de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(id) FROM voix WHERE date = CURDATE()
    A tester, cela fonctionne avec les champs de type DATE mais ça devrait passer aussi avec les DATETIME.

    Sinon remplace CURDATE() par NOW() et re-test et ça devrait fonctionner.
    Je ne sais pas ce que ça va donner avec CURDATE(), mais avec NOW() les heures/minutes/secondes seront aussi prises en compte...

    Edit:
    En fait il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(id)
    FROM voix
    WHERE DATE(date) = CURDATE();

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 17
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par gmarsay Voir le message
    Je ne sais pas ce que ça va donner avec CURDATE(), mais avec NOW() les heures/minutes/secondes seront aussi prises en compte...
    Normalement CURDATE() compare juste la date et c'est ce qu'il veut. Pas besoin des heures/minutes/secondes pour avoir le nombre d'entrées de la journée.

  8. #8
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    J'ai édité mon message après avoir fait un tour sur la doc mysql, merci

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 17
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par gmarsay Voir le message
    J'ai édité mon message après avoir fait un tour sur la doc mysql, merci
    Et encore, je ne suis pas sûr qu'il y ait besoin de faire le DATE(date) mais bon, ça il pourra tester lui-même

  10. #10
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Toutes les solutions sont à tester + j'en ajoute une histoire de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $aujourdhui = new DateTime();
    $demain = $aujourdhui->modify('+1 day');
    $querry = '
         SELECT count(id) FROM voix 
         WHERE  date >= '.$aujourdhui->format('D Y-m-d H:i:s').'
         AND date <= '.$demain->format('D Y-m-d H:i:s');
    Juste pour apporter l'idée d'utiliser la class Datetime au lieu de date
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Merci ca fonctionne !

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Coucou

    C'est encore moi, j'ai oublié , mais un peu dans la même optique,

    Je souhaiterai faire la même chose mais sur la semaine en Cours.

    Savez vous comment faire ?

    C'est a dire tout les enregistrement par exemple nous sommes en semaine 30 (donc tous les enregistrement de lundi a dimanche soir)

    Mercii

  13. #13
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Regarde la doc officielle de Mysql. Avec une recherche google, tu aurais pu en-sortir seul je pense.

    A+.

  14. #14
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Ok j'ai eu ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
    function premierlundi($semaine,$annee)
    {
      $jour=date("w",mktime(0,0,0,1,1,$annee));
      if($jour==0){$jour=7;}
      if($jour>4){$premieran=0;}else{$premieran=-1;}
      $newdate=mktime(0,0,0,1,(($semaine+$premieran)*7),$annee); 
      $jsem=date("w",$newdate);
      $newdate=mktime(0,0,0,1,(($semaine+$premieran)*7)+(1-$jsem),$annee); 
      return date("d-m-Y",$newdate);
    }
    // Appel de la fonction semaine 36
    echo premierlundi(36,2008);
    // Affiche 01-09-2008
    ?> 
     
    // Ensuite tu continues avec le code donné précédement
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 17
    Points : 24
    Points
    24
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(id) FROM voix WHERE date <= CURDATE()-7
    Test un peu ça. Ca va te retourner le nombre sur les 7 derniers jours. Sinon après oui si tu veux vraiment semaine par semaine va falloir trifouiller un peu plus cf le post au dessus.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Vrugar Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(id) FROM voix WHERE date <= CURDATE()-7
    Test un peu ça. Ca va te retourner le nombre sur les 7 derniers jours. Sinon après oui si tu veux vraiment semaine par semaine va falloir trifouiller un peu plus cf le post au dessus.
    En faite que ca soit le mardi ou le samedi, je voudrai voir le classement de la semaine en cours.

    Donc les 7 derniers ne va pas.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    J'ai essayé de mettre ceci mais ca a na pas l'air de fonctionner, normallement cette fonction permet de selectionner uniquement les dates dans lequel la semaine est encours ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND WHERE WEEK(date) = WEEK(NOW());

  18. #18
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 17
    Points : 24
    Points
    24
    Par défaut
    As-tu regardé le code de Fench juste au-dessus ?

    Il récupère le lundi de la semaine en cours.. Donc ensuite c'est la même requête sauf qu'à la place de CURDATE() tu utilises le résultat donné.

  19. #19
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Normalement ton poste doit étre dans mysql ( merci les modérateurs )
    voila u petit exemple pour récupéré les données entre un intervalle de semaine essaye de l'adapter un ton problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT 
    FROM conteneur
    WHERE 
    DATE_FORMAT(datedec,"%X %V") 
    BETWEEN  :an AND :anf 
     
    // %X :Année, pour les semaines qui commencent le Dimanche, au format numérique, sur 4 chiffres, utilisé avec '%V'
    // %V: Numéro de la semaine (01..53), où Dimanche est le premier jour de la semaine, utilisé avec '%X'
    pour la doc :http://dev.mysql.com/doc/refman/5.0/...functions.html

    +1 andry.aime

    Et pour PHP voir ces cours et tutoriels pour apprendre la programmation PHP : http://php.developpez.com/cours/

  20. #20
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Je remonte ce sujet car il y a eu une evolution SQL je pense maintenant le champs est avec plein de 0 a la fin

    Champs date au format > datetime

    J'ai cela dans l'enregistrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2015-05-13 14:37:01.000000
    Ma requete ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $sql = mysql_query("SELECT * FROM ep WHERE date = CURDATE()  ") or die(mysql_error());;
    Avant ça fonctionné j'arrivai a sélectionner tout les enregistrement enregistré le 2015-05-13 (Pour exemple)

    Merci de votre réponse

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/01/2012, 15h18
  2. Requête qui affiche les enregistrements de la semaine en cours
    Par fanico11 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 28/04/2008, 16h55
  3. compter enregistrement dans une requete sql avec UNION
    Par dbzzzde dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/10/2007, 10h43
  4. Réponses: 4
    Dernier message: 25/10/2006, 10h13
  5. Réponses: 7
    Dernier message: 12/01/2005, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo