Mise à jour de données via un formulaire
Posté : 01 sept. 2009, 16:54
Bonjour,
Le contexte :
Je créé une application me permettant d'enregistrer des missions dont l'objectif est d'analyser des fréquences. Pour une mission, il y a donc une ou plusieurs fréquences.
Lorsque je veux modifier les fréquences saisies, je les récupère dans la base de données avant d'effectuer les modifications. Voici le code utilisé pour cela :
Le problème:
Comment mettre à jour des données qui se trouvent dans des champs de même nom pour chaque ligne. Je m'explique : si j'ai 3 fréquences à afficher, le premier champ de la première ligne s'appellera par exemple "fde1" et contiendra la fréquence "frq1". Le premier champ de la deuxième ligne s'appellera (automatiquement) "fde1" et contiendra la fréquence "frq2". Le premier champ de la troisième ligne s'appellera (automatiquement) "fde1" et contiendra la fréquence "frq3".
Je ne sais pas comment récupérer les fréquences obtenus car seul la dernière ligne saisie est prise en compte dans le traitement du formulaire (voir ci-dessous) :
Le contexte :
Je créé une application me permettant d'enregistrer des missions dont l'objectif est d'analyser des fréquences. Pour une mission, il y a donc une ou plusieurs fréquences.
Lorsque je veux modifier les fréquences saisies, je les récupère dans la base de données avant d'effectuer les modifications. Voici le code utilisé pour cela :
<?php
require_once ('Connect.inc.php');
$menu="mission";
//Récupération des champs
if (isset($_POST['datedebut'])) $DateDebut=$_POST['datedebut'];
else $DateDebut="";
if (isset($_POST['datefin'])) $DateFin=$_POST['datefin'];
else $DateFin="";
if (isset($_POST['misnum'])) $MisNum=$_POST['misnum'];
else $MisNum="";
if (isset($_POST['operator'])) $Operator=$_POST['operator'];
else $Operator="";
if (isset($_POST['SD'])) $SD=$_POST['SD'];
else $SD="";
if (isset($_POST['tmis'])) $TMis=$_POST['tmis'];
else $TMis="";
$id = $_POST['id_mis'];
$sql_mis = "UPDATE mission SET num_mis='$MisNum', date_deb='$DateDebut', date_fin='$DateFin', type='$TMis', operateur='$Operator', sd='$SD' WHERE id_mis='$id'";
mysql_query($sql_mis) or die('Erreur SQL !'.$sql_mis.'<br>'.mysql_error());
$req = "INSERT INTO depot (var) VALUES ('$id')";
mysql_query($req) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
$sql = "SELECT id_frq,frq_deb,frq_fin,frq_fixe,pas,filtre,modulation FROM frequences INNER JOIN depot ON frequences.id_mis = depot.var";
$qid = mysql_query($sql);
if (!$qid) die('Erreur SQL !'.mysql_error());
?>
<html>
<head>
</head>
<body>
<?php require_once "head.inc.php"; ?>
<center>
<h2>Modification des fréquences analysées</h2>
<form method="POST" action="maj_frq.php">
<?php
while($rows = mysql_fetch_object($qid))
{
?>
<table border="0" cellspacing="10" cellpadding="10">
<tr>
<td>
<input type="text" name="id1" value="<?php echo $rows->id_frq ?>">
</td>
<td>
<input type="text" name="fde1" value="<?php echo $rows->frq_deb ?>">
</td>
<td>
<input type="text" name="ffi1" value="<?php echo $rows->frq_fin ?>">
</td>
<td>
<input type="text" name="ffx1" value="<?php echo $rows->frq_fixe ?>">
</td>
<td>
<select name="pas1">
<?php
$pas = $rows->pas;
switch($pas)
{
case 5:?>
<option selected value="5">5</option>
<option value="10">10</option>
<option value="12,5">12,5</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
<?php break;
case 10:?>
<option value="5">5</option>
<option selected value="10">10</option>
<option value="12,5">12,5</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
<?php break;
case '12,5':?>
<option value="5">5</option>
<option value="10">10</option>
<option selected value="12,5">12,5</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
<?php break;
case 25:?>
<option value="5">5</option>
<option value="10">10</option>
<option value="12,5">12,5</option>
<option selected value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
<?php break;
case 50:?>
<option value="5">5</option>
<option value="10">10</option>
<option value="12,5">12,5</option>
<option value="25">25</option>
<option selected value="50">50</option>
<option value="100">100</option>
<?php break;
case 100:?>
<option value="5">5</option>
<option value="10">10</option>
<option value="12,5">12,5</option>
<option value="25">25</option>
<option value="50">50</option>
<option selected value="100">100</option>
<?php break; } ?>
</select>
</td>
<td>
<select name="filtre1">
<?php
$fl = $rows->filtre;
switch($fl)
{
case 4:?>
<option selected value="4">4</option>
<option value="8">8</option>
<option value="30">30</option>
<option value="300">300</option>
<?php break;
case 8:?>
<option value="4">4</option>
<option selected value="8">8</option>
<option value="30">30</option>
<option value="300">300</option>
<?php break;
case 30:?>
<option value="4">4</option>
<option value="8">8</option>
<option selected value="30">30</option>
<option value="300">300</option>
<?php break;
case 300:?>
<option value="4">4</option>
<option value="8">8</option>
<option value="30">30</option>
<option selected value="300">300</option>
<?php break; } ?>
</select>
</td>
<td>
<select name="modu1">
<?php
$mod = $rows->modulation;
switch($mod)
{
case A3:?>
<option selected value="A3">A3</option>
<option value="F3">F3</option>
<option value="G3">G3</option>
<?php break;
case F3:?>
<option value="A3">A3</option>
<option selected value="F3">F3</option>
<option value="G3">G3</option>
<?php break;
case G3:?>
<option value="A3">A3</option>
<option value="F3">F3</option>
<option selected value="G3">G3</option>
<?php break; } ?>
</select>
</td>
<?php } ?>
</tr>
</table>
<BR>
<table align="center">
<tr>
<td>
<input type="submit" name="Valider" value="Valider">
</td>
<td></td>
<td>
<input type="reset" name="Annuler" value="Annuler">
</td>
</tr>
</table>
</form>
</center>
<?php require_once "footer.inc.php"; ?>
</body>
</html>
J'obtiens donc un formulaire dont le nombre de "champs" reste proportionnel au nombre de fréquences à afficher.Le problème:
Comment mettre à jour des données qui se trouvent dans des champs de même nom pour chaque ligne. Je m'explique : si j'ai 3 fréquences à afficher, le premier champ de la première ligne s'appellera par exemple "fde1" et contiendra la fréquence "frq1". Le premier champ de la deuxième ligne s'appellera (automatiquement) "fde1" et contiendra la fréquence "frq2". Le premier champ de la troisième ligne s'appellera (automatiquement) "fde1" et contiendra la fréquence "frq3".
Je ne sais pas comment récupérer les fréquences obtenus car seul la dernière ligne saisie est prise en compte dans le traitement du formulaire (voir ci-dessous) :
<?php
require_once ('Connect.inc.php');
$menu="mission";
$id1=$_POST['id1'];
$fde1=$_POST['fde1'];
$ffi1=$_POST['ffi1'];
$ffx1=$_POST['ffx1'];
$pas1=$_POST['pas1'];
$fl1=$_POST['filtre1'];
$modu1=$_POST['modu1'];
$sql_mis = "UPDATE frequences SET frq_deb='$fde1', frq_fin='$ffi1', frq_fixe='$ffx1', pas='$pas1', filtre='$fl1', modulation='$modu1' WHERE id_frq='$id1'";
mysql_query($sql_mis) or die('Erreur SQL !'.$sql_mis.'<br>'.mysql_error());
$del = "DELETE FROM depot";
mysql_query($del) or die('Erreur SQL !'.$del.'<br>'.mysql_error());
?>
Merci d'avance pour votre aide car je suis vraiment bloqué.