[PHP/MySQL] Formulaire - Mise à jour BDD par DELETE + INSERT
Bonjour,
Je ne m’en sors pas avec mon formulaire de mise à jour.
Dans ce formulaire, l’utilisateur aura dans les champs le contenu de la base qu’il pourra modifier. (DELETE des données puis INSERT des nouvelles données saisies)
Lorsqu’il s’agit que d’une ligne = pas de problème.
Mais l’utilisateur à la possibilité d’appuyer sur un bouton plus pour ajouter de nouvelles lignes. (générées à l’aide de JAVASCRIPT)
Je dois mal m’y prendre au niveau des boucles car je n’ai pas le résultat voulu.
Soit les résultats s’affichent sur plusieurs lignes mais en prenant en compte que la dernière saisie, soit je n’arrive à afficher qu’une ligne.
Mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| <?
// FORMULAIRE DE MODIFICATION
if (isset ($_POST['BtdbEnvoyer']))
{
//Suppression des données
$sqlDelAct = " DELETE FROM `action_has_tdb` WHERE `idTdb` = $dernierEnr ";
mysql_query($sqlDelAct) or die('Erreur SQL !'.$sqlDelAct.'<br>'.mysql_error());
//Insertion des données
for ($i=0;$i<$_POST['nbreLigneAct'];$i++)
{
if(isset($_POST['ActAct'][$i])) $ActAct = $_POST['ActAct'][$i]; else $ActAct = 0;
if(isset($_POST['ActObj'][$i])) $ActObj = $_POST['ActObj'][$i]; else $ActObj = 0;
$sqlAction = " INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`)
VALUES('$dernierEnr','$ActAct','$ActObj')";
mysql_query($sqlAction) or die(mysql_error());
}
?>
<!--construction-->
<html>
<head>
<link href="styleIndicaPerf.css" rel="stylesheet" type="text/css" />
<script language="javascript" src="script.js">
</script>
</head>
<body class="body">
<form name="FormTdb" method="post" action="formTypeUpdate.php#formulaire">
<table class="tableAction">
<tr>
<th class="action"><b>Actions</b></th>
<th class="action"><b>Objectifs et Gains</b></th>
</tr>
<?
//Affichage des données de la BDD dans les champs
echo $sqlAffichAction = "SELECT * FROM action_has_tdb WHERE idTdb = $dernierEnr";
$resultAction = mysql_query($sqlAffichAction) or die ('Erreur : '.mysql_error() );
while($rowAction = mysql_fetch_array($resultAction))
{
for ($i=0;$i<$_POST['nbreLigneAct'];$i++)
{
if(isset($_POST['ActAct'][$i])) $ActAct = $_POST['ActAct'][$i]; else $ActAct = 0;
if(isset($_POST['ActObj'][$i])) $ActObj = $_POST['ActObj'][$i]; else $ActObj = 0; ?>
<tr>
<td class="action"><textarea rows='5' cols="25" name='ActAct[]'><?
if($ActAct!=0) echo $ActAct; else echo $rowAction["Action"];?></textarea></td>
<td class="action"><textarea rows='5' cols="15" name='ActObj[]'><?
if($ActObj!=0) echo $ActObj; else echo $rowAction["Objectif"];?></textarea></td>
</tr>
<? }
}
?>
</table>
<div id=saisiesAct></div>
<div align=center><input type=button value="+" onclick=AjouterAction()></div>
<input type="hidden" name="nbreLigneAct" value="<?if (isset($_POST['nbreLigneAct'])) echo $_POST['nbreLigneAct'];
else echo "1";?>" id="NbreLigneAct">
<input type="submit" name="BtdbEnvoyer" value="modifier"></br>
<a name="formulaire"></a>
<? if (isset ($_POST['BtdbEnvoyer'])) echo "<font color=green>Données modifées dans la base</font>"; ?>
</form>
</body>
</html>
<?
}
?> |
Merci d’avance à ceux qui s’intéresseront à mon problème.