Probleme de auto date sur ma base mysql

Résolu
Bonjour,

je crée un formulaire je voudrais mettre une date automatique

jai crée dans ma base la date en mode automatique

CREATE TABLE bl (
num_bl INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
magasin_num_mag INTEGER UNSIGNED NOT NULL,
technicien_num_tec INTEGER UNSIGNED NOT NULL,
nom_bl VARCHAR(255) NULL,
date_bl DATETIME NOT NULL,
PRIMARY KEY(num_bl),
INDEX bl_FKIndex1(technicien_num_tec),
INDEX bl_FKIndex2(magasin_num_mag)
);

seulement voila quand au moment ou la personnes crée sont formulaire une erreur se produit et me dit de mettre une valeur a ma date

INSERT INTO bl(magasin_num_mag, technicien_num_tec, nom_bl)VALUES ('1','1','test de mon auto date')
Field 'date_bl' doesn't have a default value

jai regarder le code php de ma page et jai mis sa
<?php

if($_POST["num_mag"] != "" && $_POST["num_tec"] != "" && $_POST["nom_bl"] != "")
{

$num_mag = $_POST["num_mag"];
$num_tec = $_POST["num_tec"];
$nom_bl = $_POST["nom_bl"];

include('connexion.php');

//création de la requête SQL
$sql = "INSERT INTO bl(magasin_num_mag, technicien_num_tec, nom_bl)VALUES ('$num_mag','$num_tec','$nom_bl')";

//exécution de la requête SQL
$requete = @mysql_query( $sql, $link ) or die( $sql . "<br>" . mysql_error() );

echo '<div align="center"> Le message a ete envoye a TITINE et enregistrer sur le serveur </strong></div>';

mysql_close();
}

?>

je ne vois pas quel est mon erreur

si vous pouviez m aidez sa serait vraiment sympa

merci
Configuration: Windows XP
Firefox 3.0.5

2 réponses

  1. j ai trouve tous seul je met la solutions

    deja il faut modifier la table sql suivante et mettre sa

    CREATE TABLE bl (
    num_bl INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    magasin_num_mag INTEGER UNSIGNED NOT NULL,
    technicien_num_tec INTEGER UNSIGNED NOT NULL,
    nom_bl VARCHAR(255) NULL,
    date_bl TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY(num_bl),
    INDEX bl_FKIndex1(technicien_num_tec),
    INDEX bl_FKIndex2(magasin_num_mag)
    );

    CREATE TABLE magasin (
    num_mag INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    nom_mag VARCHAR(45) NULL,
    com_mag VARCHAR(6000) NULL,
    PRIMARY KEY(num_mag)
    );

    CREATE TABLE technicien (
    num_tec INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    nom_tec VARCHAR(20) NULL,
    prenom_tec VARCHAR(20) NULL,
    PRIMARY KEY(num_tec)
    );

    et pour mon code php il fallait mettre sa

    $sql = "INSERT INTO bl(magasin_num_mag, technicien_num_tec, nom_bl, date_bl)VALUES ('$num_mag','$num_tec','$nom_bl',now())";

    mtn c nikel
    1. Bonjour,

      Ton champ date_bl n'est pas défini pour prendre une valeur par défaut.
      Ensuite, sur mysql, un champ de type datetime n'accepte pas comme valeur par défaut la date actuelle (via CURRENT_TIMESTAMP ou NOW()).

      De là deux possibilités :

      - Soit tu modifie ton champ comme suit :
      ALTER TABLE CHANGE date_bl date_bl TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
      


      Mais tu perdra certainement les données déjà remplies pour ce champ.

      - Soit tu modifie un peu ta requête d'insertion pour que PHP y intègre la bonne date :
      $sql = "INSERT INTO bl (magasin_num_mag, technicien_num_tec, nom_b, date_bl) VALUES ('$num_mag','$num_tec','$nom_bl', '" . date('d/m/Y') . "')";