Pb INSERT INTO php

Résolu/Fermé
létii - 20 janv. 2010 à 09:55
 létii - 20 janv. 2010 à 14:00
Bonjour,
je développe une application web et sur une de mes pages je dois faire deux INSERT INTO dans deux tables différentes. Je m'explique :
-d'abord, pour faciliter l'interface utilisateur, je luis fais remplir des champs pour remplir deux tables différentes
-ensuite, je fais mon INSERT INTO dans ma première table, jusque là pas de soucis
-enfin, je fais mon INSERT INTO dans ma deuxième table, sauf que la soucis : je dois récupérer l'identifiant du premier INSERT INTO de ma première table pcq ma première et ma deuxième table sont reliées!
J'espère avoir été assez claire !
Merci de votre aide

6 réponses

garion28 Messages postés 1545 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
20 janv. 2010 à 09:57
peut tu mettre un bout de code stp ?
0
Désolée, je vait tout te mettre !
$campagne=$_POST['nom'];//insert into campagne
$acces=$_POST['acces'];//insert into campagne
$typetest=$_POST['typetest'];//insert into reservation
$stb=$_POST['stb'];//inutile !
$firmware=$_POST['firmware'];//insert into campagne
$djj=$_POST['djj'];//insert into reservation
$dmm=$_POST['dmm'];//insert into reservation
$daaaa=$_POST['daaaa'];//insert into reservation
$fjj=$_POST['fjj'];//insert into reservation
$fmm=$_POST['fmm'];//insert into reservation
$faaaa=$_POST['faaaa'];//insert into reservation
$dhh=$_POST['dhh'];//insert into reservation
$dmin=$_POST['dmin'];//insert into reservation
$dss=$_POST['dss'];//insert into reservation
$fhh=$_POST['fhh'];//insert into reservation
$fmin=$_POST['fmin'];//insert into reservation
$fss=$_POST['fss'];//insert into reservation
$robot1=$_POST['idrobot1'];//insert into reservation
$robot2=$_POST['idrobot2'];//insert into reservation
$robot3=$_POST['idrobot3'];//insert into reservation
$robot4=$_POST['idrobot4'];//insert into reservation
$robot5=$_POST['idrobot5'];//insert into reservation
$robot6=$_POST['idrobot6'];//insert into reservation
//récupérer l'id de la campagne qu'on ajoute

