Probleme de TIMESTAMP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme de TIMESTAMP

par Cyrano » 11 oct. 2008, 22:08

On progresse...

Mais puisque tu es en phase d'apprentissage, je vais te faire une recommandation : fais preuve dès maintenant de rigueur et de discipline dans ta manière d'écrire du code.

La première chose pour le SQL que tu dois t'efforcer de mettre en pratique, c'est de nommer les colonnes où tu veux insérer des données et de n'indiquer que les valeurs que tu veux effectivement insérer.

Au vu de ta requête, tu as trois colonnes dans cette table :
- la clé primaire;
- une colonne de type texte;
- un colonne de date.

Si ces colonnes ont pour noms news_id, news_titre et news_date, alors la requête devrait normalement ressembler à ceci :

Code : Tout sélectionner

INSERT INTO `news`(news_id, news_titre, news_date) VALUES (1, 'titre de la news', '0000-00-00 00:00:00');
Mais ta clé primaire devrait être en mode AUTO_INCREMENT : on indiquera donc pas de valeur ni la colonne. La requête devient alors :

Code : Tout sélectionner

INSERT INTO `news`(news_titre, news_date) VALUES ('titre de la news', '0000-00-00 00:00:00');
Tu as indiqué que tu voulais mettre une date automatique, mais si j'ai correctement suivi, tu veux mettre la date du moment de l'insertion. En indiquant cette valeur-ci, elle va naturellement s'inscrire : le format est valide... et ne correspond à rien. Donc soit tu ne mets rien du tout et tu fais également sauter cette colonne de ta requête, soit tu utilises une fonction SQL pour indiquer "maintenant", et ta requête va alors devenir :

Code : Tout sélectionner

INSERT INTO `news`(news_titre, news_date) VALUES (1, 'titre de la news', NOW());
Essaye ça et reviens si un point t'échappe encore. Ceci dit, je te suggère de te créer un petit projet basique à programmer et penches-toi surtout sur la méthodologie. Écrire du code, c'est à la portée de n'importe qui, mais écrire du code optimisé et fonctionnel, c'est une autre paire de manches. Ton sens de l'ordre et de la méthode feront la différence.

par oups » 11 oct. 2008, 19:58

Je n'utilise pas de CMS ni de truks déjà fait.

j'ai fait mon site en html tout seul, un ami m'a aider pour le php, je suis en train de l'apprendre.

voilà la ligne demandée que j'ai été prendre dans la bdd

Code : Tout sélectionner

INSERT INTO `news` VALUES (1, 'titre de la news', '0000-00-00 00:00:00');
'dates' et 'id' sont bien sur des éléments mit automatiquement par la requete.
mon probleme est que 'dates' n'indique pas la date.

Merci.

par Cyrano » 11 oct. 2008, 18:32

:shock:
...
...
ok, je crois que je commence à voir sommairement le problème : tu utilises un truc tout fait genre CMS que tu as tenté d'adapter à ton goût, sauf que tu es tombé sur un os et, en réalité, tu n'as absolument aucune connaissance en programmation, que ce soit PHP ou SQL, je me trompe ???

Si ma conclusion est bonne ou très approchante, on est pas sorti de l'auberge... et toi encore moins. On peut t'aider à avancer dans ton apprentissage, mais ça signifie que tu apprends à programmer, pas à bidouiller du code tout fait auquel tu ne comprends rien du tout. La programmation, c'est un métier, ça peut devenir même extrêmement passionnant, mais il faut commencer par le commencement et ne pas confondre vitesse et précipitation : en d'autres termes, si tu veux mettre quelque chose en ligne, programme-le toi-même au lieu d'utiliser un CMS. Quand tu maitriseras au moins les bases fondamentales du PHP et du SQL tu pourras commencer à songer aux CMS à la condition expresse d'en comprendre la structure et le fonctionnement. Ça t'évitera de poser des question comme la toute dernière qui me laisse, je dois l'avouer, un peu sans voix.

Et pour ta culture, on ajoute une ligne dans une table de base de données avec une requête commençant par INSERT INTO...etc...

par oups » 11 oct. 2008, 17:40

Bonjour
Excusez moi d'intervenir, mais ton champs se nomme 'date', et il me semble lire 'dateS' sur ta requête...peut être ça, non?
Car on m'a dit plus haut de ne pas mettre "date" donc j'ai changé par "dates".


Cyrano :D ..

Désolé en effet c'est juste que je ne suis pas habitué à parlé de php et bases de données.

En fait je ne comprend pas ce que tu me demnde, dit moi juste l'endroit ou ce trouve exactement ce que tu veux et je te le donnerait.

Dans mes fichiers php ?
Dans PhpmyAdmin ? (si oui .. où exactement)

Merci.

par Boro64 » 11 oct. 2008, 16:15

Si tu y arrives avec un "SELECT ...", je te jure que je boufferai mon chapeau !
Heu...si tu en as un pour moi Cyrano je sens comme une petite faim, là...

par Cyrano » 11 oct. 2008, 16:08

Dis-moi oups, je m'interroge : sais-tu lire ??? Comment fais-tu une insertion dans une table au juste ? :-k

J'ai dit : "la requête qui est exécutée lorsque tu ajoutes une lignes dans cette table"

Si tu y arrives avec un "SELECT ...", je te jure que je boufferai mon chapeau !

par Boro64 » 11 oct. 2008, 15:50

Bonjour
Excusez moi d'intervenir, mais ton champs se nomme 'date', et il me semble lire 'dateS' sur ta requête...peut être ça, non?

par Invité » 11 oct. 2008, 15:39

Code : Tout sélectionner

$requete=mysql_query("SELECT id, titre, dates FROM news ORDER BY dates DESC ") or die(mysql_error()); $couleurtab = 0; while ($data=mysql_fetch_array($requete)) { $oupsid = $data['id']; $oupstitre = $data['titre']; $oupsdate = $data['dates']; echo <A HREF=\"page.php?id=$oupsid\"><b>$oupstitre</b></A><BR>"; } mysql_close($cnt); ?>

par Cyrano » 10 oct. 2008, 13:41

Non, ça, c'est la ligne dans la requête de création de la table. Ce qui serait intéressant, c'est la requête qui est exécutée lorsque tu ajoutes une lignes dans cette table.

par Invité » 10 oct. 2008, 12:52

Oui Cyrano :

Code : Tout sélectionner

`dates` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

par Cyrano » 10 oct. 2008, 07:18

Pourrait-on voir la requête d'insertion ?

par oups » 10 oct. 2008, 01:25

C'est quoi le problème en fait ? tu voudrais un timestamp nul ?
Mon probleme Berzemus est que j'ai un formulaire qui fait des ajout sur mon site.
Ces ajouts sont classés (le dernier viens ce classé en premier, des news quoi)

Mais vu que tous les ajouts sont à 0000-00-00 00:00:00 donc rien ne ce classe.



AB, non je ne pense pas confondre le nom du champ et avec le type de champ.
J'ai changé le nom de mon champ le probleme reste le même.


Mais est-ce normal que on voit que NULL = NON :
Image

Et que là on voit NULL = OUI :
Image

:?: :?: :?:

Comment ce fait t'il que le TIMESTAMP indique toujours 0000-00-00 00:00:00 et n'indique pas la bonne date et la bonne heure ??? (par exemple tout de suit ce seraitl 2008-10-10 01:26:47 )

Merci de votre aide.

par AB » 09 oct. 2008, 19:55

Ou alors peut-être confonds-tu le nom des champs avec le type des champs ?

Par exemple si dans ton champ "date" (que tu devrais appeler autrement) tu trouves 0000-00-00 00:00:00 c'est qu'il est de type datetime;
Si tu veux enregistrer un timestamp il existe un type timestamp

Cela dit est tu certain qu'il est plus utile pour tes besoins d'utiliser un timestamp plutôt qu'un type date ou datetime ? MySql possède des fonctions très puissantes pour faire des comparaisons, interval etc sur les formats date et datetime.

par Berzemus » 09 oct. 2008, 19:28

C'est quoi le problème en fait ? tu voudrais un timestamp nul ?

par oups » 09 oct. 2008, 17:45

Personne ne saurais m'aider ?

Merci.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]