Bonjour, je n'arrive pas à sauvegarder une date dans la base de données, que dois-je mettre dans la vue ? Quelle doit être le champs correspondant de la BDD ?
Merci d'avance,
Alexandre

14 réponses


antittrust
Réponse acceptée

Si tu ajoute du contenu et que tu debug ta variable ca t'affiche quoi ?

normalement tu doit avoir un truc dans ce style la

[Nouvelle] => Array
(
[id] => 2
[title] => News de test 2
[content] => "At vero eos et accusamus et iusto"
[created] => 2010-09-24 01:00:00
[comment_count] => 5
)

antittrust
Réponse acceptée

Personnellement je voit rien de bizarre dans ta BDD met peut etre "default" a "null" logiquement si tu utilise ta fonction add pour ajouter un nouveaux contenu ton champ created doit se remplir automatiquement de que la méthode save() est exécutée.

Tient l'extrait de la doc qui en parle Par ici

WoBuGs
Auteur
Réponse acceptée

J'ai réglé mon problème à l'aide du tuto sur l'Initiation à CakePHP.
Merci à antittrust qui a été très disponible !

Normalement tu crée un champ "created" en "datetime" si c'est pour sauvegarder la date de création d'un news par exemple et cake s'occupe tout seul de sauvegarder sinon tu récupère le timestamp courant et tu le sauvegarde en même temps que le reste et normalement tu ne devrait pas avoir de problème enfin pour ma part je n'ai jamais eu de souci en utilisant la première solution en tout cas

WoBuGs
Auteur

OK, mais le probleme c'est que le champ dans la vue reste de type varchar. Il ne passe pas en datetime.

dans quelle vue celle de phpmyadmin ?

WoBuGs
Auteur

Dans la vue admin_edit.ctp par exemple qui me permet d'ajouter du contenu.
Le champs de phpmyadmin est bien en datetime.
Désolé, je m'était mal exprimé.

WoBuGs
Auteur

Je ne sais plus dans quel fichier mettre le debug($this->data);.

debug la variable qui te permet de récupérer les données a afficher dans ta vue pas celle la

WoBuGs
Auteur

Voici ce que j'obtient avec un print_r (debug ne marche pas) : Array ( [Work] => Array ( [id] => 31 [url] => [category_id] => 3 [description] => test22 [titre] => test [hide] => 0 ) [Category] => Array ( [id] => 3 [nom] => Photo [url] => photo ) ). Le input date est de forme standard.[img]http://i69.servimg.com/u/f69/15/69/99/54/nouvel10.jpg[/img] Et dans PhpMyAdmin : [img]http://i69.servimg.com/u/f69/15/69/99/54/nouvel11.jpg[/img] J'ai l'impression que le lien entre base de donné et modèle n'est pas complet.

WoBuGs
Auteur

Quand je tente de mettre NULL comme valeur par défaut, j'ai une erreur :
Erreur
requête SQL:

ALTER TABLE works CHANGE created created DATETIME NOT NULL DEFAULT NULL

MySQL a répondu:

1067 - Invalid default value for 'created'

Normal le champ null est défini sur non donc il ne peut pas être null et tu essaye de le mettre par défaut a null du coup tu crée un conflit dans ta table met null a oui et default a null et ca devrait passer

WoBuGs
Auteur

Désolé, pas moyen. Même avec un champs date defaut NULL dans la base de donnée, ça ne marche pas...

WoBuGs
Auteur

J'ai trouvé le problème du debug : je l'avait remis à 0 dans le core.php...