[PHP+JS] Problème pour la création de nouvelle ligne dans la BDD

Résolu
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 - 28 avril 2014 à 16:34
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 - 29 avril 2014 à 11:03
Bonjour,
Voila mon code:
<?php
	include('connexion.php');
	$idJour = isset($_POST['id_Jour'])?$_POST['id_Jour']:'';  // !
	$idWorker = isset($_POST['id_Worker'])?$_POST['id_Worker']:'';  // !
	$V_Last_PrimKey = isset($_POST['V_Last_Prim_Key'])?$_POST['V_Last_Prim_Key']:'';  // !
	
	$sql = 'INSERT INTO caetbl_timetracking ('ID', 'SimRequest', 'Description', 'date', 'time spent', 'Worker') VALUES ("",NULL,NULL,".$idJour.",NULL,".$idWorker.")';
	mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());	
	
	$sql2 = "SELECT max(caetbl_timetracking.ID) as maxID
            FROM caetbl_timetracking" ;
	$resultat = mysql_query($sql2)or die("Requete pas comprise");
	
	//pour manipuler le resultat d'une requête il faut le convertir en Array par exemple :
	$row = mysql_fetch_array($resultat);
	
	// Lecture de la colonne maxID de la première ligne ( ligne 0) 
	echo $row[0];
	?>	

Avec ceci j'arrive bien a crée une nouvelle ligne mais l'ID et faut car il et égal a 0
,et les cellules date/Worker ne prenne pas les valeurs de mes variables idJour et idWorker.
Merci

4 réponses

jordane45 Messages postés 37731 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 septembre 2023 342
29 avril 2014 à 10:18
Tu peux nous donner la structure de ta table ?
Tu as bien mis en Auto-increment ton ID ??
1
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
Modifié par EnguerrandP le 29/04/2014 à 10:29
J'ai 6 colonne :
1- ID type int
2-SimRequest type varchar
3-Description type mediumtext
4-date type datetime
5-time spent type int
6-Worker type int

Je vient de vérifier l'auto-incrémentation n'était pas active mais lorsque je veut sauvegarder aprés l'avoir cocher il me met le message d'erreur suivant :
Erreur de requête:
#1067 - Invalid default value for 'ID'

et je ne sais pas se que je doit mettre comme default value for 'ID'
0
jordane45 Messages postés 37731 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 septembre 2023 342
29 avril 2014 à 10:36
La structure d'une table s'obtient par exemple via la commande:
 SHOW CREATE TABLE matable 





Pour ce qui est de ta question....Si tu es en auto..tu n'as pas de DEFAULT à mettre....



1
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
29 avril 2014 à 10:45
Le problème de l'id est résolue. lors du passage access mysql certaine option de la table ont sauter merci.
0
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
Modifié par jordane45 le 29/04/2014 à 10:56
Et voila ma structure de table après la commande
"SHOW CREATE TABLE":
caetbl_timetracking  CREATE TABLE 'caetbl_timetracking' (
 'ID' int(11) unsigned NOT NULL AUTO_INCREMENT,
 'SimRequest' varchar(10) DEFAULT NULL,
 'Description' mediumtext,
 'date' datetime DEFAULT NULL,
 'time spent' int(11) DEFAULT NULL,
 'Worker' int(11) DEFAULT NULL,
 PRIMARY KEY ('ID'),
 UNIQUE KEY 'ID' ('ID'),
 KEY 'ID_2' ('ID')
) ENGINE=InnoDB AUTO_INCREMENT=9034 DEFAULT CHARSET=latin1


Edit : Ajout des balises de code
0
jordane45 Messages postés 37731 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 septembre 2023 342
29 avril 2014 à 10:50
Le problème de l'id est résolue
Donc c'est bon ? .. question résolue ?
0
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
Modifié par EnguerrandP le 29/04/2014 à 10:56
OUI, j'ai juste encore un problème pour le valeur des champs :
request , description,time spent.
car avec
var VI_Description = $(ID_TA_Description).attr("value");

ou avec document.getelementid sa ne marche pas alors que si je mais directement:
var VI_Description = 'azerty';

je retrouve l'info dans ma BDD.
0
jordane45 Messages postés 37731 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 septembre 2023 342
29 avril 2014 à 11:00
C'est une nouvelle question ( donc normalement = nouvelle discussion)..qui plus est n'est pas du PHP mais du javascript (Jquery)...
.
Mais bon.. regardes ça : http://api.jquery.com/val/
var VI_Description = $(ID_TA_Description).val();
0
jordane45 Messages postés 37731 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 septembre 2023 342
Modifié par jordane45 le 28/04/2014 à 16:55
Re,

Déjà.. je pense que ceci est faux :

$sql = 'INSERT INTO caetbl_timetracking ('ID', 'SimRequest', 'Description', 'date', 'time spent', 'Worker') VALUES ("",NULL,NULL,".$idJour.",NULL,".$idWorker.")'


1 - Tu utilises des QUOTES SIMPLES pour encadrer ta chaine de caractères ET le nom de tes champs...
=> TU NE DOIS PAS METTRE DE QUOTES AUTOUR DU NOM DE TES CHAMPS...

Ton champ ID est AUTO-INCREMENTE ... PAS BESOIN de le mettre dans ta requête d'insert... c'est ta BDD qui va le gérer !!!


$sql = "INSERT INTO caetbl_timetracking 
    (
     SimRequest
    , Description
    , date
    , time spent
    ,Worker
     ) 
   VALUES (
     NULL
    ,NULL
    ,'$idJour'
    ,NULL
    ,'$idWorker'
   )";


NB : Tu as vu comment je présente les requêtes ? avec des retours à la ligne.. c'est plus propre..plus beau..et plus facile à lire.


Ensuite...
mais l'ID eSt fauX car il et égal a 0

De quel ID parles tu ?
Celui de ton INSERT ( pour lequel je viens de te dire de ne pas le mettre dans la requête ou ton $idjour ? )




Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
28 avril 2014 à 18:29
Merci pour ta réponse, et en effect je parlait bien de cette id,je n'avait pas bien comprit l'auto-incrémentation.
je vais tester avec tes rectification .
Merci
0
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
Modifié par EnguerrandP le 29/04/2014 à 09:39
Bonjour,
J'ai tester avec les rectification:
sa ne marche pas il me met erreur dans mon input.
Mais en supprimant ID dans la ligne de code d'hier sa me crée bien une nouvelle ligne avec la valeur de mes variable mes l'id et égale a zero.
 $sql = "INSERT INTO caetbl_timetracking ('SimRequest', 'Description', 'date', 'time spent', 'Worker') VALUES ('NULL','NULL','$idJour','NULL','$idWorker')";
 //Erreur $sql = "INSERT INTO caetbl_timetracking(SimRequest, Description, date, time spent,Worker) VALUES (NULL,NULL,'$idJour',NULL,'$idWorker')";
 //Erreur $sql = "INSERT INTO caetbl_timetracking ('SimRequest', 'Description', 'date', 'time spent', 'Worker') VALUES (NULL,NULL,'$idJour',NULL,'$idWorker')";


Merci et que le café soit avec vous.
0
Rejoignez-nous