Pb pour ajouter une date dans une BDD

Résolu
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 - 7 avril 2010 à 17:45
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 - 8 avril 2010 à 09:52
Bonjour,
voilà, ce sont mes tous début en php et j'essai de faire une sorte de mini blog (purement exercice).
J'en suis à l'ajout de commentaire (y'a pas d'administration ni rien de tout cela, c'est du pure basic !), bref.
Lorsque l'on ajoute un commentaire je veux récupérer la date.
Voici mon code :
$req = $bdd->prepare('INSERT INTO commentaires(id_billet, auteur, commentaire, date_commentaire) VALUES (:id_billet, :auteur, :commentaire, :date_commentaire)');
$req->execute(array(
'id_billet' => $attache,
'auteur' => $auteur,
'commentaire' => $commentaire,
'date_commentaire' =>NOW(),
));
$req->closeCursor();

La connexion à la base de données se passe bien, et si je ne tente pas de récupérer la date, tout se passe bien aussi.
Le nom du champ est bon (date_commentaire)et le type du champ est une datetime.
J'ai aussi essayé de faire une seconde requête que pour la date... mais là, il ne me met que la date et pas le reste.
Bref, je patauge, je galère, je transpire, je rumine et je désespère d'être coincé si près du début.
Merci à ceux qui voudront bien éclairer mes faibles connaissances.


Tout vient à qui sait attendre

4 réponses

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
8 avril 2010 à 06:20
Bonjour,

Pour ton deuxième message, quand tu utilises les guillements simples, les '$variable' ne sont pas interprété et reste '$variable' au final.

La fonction NOW n'existe pas en PHP, c'est une fonction SQL qui doit être utilisé dans la requête elle-même pas dans le tableau des paramètres.

La façon la plus simple de gérer les dates en PHP est tout simplement d'utiliser le timestamp qui est généré par time et mktime. Si tu veux rester avec des types date dans ta base de données, il faut que tu utilises la méthode date pour formatter ta date selon le format de date de ta base de données. Pour faire l'opération inverse tu dois utiliser strtotime.
3
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
7 avril 2010 à 18:09
J'ai essayé aussi :
$req  = $bdd->exec('INSERT INTO commentaires(id_billet, auteur, commentaire, date_commentaire) VALUES($attache, $auteur, $commentaire, NOW())');


Mais ça ne fonctionne pas non plus !
Tout vient à qui sait attendre
0
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
8 avril 2010 à 09:29
OK Merci
J'essaie tout ça et je reviendrais demander de l'aide si je ne m'en sors pas.
Merci pour le tuyau.


Tout vient à qui sait attendre
0
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
8 avril 2010 à 09:52
Youpi... ça marche !
Merci.
Pour ceux que cela intéresserait, j'ai fais ceci :
$ladate = date('Y-m-d h:i:s');
$req = $bdd->prepare('INSERT INTO commentaires(id_billet, auteur, commentaire, date_commentaire) VALUES (:id_billet, :auteur, :commentaire, :date_commentaire)');
$req->execute(array(
'id_billet' => $attache,
'auteur' => $auteur,
'commentaire' => $commentaire,
'date_commentaire' => $ladate,
));


Tout vient à qui sait attendre
0
Rejoignez-nous