Le fonctionnement de auto_increment ?

Résolu/Fermé
smailtun Messages postés 9 Date d'inscription lundi 25 février 2013 Statut Membre Dernière intervention 16 mai 2013 - 3 mars 2013 à 00:18
 Utilisateur anonyme - 3 mars 2013 à 17:59
bonsoir,

je travaille avec wampserver(phpmyadmin).

ma table trajet content 3 champ :

ID_TRAJET QUI EST LA Clé primaire et auto_increment ,VIL_DEPART,VIL_DESTINA .

lorsque s'écrit à la ligne32

$sql="insert into trajet values(5,'".$lieudep."','".$lieudest."');"; l'insertion ça marche

mais si s'enlève 5 "le premier attribut " ça ne marche plus l'insertion
puisque ID_TRAJET est auto_increment ( l'auto ne marche pas :) ).

je pense que l'erreur a la ligne32 ,voici mon code :

<?php
$con=mysql_connect("localhost","root","");
if(!$con)
{die( 'impossible de connecter: '.mysql_error());
}
mysql_select_db("test",$con);
$cin=$_POST['cin'];
$lieudep=$_POST['ld'];
$lieudest=$_POST['la'];
$heurdep=$_POST['hd'];
$heurarr=$_POST['ha'];
$dte=$_POST['dt'];
$prix=$_POST['px'];
$place=$_POST['pd'];
$nbrarr=$_POST['nbar'];
$decri=$_POST['desc'];


if($lieudep==null){ echo("<h1>lieu de depart manquant !h1>");include("Proposer.html");die('');}
if($lieudest==null){ echo("<h1>lieu de destination monquant ! </h1>");include("Proposer.html");die('');}
if($heurdep==null){ echo("<h1>heure depart manquant !</h1>");include("Proposer.html");die('');}
if($dte==null){ echo("<h1> il manque la date !</h1>");include("Proposer.html");die('');}
if($prix==null){ echo("<h1>indiquer le prix ! </h1>");include("Proposer.html");die('');}
if($place==null){ echo("<h1>indiquer le nombre de place !</h1>");include("Proposer.html");die('');}


$sql1="select count(*) as nbr from trajet where VIL_DEPART='".$lieudep."' and VIL_DESTINA='".$lieudest."' ;";
$re=mysql_query($sql1);
$tes= mysql_result($re,0);
if(($tes==0))
{
$sql="insert into trajet values('".$lieudep."','".$lieudest."');"; //cette ligne
echo("aaaaaaaaaaaaa3");
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
$idtra=mysql_insert_id();
$sq3l="insert into proposer values('".$dte."','".$heurdep."','".$prix."','".$place."','".$cin."','".$idtra."','".$nbrarr."','".$decri."');";

if (!mysql_query($sq3l,$con))
{
die('Error: ' . mysql_error());
}

}
else
{
$sql1="select ID_TRAJET from trajet where VIL_DEPART='".$lieudep."' and VIL_DESTINA='".$lieudest."' ;";
$re=mysql_query($sql1);
$idtra=mysql_result($re,0);
$sq3l="insert into proposer values('".$dte."','".$heurdep."','".$prix."','".$place."','".$cin."','".$idtra."','".$nbrarr."','".$decri."');";
if (!mysql_query($sq3l,$con))
{
die('Error: ' . mysql_error());
}

}
mysql_close();
?>


et merci d'avance .
A voir également:

2 réponses

Utilisateur anonyme
3 mars 2013 à 05:43
Bonjour

Bien sûr, ce n'est pas à toi de fournir la valeur de l'auto incrément !
Tu as deux façons d'écrire l'insert :
Soit tu écris les noms des champs que tu veux insérer, en ne mettant pas le champ auto incrément ni sa valeur
Soit tu ne mets pas les noms des champs mais alors il faut mettre des valeurs pour tous les champs. Pour ne pas forcer la valeur de l'auto incrément, il faut alors mettre NULL.
1ère méthode
$sql="insert into trajet (lieudepart, lieudestination ) values ('".$lieudep."','".$lieudest."')"; // avec les noms des champs

2 ème méthode
$sql="insert into trajet values(NULL,'".$lieudep."','".$lieudest."')"; // sans les noms des champs
2
bonjour,
merci ,j'ai ecrit
$sql="insert into trajet values('','".$lieudep."','".$lieudest."')"; ca marche
0
Utilisateur anonyme
3 mars 2013 à 17:59
Ça marche aussi et c'est ce qu'on voit très souvent, mais la documentation de mysql précise explicitement qu'il vaut mieux utiliser NULL.
0