Bonjour ryle,
Merci de ta réponse tout d'abord. Tu as effectivement raison c'est une solution que d'englober tous les form dans un seul form en le sortant de la boucle, j'y ai pensé, mais ça ne convient pas à ma situation étant donné que je peux avoir 40 form en boucle de suite.
Donc chaques lignes (regroupée par un form) possède le même modèle de champs input appelés par des requêtes sql dans la boucle :
Code : Tout sélectionner
$dbh = mysql_connect('localhost','root', '');
mysql_select_db('essai', $dbh);
#########Supp, Mod, Ajout ou rien ##########
if (isset($_REQUEST['DELETE'])) {
$id = $_REQUEST['id'];
$sql = "DELETE FROM incitresorerie WHERE id = $id";
} elseif (isset($_REQUEST['UPDATE'])) {
$id = $_REQUEST['id'];
$numinci = $_REQUEST['numinci'];
$etainci = $_REQUEST['etainci'];
$date = $_REQUEST['date'];
$datefi = $_REQUEST['datefi'];
$sql = "UPDATE incitresorerie SET numinci = '$numinci', ";
$sql = $sql . "etainci = '$etainci', ";
$sql = $sql . "date = '$date', ";
$sql = $sql . "datefi = '$datefi', ";
} elseif (isset($_REQUEST['INSERT'])) {
$numinci = $_REQUEST['numinci'];
$etainci = $_REQUEST['etainci'];
$date = $_REQUEST['date'];
$datefi = $_REQUEST['datefi'];
$sql = "INSERT INTO incitresorerie(id, numinci, etainci, date, datefi) ";
$sql = $sql . " VALUES ('','$numinci', '$etainci', '$date','$datefi') ";
}
if (isset($sql))
{
$a = mysql_query($sql);
if ($a)
{
$num = mysql_affected_rows($dbh);
$message = "$num enregistrement(s) mis à jour";
}
else
{
$message = "Erreur: " . mysql_error();
}
<?php }
// On parcourt la table de incit
$sql = "SELECT * from incit ORDER BY id DESC
LIMIT 20";
$a = mysql_query($sql);
$num = mysql_num_fields($a);
?>
<?php while($record = mysql_fetch_row($a)) { ?>
<!-- Pour chaque enregistrement on crée un formulaire -->
<FORM METHOD="POST">
<TR>
<TD width="50" class="blancbis">
<INPUT size="10"
NAME ="<?php echo mysql_field_name($a, 0)?>
VALUE="<?php echo $record[0]?>"
>
</TD>
<TD width="50" class="blancbis">
<INPUT size="10"
NAME ="<?php echo mysql_field_name($a, 1)?>
VALUE="<?php echo $record[1]?>"
>
</TD>
<TD width="50" class="blancbis">
<INPUT size="10"
NAME ="<?php echo mysql_field_name($a, 2)?>
VALUE="<?php echo $record[2]?>"
>
</TD>
<TD width="50" class="blancbis">
<INPUT size="10"
NAME ="<?php echo mysql_field_name($a, 3)?>
VALUE="<?php echo $record[3]?>"
>
</TD>
<TD width="50" class="blancbis">
<INPUT size="10"
NAME ="<?php echo mysql_field_name($a, 4)?>
VALUE="<?php echo $record[4]?>"
>
</TD>
<TD class="grisbis">
<INPUT size="1" TYPE="SUBMIT" NAME="UPDATE" VALUE="Mod">
<INPUT size="1" TYPE="SUBMIT" NAME="DELETE" VALUE="Sup">
</TD>
</TR>
</FORM>
<?php } mysql_close(); ?>
</TABLE>
Ensuite la méthode _POST de chaque form avait le role de renvoyer par un submit les 13 valeurs du form (j'en ai mis que 5 dans le code pour pas faire trop lourd) à la partie insertion sql de la page
Le problème est donc que si je sors le FORM de la boucle du while comment différencier les valeurs regroupées en lignes de tableau par les form et ensuite les récuperer dans mon script d'insertion BDD pour quelles soient correctement entrées par ligne (avec une valeur de submit en plus UPDATE où DELETE).
J'ai l'impression que si j'englobe toutes les lignes de mon tableau dans un form je serais incapable de réinserer les valeurs dans la bdd selon le modèle ci-dessus ...
Je rappelle que je voudrais pouvoir insérer les valeurs de mon tableau par lignes avec un checkbox sans devoir avoir un submit à chaques fin de form.
J'ai pensé à ajouter un attribut name aux FORM et ensuite à récuperer les valeurs des input de chaque form dans un tableau comme le faisait _POST traditionnellement mais je me sens pas capable de les manipuler pour les inserer dans l'ordre dans ma bdd.
Un peu d'aide serait bienvenue
Je ne sais pas si vous m'aurez compris
Mais merci beaucoup d'avance ! et merci pour la réponse !