date auto/ mysql

date auto/ mysql - PHP - Programmation

Marsh Posté le 21-08-2006 à 11:46:05    

hum, ptete un probleme juste mysql et pas vraiment php mmhmmm!!!!
 
j'ai fais le tour du forum pour la soluce mais comme ça marche pas chez moi.
petit formulaire d'ajout de document qui fonctionne très bien, sauf que je voudrais que la date d'ajout du document se fasse automatiquement :  
 
champs 'titre'
champs 'deposant'
champs 'le_doc'
et donc champs 'date' qui ne doit pas être géré par l'utilisateur.
 
ma base mysql ce compose de :  
champs 'titre' : varchar
champs 'deposant' : varchar
champs 'le_doc' : varchar
champs 'date' : date
 
au niveau de ma requete :  

Code :
  1. INSERT INTO telechargement (titre, deposant, le_doc, "je sais pas quoi mettre ici" ) VALUES ($_POST['titre'], $_POST['deposant'], $_POST['le_doc'], et là je sais pas quoi mettre pour la date);


 
j'ai trouvé la fonction CURDATE() qui correspond à ce que je cherche mais comment la gérer au niveau de ma requete je sais pas trop...
si vous pouvez m'aider ,merci

Reply

Marsh Posté le 21-08-2006 à 11:46:05   

Reply

Marsh Posté le 21-08-2006 à 11:47:46    

plus simple:
tu déclares ton champs en not null default current date dans ta base et tu t'en occupes jamais dans tes requetes d'insert.

Reply

Marsh Posté le 21-08-2006 à 11:52:21    

tu peux egalement mettre Now() dans la valeur de ta date

Reply

Marsh Posté le 21-08-2006 à 11:55:28    

anapajari a écrit :

plus simple:
tu déclares ton champs en not null default current date dans ta base et tu t'en occupes jamais dans tes requetes d'insert.


 
Tiens.. une question suite à ta réponse..  
 
En mettant ça dans la base, est ce que la date ne sera mise à jour que lors de la création ou bien à chaque modification de la ligne ?
 
Comment ça se passe en cas de migration d'une base à une autre.. l'ancienne date est conservée ? (priorité du remplissage du champs sur l'auto remplissage ?)
 
Merci bien ;)
 
EDIT : ajout de la citation

Message cité 1 fois
Message édité par chani_t le 21-08-2006 à 11:56:01
Reply

Marsh Posté le 21-08-2006 à 11:59:16    

chani_t a écrit :

Tiens.. une question suite à ta réponse..  
 
En mettant ça dans la base, est ce que la date ne sera mise à jour que lors de la création ou bien à chaque modification de la ligne ?
 
Comment ça se passe en cas de migration d'une base à une autre.. l'ancienne date est conservée ? (priorité du remplissage du champs sur l'auto remplissage ?)
 
Merci bien ;)
 
EDIT : ajout de la citation


1) seulement a la creation
2) l ancienne date est conservee

Reply

Marsh Posté le 21-08-2006 à 12:00:15    

humm bah moi ça me donne ça à l'affichage :  
 
0000-00-00
 
:-(((

Reply

Marsh Posté le 21-08-2006 à 12:05:18    

betsamee a écrit :

1) seulement a la creation
2) l ancienne date est conservee


 
Ok merci...  A une autre question... je n'utilise pas forcément la mise en forme de la date de base... est ce qu'on peut la formater directement ?
 
Actuellement j'utilise ça : $jour = date("Y-m-d h:i:s" ); ce qui me permet de formater la date comme je le souhaite.. (en même temps pourquoi je la formate ainsi  :heink: ... va falloir que je regarde ça de plus prés :D)

Reply

Marsh Posté le 21-08-2006 à 12:24:28    

help!!! bon, j'ai testé avec un Now()  dans la valeur date, il me dit requete invalide :-((( pfff
et sinon, toujours un bon 0000-00-00 avec le current date pffff, j'ai toujours un truc qui merdouille au debut moi!!!

Reply

Marsh Posté le 21-08-2006 à 12:52:40    

et avec date("Y-m-d" ) ? à la place de now  

Reply

Marsh Posté le 21-08-2006 à 13:06:55    

après vérification ça ne marche que sur les timestamps et pour un seul champs ( ce qui est ton cas) donc ça donne un truc dans le genre:

Code :
  1. CREATE TABLE `taTable` (
  2. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  3. .... ,
  4. `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
  5. ) ENGINE = MYISAM ;



Message édité par anapajari le 21-08-2006 à 13:07:17
Reply

Marsh Posté le 21-08-2006 à 13:06:55   

Reply

Marsh Posté le 21-08-2006 à 14:08:44    

Le plus simple, et aussi (surtout) le plus standard, c'est d'utiliser des timestamp Unix (Google si jamais tu connais pas encore)
 
Côté MySql : tu déclares un champ date de type INT et de taille 10
 
Côté Php :
- au moment de l'insertion tu utilises simplement la fonction 'time()' pour remplir ton champ date
- après pour afficher tu utilises la fonction 'date()', formatée comme tu veux en fonction du niveau de détail souhaité pour la date (date("d-m-Y",$ma_date_en_timestamp); par exemple)
 
D'après moi c'est mieux comme ça car ça reste indépendant de MySql et de ses fonctionnalités propres (qui malheureusement varient en fonction de la version de MySql que tu utilises)

Reply

Marsh Posté le 21-08-2006 à 14:13:53    

merci à tous pour vos infos!!! c super. je vais opter pour la methode de LKoLRN qui effectivement me parait sympa car indépandante de Mysql et abordable à mettre en place avec mon niveau en prog :-)
Meeerciiiii

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed