Date depuis formulaire php

Yop !

Allez c’est parti, question naze du soir : j’ai un formulaire sur une page php, j’ai un champ pour renseigner une date. Je voudrais qu’une fois validé, la date s’enregistre sur phpmyadmin dans le champ “date” d’une table. Or, quelle que soit la valeur entrée, ça m’enregistre 0000-00-00.

Mon formulaire :

<form method="post" action="">
<strong><label for="js">Date:</label> </strong><br />
<input type="text" name="date" id="date" size="15" value="

<?php 

if(isset($_POST['date'])) {

$date = $_POST["date"] ;
$sql = "INSERT INTO blabla (date) VALUES (".$date.")";
$req = mysql_query($sql);
}

?>

" />

Ma table “Blabla” est composée de deux champs : “id” et “date”, le second étant au format “date”

Donc, que j’entre une valeur au format 25-02-2013, 2013-02-25 ou autre, 0000-00-00 s’enregistre dans la base quoi qu’il arrive. Quelqu’un saurait me dire où j’ai merdé ?

Ce qui est marrant, c’est que si je fais un echo $date, c’est bien 2013-02-25 qui s’affiche.

Merki :ane:
Edité le 25/02/2013 à 19:19

Et en base, c’est quoi le type de ta colonne ? Si c’est un entier, cherche pas, c’est probablement normal: 25-02-2013 n’est pas valide.
Et tu as une méga injection SQL. -> php.net…

Mais en dehors de ça, il te manque un élément essentiel pour que tout cela marche : un bouton “Envoyer” (input type=“submit”), de renseigner l’attribut action, et de mettre le code qui insert dans la table … ailleurs que là où tu affiches la valeur du champ telle que rentrée par l’utilisateur.

Ta page, ça doit être :

if (isset($_POST['date'])) {
  $date = $_POST["date"] ;
  $sql = sprintf("INSERT INTO blabla (date) VALUES ('%s')", mysql_real_escape_string($date));
  $req = mysql_query($sql);
}

puis :

<input type="text" name="date" id="date" size="15" value="<?php echo isset($_POST['date']) ? htmlspecialchars($_POST['date']):'';" ?>" />

Mais certainement pas comme tu l’as fait (ou alors c’est ce que tu montre comme bout de code qui laisse supposer cela)

Yop,

Ok d’accord, j’ai compris j’ai fait n’importe quoi :bounce:

Le type de colonne “date”, c’est bien “date”.

Je n’avais pas vu le code entier, j’avais bien évidemment un bouton submit :smiley:

Voici désormais ma page entière après avoir pris en compte tes remarques :

<html>
  <head>
  
  </head>
<body>

<?php

if (isset($_POST['date'])) { $date = $_POST["date"] ; $sql = sprintf("INSERT INTO blabla (date) VALUES ('%s')", mysql_real_escape_string($date)); $req = mysql_query($sql); }

?>


<form method="post" action="">
<strong><label for="date">Date:</label> </strong><br />
<input type="text" name="date" id="date" size="15" value="<?php echo isset($_POST['date']) ? htmlspecialchars($_POST['date']):'';" ?>" />
<input type="submit" name="valider" value="valider" />
</form>

  </body>
</html>

… sauf que dreamweaver me signale quelque chose d’incorrect à la ligne :

<input type="text" name="date" id="date" size="15" value="<?php echo isset($_POST['date']) ? htmlspecialchars($_POST['date']):'';" ?>" />

Un truc mal fermé, balise mal placée… que sais-je… Je vois pas…

Merci à toi :super:
Edité le 26/02/2013 à 09:08

Je ne me sers pas de Dreamweaver, s’il y a une erreur, c’est peut-être le " juste après le ):’’;.

Tu as un nombre impair de guillemets (doubles), ce n’est pas normal
Pourquoi en avoir mis un après le point virgule ?

C’est carrément ça, le truc idiot, c’est bien ce guillemet en trop.

Ben écoutez, c’est nickel, j’ai rien compris comme d’hab mais c’est nickel, merci à vous :super::super:
Edité le 26/02/2013 à 12:36

C’est moi qui l’ai mis en trop… Mais bon, spa comme si Clubic proposait un IDE pour poster ses messages :wink:

Ah non, ce n’est pas à toi que s’adressait ma remarque mais à petitfilou87 !
($_POST[‘date’]):’’;
" ?>" />

Edit : Je n’avais pas vu qu’il figurait aussi dans la proposition plus haut ;
Mais bon, en retapant la formule, un nombre impair de délimiteurs c’est en principe une chose qui aurait dû l’interpeller …
Edité le 26/02/2013 à 20:17

Oui bah, t’as bien débuté la programmation, non ? Et si tu faisais du brainfuck, du whitespace ou du morse, tu te serais également planté et ça t’aurait aussi interpellé :slight_smile:

Et ben… vé, non, on me sert ça sur un plateau, je copie colle… c’est un truc que je devais faire de force, la prog, c’est pas mon truc du tout :stuck_out_tongue:
Edité le 09/03/2013 à 21:30