echo'<div id="ecriture1">';
if (strlen($campagne) < 1 or strlen($campagne) > 20)
{
echo'Ajout impossible !<br/><br/>';
echo "<a href='campagne.php'>• Retour au menu des campagnes •</a>";
}
else
{
$requete="SELECT campagneName FROM campagne WHERE campagneName='$campagne';";
$reponse=mysql_query($requete);
if (mysql_num_rows($reponse)>0)
{
echo'Ajout impossible, le nom existe déjà!<br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='campagne.php'>• Retour au menu des campagnes •</a><br/><br/>";
echo'</div>';
}
else
{
$sql="INSERT INTO campagne VALUES ('','".$firmware."','".$acces."','".$campagne."');";
$jeu=@mysql_query($sql,$mysqlLink);
if ($jeu==true)
{
echo "Vous venez d'ajouter $campagne.<br/><br/>";
$query="SELECT campagneName FROM campagne;";
$result = mysql_query($query) or die("Requete non comprise");
echo "<table>";
echo'Comme campagnes, il y a : <br/>';
while ($tableau = mysql_fetch_array($result))
{
echo'• ';
echo $tableau['campagneName'] ;
echo '<br/>';
}
echo'<br/>';
echo'<div id="ecriture3"';
echo "<a href='campagne.php'>• Retour au menu des campagnes •</a><br/><br/>";
echo '</div>';
}
else
{
echo 'Ajout impossible <br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='campagne.php'>• Retour au menu des campagnes •</a><br/><br/>";
echo '</div>';
}
}
}
if ($daaaa > $faaaa)
{
echo 'Ajout impossible, vérifiez vos dates !<br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='campagne.php'>• Retour au menu des campagnes •</a><br/><br/>";
echo '</div>';
}
else
{
if ($dmm > $fmm)
{
echo 'Ajout impossible, vérifiez vos dates !<br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='campagne.php'>• Retour au menu des campagnes •</a><br/><br/>";
echo '</div>';
}
else
{
if ($dmm = $fmm and $djj > $fjj)
{
echo 'Ajout impossible, vérifiez vos dates !<br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='campagne.php'>• Retour au menu des campagnes •</a><br/><br/>";
echo '</div>';
}
else
{
if ($dhh<9 or $dhh>18)
{
echo 'Ajout impossible, une réservation doit se faire entre 9h et 18h !<br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='campagne.php'>• Retour au menu des campagnes •</a><br/><br/>";
echo '</div>';
}
else
{
if ($robot1 == "aucun 1")
{
echo'Ajout choix 1 impossible (vérifier nom robot)<br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='campagne.php'>• Retour au menu des campagnes •</a><br/><br/>";
echo'</div>';
}
else
{

$req="INSERT INTO reservation VALUES ('','".$daaaa."''".$dmm."''".$djj."''".$dhh."''".$dmin."''".$dss."',
'".$faaaa."''".$fmm."''".$fjj."''".$fhh."''".$fmin."''".$fss."',
'".$robot1."','".$typetest."','".$campagne."');";

$verif=@mysql_query($req,$mysqlLink);

if ($verif==true)
{
echo 'Ajout du choix 1 pris en compte<br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='campagne.php'>• Retour au menu des campagnes •</a><br/><br/>";
echo'</div>';
}
else
{

echo 'Aucun choix 1<br/><br/>';
echo'<div id="ecriture3"';
echo "<a href='campagne.php'>• Retour au menu des campagnes •</a><br/><br/>";
echo'</div>';
}
0
Bonjour

mysql_insert_id() te permet de récupérer le dernier identifiant généré par l'INSERT INTO
https://www.php.net/manual/fr/function.mysql-insert-id.php
0
Si je comprend bien mysql_insert_id(), i lrécupère le dernier identifiant mais de la même table...
0
Autumn`Tears Messages postés 1054 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 23 octobre 2013 145
20 janv. 2010 à 10:10
Salut,

L'identifiant de ta première table est en AUTO_INCREMENT ?
Si oui, tu fais $req=mysql_fetch_assoc(mysql_query("SELECT MAX(tonchamp) AS Id FROM tatable"));
Puis dans ton second INSERT INTO tu mets $req['id'] pour l'identifiant
0
j'ai pas encore essayé ta méthode, je veux juste savoir avant pourquoi tu fais un SELECT MAX ?
0
Un SELECT MAX est dangereux, en particulier en cas de plusieurs connexions simultanées. Par contre, le mysql_insert_id() te rend bien le dernier id généré par la connexion attachée au script qui l'appelle.
0
létii > le père
20 janv. 2010 à 10:33
et comment il s'utilise le mysql_insert_id() pcq dans le lien que tu m'as donné, on voit juste comment l'afficher, sauf que moi je ne veux pas l'afficher !
0
on voit juste comment l'afficher

TU ne vois que ça.
Ce lien donne un exemple d'utilisation, il n'est pas interdit d'utiliser la fonction dans tout autre contexte où une valeur est attendue. Tu n'en voudras pas aux rédacteurs du manuel PHP de n'avoir pas pris ton cas personnel comme exemple ;)
Si tu le veux dans le premier champ de ta table réservation , il faut faire :

$req="INSERT INTO reservation VALUES ('".mysql_insert_id()."','".$daaaa."''".$dmm."''".$djj."''".$dhh."''".$dmin."''".$dss."',
'".$faaaa."''".$fmm."''".$fjj."''".$fhh."''".$fmin."''".$fss."',
'".$robot1."','".$typetest."','".$campagne."');" or die(my_sql_error();

Je rajoute le or die... car je sens venir d'autres problèmes
0
ok! non JE ne vois pas que ça... Et je sais très bien que chaque problême est unique!! Mais merci de me le redire de cette façon, comme si je comprenais pas...
Sinon, pour mon pb, pourquoi tu mets mysql_insert_id() sur mon auto incrémentation de réservation alors que c'est l'identifiant de la campagne que je veux avoir?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mais merci de me le redire de cette façon, comme si je comprenais pas
Parce que tu ne comprenais pas, la preuve, tu as eu besoin de re-poser une question.

tu mets mysql_insert_id() sur mon auto incrémentation de réservation alors que c'est l'identifiant de la campagne que je veux avoir? Parce que je n'avais pas compris pas moi non plus dans quel champ tu le voulais (pourtant tu l'avais dit ..) :-D
$jeu=@mysql_query($sql,$mysqlLink);
$campagne=mysql_insert_id(); // récupère l'id de la campagne

Et ne change pas ta requête sur reservation
0
Je te remercie pr cette réponse !
Et j'ai eu besoin de re-poser une question pcq ce n'est que comme ça que l'on apprend !
0
Pas d'accord ! On apprend dans les manuels, puis en faisant soi-même.
Tu as reposé une question pour avoir une solution toute cuite, alors que tu avais tous les éléments. Je ne crois pas que tu aies appris grand chose sur ce coup là.
Enfin, c'est un autre débat. J'espère quand même que ton problème est résolu ;)
0
ça fonctionne !
Merci bcp !
0