Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/04/2007, 14h14   #1
Membre du Club
 
Inscription : février 2006
Messages : 159
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 159
Points : 46
Points : 46
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
jcaspar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 14h33   #2
Membre habitué
 
Avatar de Aliosha
 
Aliosha
Inscription : mars 2007
Messages : 124
Détails du profil
Informations personnelles :
Nom : Aliosha
Âge : 25
Localisation : France

Informations forums :
Inscription : mars 2007
Messages : 124
Points : 128
Points : 128
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 :
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à...
Aliosha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 15h13   #3
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h01.


 
 
 
 
Partenaires

Hébergement Web