Probleme de auto date sur ma base mysql [Résolu/Fermé]

Signaler
Messages postés
107
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
12 août 2010
-
Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
-
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

2 réponses

Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
252
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
107
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
12 août 2010
7
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