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 :

Timestamp dans une requête MySQL SELECT


Sujet :

Langage PHP

  1. #1
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut Timestamp dans une requête MySQL SELECT
    Bonjour,

    Je développe (enfin j'essaye ^^) un site qui gérera des évenements dans le futur, style "Prochainement" !

    En gros, il faut que quand un utilisateur clique sur prochainement, il voit les information de ma base de donnée qui soit compris entre le lendemain et 2semaine après.

    en gros :
    si on est le 01/01 il verra toutes les infos de ma base qui sont classé en date (je pense à le changer en timestamp, ça à l'air beaucoup plus pratique et génial !) entre le 02/01 et le 15/01.

    Est-ce possible de le faire dans un select ?


    Par exemple :

    SELECT * FROM film WHERE datedebutfilm<=time()+(60*60*24) and datedebutfilm>=time()+(60*60*24*14)

    Mais je pense qu'on ne peut pas écrire directement comme ceci...

    Quelqu'un pourrait m'aider ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Les champs DATE sont au contraire plus adaptés pour manipuler des dates, grâce aux nombreuses fonctions permettant de les transformer.

    Il ne faut pas oublier par exemple que tous les jours n'ont pas 24 heures ; en ajoutant 86400 secondes au temps actuel tu peux rester le même jour ou au contraire passer au surlendemain.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM film WHERE datedebutfilm BETWEEN DATE_ADD(CURDATE(), INTERVAL 1 DAY) AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Il ne faut pas oublier par exemple que tous les jours n'ont pas 24 heures ; en ajoutant 86400 secondes au temps actuel tu peux rester le même jour ou au contraire passer au surlendemain.
    J'ai du mal à intégrer ce point Pourrais-tu donner des exemples concrets ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $jour = mktime(23,0,5,3,26,2011); // le 26/03/2011 à 23h05
    $jour += 86400; 
    echo date('d/m/Y H:i:s', $jour); // le 28/03/2011 à 00h05
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $jour = mktime(0,0,0,10,23,2009);
    echo date('d/m/Y', $jour); // le 23/10/2009
    $jour += 86400; 
    echo date('d/m/Y', $jour); // le 24/10/2009
    $jour += 86400; 
    echo date('d/m/Y', $jour); // le 25/10/2009
    $jour += 86400; 
    echo date('d/m/Y', $jour); // le 25/10/2009
    $jour += 86400; 
    echo date('d/m/Y', $jour); // le 26/10/2009
    ?>
    En PHP il faut donc utiliser les fonctiones qui gèrent correctement les périodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $jour = "10/23/2009";
    echo date('d/m/Y',strtotime($jour . ' + 4 DAY')); // le 27/10/2009
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Ah, heure d'été, heure d'hiver, c'est ça ?
    Je n'y avais pas pensé... merci pour l'info

Discussions similaires

  1. Réponses: 14
    Dernier message: 09/10/2010, 00h44
  2. [MySQL] Mettre des conditions dans une requête mysql avec pdo
    Par shima5 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/10/2010, 21h11
  3. Problème avec && dans une requête mysql
    Par jean christophe dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/04/2010, 14h10
  4. Problème de double limite dans une requête mysql
    Par bbbbruno dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/01/2009, 19h21
  5. Intégrer un tableau dans une requête mysql
    Par GarGamel55 dans le forum Requêtes
    Réponses: 5
    Dernier message: 21/02/2006, 19h16

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