Bonjour,
j'ai un probleme concerant la récupération d'une valeur en sql,j'ai un formulaire qui permet de créer les modules et ses seuils,j'ai une table module et une autre qui s'appelle département et une table qui contient les clés primaires du module et département. ce que je suis entrain de faire c'est que j'insére le module et le seuil aprés je fais un select pour récuperer id de ce module,et une autre select pour récuperer id de département saisie puis j'utilise insert into la table des clés pour associer le module au département.mon prob c'est la récupération de id de departement et module.j'éspere que c'est clair voila mon code:
$br=$_POST['br'];
$ann=$_POST['ann'];
$modu=$_POST['modu'];
$seuil=$_POST['seuil'];
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("basepfe")or die('Pas de Base de donn\351');
if(isset($_POST['creer'])){
if ($modu&&$seuil&&$br){
$sql=mysql_query("INSERT INTO module VALUES ('','$modu','$seuil')");
$sqlm=mysql_query("select idM from module where nomM=$modu");
$req=mysql_result($sqlm);
$dep=mysql_query("select idD from departement where nomD='$br' && annee='$ann'");
$req1=mysql_result($dep);
$sql1=mysql_query("INSERT INTO contenir VALUES ('$req','$1')");
echo "<script> alert('la compte a été bien créer')</script>";
}
else echo "<script>alert('Remplir tous les champs svp !')</script>";
}
pouvez vous m'aider svp ?merci d'avance
A voir également:
Sql récupérer une seule ligne
Récupérer le résultat d'une requête sql dans une variable - Meilleures réponses
Si ce que tu souhaites faire c'est :
Ajouter des données dans ta table
Récupérer l' ID (auto incrémenté ) qui en résult
Puis l'utiliser pour une autre insertion ..etc...
$sql = "INSERT INTO module
VALUES (
'$modu'
,'$seuil')";
// Le temps des tests :
// Affichage de la requête pour s'assurer qu'elle est bonne
echo "<br>REQUETE = ".$sql." <br>";
//Execution de la requête :
$req=mysql_query($sql);
// Récupération de l'ID nouvellement créé par l' INSERT
$newID = mysql_insert_id();
// Le reste de ton code...
$sql2 = "select idD
from departement
where nomD='$br'
AND annee='$ann'";
$dep=mysql_query($sql2);
$req1=mysql_result($dep);
$sql3 = "INSERT INTO contenir
VALUES ('$newID','$req1')";
$sql1=mysql_query($sql3);
NB : Le premier champ des tes VALUES étant, je suppose, le champ correspondant à la colonne ID ... vu qu'il est autoincrémenté.. tu n'as pas à le mettre.. C'est ta BDD qui s'en occupe automatiquement.
NB2 : Comme tu peux le voir... je sépare la requête de son execution.
cela permet en cas de besoin de faire un ECHO et de voir si elle correspond à tes attentes.
Je fais également des retours à la ligne... également pour une question de lisibilité.
NB3 : Le ET dans les requêtes SQL.. c'est avec le mot AND et non &&
mercii bcp pour ces explications.
pour la derniere Nb: j'ai essayé avec AND et il ne fonctionne pas mais lorsque j'ai utilisé && elle a fonctionné.
merci bcpp
D'abord, ligne 14, la deuxième variable devrait être $req1 plutôt que $1 je pense:
$sql1=mysql_query("INSERT INTO contenir VALUES ('$req','$req1')");
A mon avis, ça devrait mieux fonctionner après.
Deuxième chose, plus générale, il faut absolument éviter d'insérer directement une variable POST dans une base de données, c'est la source d'énormément de problèmes de sécurité. Je vous suggère de regarder du côté de fonctions comme mysql_real_escape_string par exemple, ou les expressions régulières pour fiabiliser les données entrantes.
14 mai 2014 à 17:22
pour la derniere Nb: j'ai essayé avec AND et il ne fonctionne pas mais lorsque j'ai utilisé && elle a fonctionné.
merci bcpp