Probleme de auto date sur ma base mysql

Résolu
dadou9101 Messages postés 110 Statut Membre -  
Xil Messages postés 351 Statut Membre -
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. Xil Messages postés 351 Statut Membre 257
     
    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') . "')";
    
    1
  2. dadou9101 Messages postés 110 Statut Membre 5
     
    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
    0