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

SQL Procédural MySQL Discussion :

Gérer timestamp avec PHP ou mysql ? [Fait]


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Profil pro
    Technicien Informatique
    Inscrit en
    Février 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 187
    Points : 89
    Points
    89
    Par défaut Gérer timestamp avec PHP ou mysql ?
    B onjour à tous !

    je souhaiterais utiliser une date de création d'un utilisateur
    et l'intégrer dans ma base de données mysql. Je souhaiterais que cette date soit crée automatiquement. J'ai donc pensé à un timestamp
    comment convertir mon timestamp en date ?
    Mysql serait il en mesure de créer un timestamp automatiquement ?

    Merci d'avance à tous pour vos explications et informations

    Jean Marc

  2. #2
    Membre habitué Avatar de Aliosha
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 124
    Points : 138
    Points
    138
    Par défaut
    Dans MySQL il faut que tu spécifies, dans la création de ton champ : DATE (date_elem DATE NOT NULL, ).

    Puis, dans l'affichage, à l'aide d'une fonction de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    function DateFr($date){
      	$jour = substr($date,'8','2'); // On récupère le jour
      	$mois= substr($date,'5','2'); // On récupère le mois
      	$annee = substr($date,'0','4'); // On récupère l'année
      	$tab_jour = array('1'=> 'lundi', 'mardi', 'mercredi','jeudi','vendredi','samedi','dimanche'); // On crée une variable fourre-tout avec les jours en français
      	$num_jour = date('N', mktime('0', '0', '0', $mois, $jour, $annee)); // On récupère le numéro du jour qui correspondant à la $date
      	$nom_jour = $tab_jour[$num_jour]; // On associe ce numéro du jour au jour correspondant dans la variable fourre-tout
      	$mois_liste = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"); // On fait de même pour les mois...
      	$j = $mois-'1';
      	$date = "$nom_jour $jour $mois_liste[$j] $annee"; // On retourne la date entière dans une seule variable
      	return "$date";
    }
    Tu retournes le résultat avec DateFr($ta_date_dans_MySQL); où $date est une date de format 0000/00/00.
    Tu peux « décomposer » la date dans ton formulaire d'ajout de dates en proposant trois inputs (jour / mois / année), puis, dans la mise à jour de la base MySQL « lier » ces trois résultats (par exemple $date = $_POST['annee']."-".$_POST['mois']."-".$_POST['jour'];

    Mais tout ça ne répond pas à ta question (je m'emporte, je m'emporte !)

    Donc, effectivement, oui, MySQL peut retourner la date actuelle, en spécifiant CURDATE() dans ta requête (pour l'heure c'est CURTIME() ).

    (Si tu utilises ça, je te conseille d'aller ici :http://dev.mysql.com/doc/refman/5.0/...functions.html ...)

    Personnellement, j'utilise PHP, avec $date_elem = date(Y-m-d), qui retourne 2007-04-02, ajoutable dans MySQL, puis la méthode citée précédemment pour transformer cette donnée à l'affichage.
    Pour l'heure, c'est $heure_elem = date(H:i:s); . (date(H:i) si tu ne veux pas les secondes)...

    Le format dans MySQL est TIME. (heure_elem TIME NOT NULL, dans la création de la table)

    Voilà...

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Avec MySQL pour passer d'une date ou datetime vers un timestamp vous avez la fonction UNIX_TIMESTAMP(). Et pour passer d'un timestamp à un datetime : FROM_UNIXTIME(). Il vous est bien sûr possible de combiner d'autres fonctions MySQL à celles-ci (pour ne récupérer que le mois, etc, par exemple).

    Choisissez autant que possible un format (date vs timestamp) qui vous demandera le moins de traitement possible.

    MySQL n'initialisera pas automatiquement ces champs à la "date" actuelle (peut être à l'aide d'un trigger ?) et pour cela vous pouvez utiliser directement les fonctions MySQL dans vos requêtes (NOW() pour un datetime, UNIX_TIMESTAMP() pour un timestamp, ...) ça vous évite de passer par PHP pour des broutilles. Lors d'un select vous pouvez également recourir à la fonction DATE_FORMAT pour passer du format Y-m-d au format d/m/Y sans passer par les éternels explode et compagnie en PHP.

    Plus d'informations sur les fonctions en rapport avec les dates.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec PHP et MySQL
    Par Vatgas dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 09/08/2006, 13h07
  2. probleme avec php et mysql
    Par rane dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/06/2006, 18h26
  3. problème dans un livre d'or avec php et mysql
    Par Invité dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/12/2005, 18h04
  4. [SGBD] Probleme Avec Php et Mysql
    Par junior258 dans le forum Installation
    Réponses: 2
    Dernier message: 20/09/2005, 10h39
  5. Travailler avec PHP / Apache / MySQL
    Par R3iTt0R dans le forum Linux
    Réponses: 22
    Dernier message: 24/06/2004, 11h03

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