récupération de variables ds un tableau dynamique JS
Posté : 23 juin 2006, 10:09
Bonjour!
j'ai un formulaire de saisie dans un tableau dynamique (pour ajouter et supprimer des lignes), avec des input et autre du style libmis[] où je voudrai que les réponses soient stockées dans la bdd avc un enregistrement pour chaque ligne, donc des id de champs incrementés pour chaque ligne:
j'ai un formulaire de saisie dans un tableau dynamique (pour ajouter et supprimer des lignes), avec des input et autre du style libmis[] où je voudrai que les réponses soient stockées dans la bdd avc un enregistrement pour chaque ligne, donc des id de champs incrementés pour chaque ligne:
<form id="saisieresa" name="saisieresa" method="post" action="scriptresavehic.php">
<script>
// Tableau
/*
* Utilisation :
* 1. Créer un tableau avec la proprieté class="TABLE" (Dynamic TABLE)
* 2. Le tableau doit être standard : il contenir un <thead>, un <tbody> et un <tfoot>
* et utiliser à bon escient les <td> et <th> ou <tr>.
* 3. La première ligne du tbody sera utilisée comme ligne de réference.
* Elle sera clonée pour en ajouter de nouvelle. Elle ne sera pas affichée.
*/
window.onload = dtableInit;
/* initialise le script */
function dtableInit() {
var table = document.getElementsByTagName(\'dtable\');
for ( var i = 0; i < table.length; i++ ) {
// on récupère tous les tableaux dynamiques
if ( table[i].className = \'dTable\' ) {
var tbody = table[i].tBodies[0];
var newTr = tbody.rows[0].cloneNode(true);
// on masque la première ligne du tbody (la ligne de reference)
tbody.rows[0].style.display = \'none\';
// on en ajoute une
tbody.appendChild(newTr);
}
}
}
/* trouve le tag "parentTagName" parent de "element" */
function getParent(element, parentTagName) {
if ( ! element )
return null;
else if ( element.nodeType == 1 && element.tagName.toLowerCase() == parentTagName.toLowerCase() )
return element;
else
return getParent(element.parentNode, parentTagName);
}
/* ajoute une ligne */
function addLigne(link) {
// 1. récuperer le node "TABLE" à manipuler
var td = link.parentNode;
var table = getParent(td,\'TABLE\');
// 2. on va manipuler le TBODY
var tbody = table.tBodies[0];
// 3. on clone la ligne de reference
var newTr = tbody.rows[0].cloneNode(true);
tbody.appendChild(newTr);
if ( document.all ) // pour IE
newTr.style.display = "block";
else
newTr.style.display = "table-row"; // pour Gecko
}
/* supprimer une ligne */
function delLigne(link) {
// 1. récuperer le node "TABLE" à manipuler
var td = link.parentNode;
var table = getParent(td, \'TABLE\');
// 2. récuperer le TBODY
var tbody = table.tBodies[0];
// 3. Supprimer le TR
tbody.removeChild(getParent(td, \'TR\'));
}
</script>
<table class="dtable" border=1>
<thead>
<tr>
<td> </td>
<td><a href="#" onclick="addLigne(this); return false;">Ajouter une mission</a></td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<th width="50" scope="col"><div align="center">Mission</div></th>
<th width="125" scope="col"><div align="center">Libellé</div></th>
<th width="200" scope="col"><div align="center">Véhicule</div></th>
<th width="200" scope="col"><div align="center">Nom(s)</div></th>
<th width="125" scope="col"><p align="center">Jours</p>
<p align="center">L M M J V</p>
</th>
<th width="40" scope="col"> </th>
</tr>
</thead>
<tfoot>
<tr>
</tr>
</tfoot>
<tbody>
<tr>
<td>
<div align="center">
<select name="selectmission[]">
<option value=0>-----</option>
<option value=1>1</option>
<option value=2>2</option>
...
<option value=9>9</option>
<option value=10>P1</option>
<option value=11>P2</option>
</select>
</div>
</td>
<td>
<div align="center">
<input type="text" name="libmis[]">
</div>
</td>
<td>
<div align="center">
<select name="vehicmis[]"> ';
$requetev = "select * from vehicules order by codevehic";
$resultat = mysql_query($requetev);
$ligne = mysql_fetch_assoc($resultat);echo'
<option value=0>--------------------------------</option>';
while ($ligne)
{
echo '<option value="'.$ligne["nomvehic"].'">'.$ligne["nomvehic"].'</option>';
$ligne = mysql_fetch_assoc($resultat);
}
echo '
</select>
</div>
</td>
<td>
<div align="center">
<p></p>
<select name="nom1mis[]">
';
$requeten1 = "select * from users order by nomuser;";
$resultatn1 = mysql_query($requeten1);
$ligne = mysql_fetch_assoc($resultatn1);echo'
<option value=0>--------------------------------</option>';
while ($ligne)
{
echo '<option value="'.$ligne["login"].'">'.$ligne["prenomuser"].' '.$ligne["nomuser"].'</option>';
$ligne = mysql_fetch_assoc($resultatn1);
}
echo'
</select>
<p></p>
<select name="nom2mis[]">';
$requeten2 = "select * from users order by nomuser;";
$resultatn2 = mysql_query($requeten2);
$ligne = mysql_fetch_assoc($resultatn2); echo'
<option value=0>--------------------------------</option>';
while ($ligne)
{
echo '<option value="'.$ligne["login"].'">'.$ligne["prenomuser"].' '.$ligne["nomuser"].'</option>';
$ligne = mysql_fetch_assoc($resultatn2);
}
echo '
</select>
<p></p>
</div>
</td>
<td>
<div align="center">
<input type="checkbox" name="lunmis[]" value="checkbox">
<input type="checkbox" name="marmis[]" value="checkbox">
<input type="checkbox" name="mermis[]" value="checkbox">
<input type="checkbox" name="jeumis[]" value="checkbox">
<input type="checkbox" name="venmis[]" value="checkbox">
</div>
</td>
<td><div align="center"><input type=submit value="Sauvegarder" name="saveresavehic"><br><a href="#" onclick="delLigne(this); return false;">Suppr</a></div></td>
</tr>
</tbody>
</table>
(dsl pour la longueur du code...) mon problème est donc d'incrémenter ces champs en fonction du numéro de mission (seclectmission[]) puis de récupérer le tout pour la requete dans scriptresavehic.php, que voici :if ( $_POST["selectmission[]"] != 0 and $_POST["libmis[]"] != "" and $_POST["nom1mis[]"] != 0 and $_POST["vehicmis[]"] != 0)
{
$requeteirv1 = "INSERT INTO resavehic(numresav, nummissionrv, libmissionrv, nomrvun, nomrvdeu, vehicrv) VALUES ( DEFAULT, '".$_POST["selectmission[]"]."' , '".$_POST["libmis[]"]."', '".$_POST["nom1mis[]"]."', '".$_POST["nom2mis.[]."]."', '".$_POST["vehicmis.[]."]."');";
mysql_query($requeteirv1);
}
else
{
echo '<script>alert("Vous n\'avez pas rempli tous les champs.");</script>';
};
voila, merci beaucoup de votre éclairage j'espère ^^