[php] Problème d'insertion avc un formulaire?

Fermé
sylvain42 - 24 oct. 2007 à 14:23
 Alain42 - 24 oct. 2007 à 17:55
Bonjour,

j'ai créé un formulaire php pour insérer des données dans ma bdd, j'ai utilisé des tableaux php avec les crochets [], je vais afficher mon code pour que vous compreniez:

-Voici une partie du code pour le form:

<TABLE CELLSPACING=2>

<?php
$nomreghm = ExecRequete ("SELECT * FROM Regime WHERE coderegime=1 OR coderegime=10 ORDER BY coderegime", $connexion);
$nomreg5 = ExecRequete ("SELECT * FROM Regime WHERE coderegime=2 OR coderegime=3 OR coderegime=4 OR coderegime=5 OR coderegime=6 ORDER BY coderegime", $connexion);
$nomregrest = ExecRequete ("SELECT * FROM Regime WHERE coderegime<>1 AND coderegime<>10 AND coderegime<>2 AND coderegime<>3 AND coderegime<>4 AND coderegime<>5 AND coderegime<>6 ORDER BY coderegime", $connexion);

echo "<TR>";

while($regime1 = ObjetSuivant ($nomreghm))
{
$coderegime0[] = $regime1->coderegime;
echo "<TD>$regime1->nomregime :</TD>"
. "<TD><select size='1' name='valeurreg0[]'>"
. "<option VALUE='Non'>Non</option>"
. "<option VALUE='Oui'>Oui</option>"
. "</select></TD>";
}

echo "</TR>";

echo "<TR>";

while($regime2 = ObjetSuivant ($nomreg5))
{
$coderegime1[] = $regime2->coderegime;
echo "<TD>$regime2->nomregime :</TD>"
. "<TD><select size='1' name='valeurreg1[]'>"
. "<option VALUE='Non'>Non</option>"
. "<option VALUE='Oui'>Oui</option>"
. "</select></TD>";
}

echo "</TR>";

echo "<TR>";
while($regime3 = ObjetSuivant ($nomregrest))
{
$coderegime2[] = $regime3->coderegime;
echo "<TD>$regime3->nomregime :</TD>"
. "<TD><select size='1' name='valeurreg2[]'>"
. "<option VALUE='Non'>Non</option>"
. "<option VALUE='Oui'>Oui</option>"
. "</select></TD>";
}
echo "</TR>";

?>

</TABLE>

-Partie du code qui insère:

while ($coderegime = ObjetSuivant($reg))
{
$valeurreg = $valeurreg0[$i];
$coderegime = $coderegime0[$i];
$requetereg = "INSERT INTO Redime (codechambre, coderegime, valeurreg) "
. " VALUES ('$codechambre', '$coderegime', '$valeurreg')";
}

while ($coderegime = ObjetSuivant($reg))
{
$valeurreg = $valeurreg1[$i];
$coderegime = $coderegime1[$i];
$requetereg = "INSERT INTO Redime (codechambre, coderegime, valeurreg) "
. " VALUES ('$codechambre', '$coderegime', '$valeurreg')";
}

while ($coderegime = ObjetSuivant($reg))
{
$valeurreg = $valeurreg2[$i];
$coderegime = $coderegime2[$i];
$requetereg = "INSERT INTO Redime (codechambre, coderegime, valeurreg) "
. " VALUES ('$codechambre', '$coderegime', '$valeurreg')";
}

Et quand je teste, voici le message d'erreur: "Erreur dans l'exécution de la requête 'INSERT INTO Redime (codechambre, coderegime, valeurreg) VALUES ('74', '', '')'.
Message de MySQL : Cannot add or update a child row: a foreign key constraint fails"

coderegime et valeurreg prend aucune valeur.

Si vous voyez, merci de m'aider car c'est un problème urgent dans mon boulot.

cordialement
A voir également:

2 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
24 oct. 2007 à 14:57
salut,

que ce soit urgent on s'en tape comme de l'an 40.

pour ton erreur c'est un problème de clé étrangère. tu as inséré des clés dans ta table qui font référence à une autre table et le serveur ne peut toucher à l'une sans toucher l'autre. à priori c'est parce qu'il faut que les clés filles existent pour insérer un nouvelle ligne.
0
moi je vois aussi une erreur:

while ($coderegime = ObjetSuivant($reg))
{
$valeurreg = $valeurreg0[$i];
$coderegime = $coderegime0[$i];
$requetereg = "INSERT INTO Redime (codechambre, coderegime, valeurreg) "
. " VALUES ('$codechambre', '$coderegime', '$valeurreg')";
}


dans tes boucles while tu utilises la variable $i elle est initialisée et incrémentée où ??

$i=0;
while ($coderegime = ObjetSuivant($reg))
{
$valeurreg = $valeurreg0[$i];
$coderegime = $coderegime0[$i];
$requetereg = "INSERT INTO Redime (codechambre, coderegime, valeurreg) "
. " VALUES ('$codechambre', '$coderegime', '$valeurreg')";
$i++;
} 
0