document.getElementById("id_reservation").value
?
Cela ne fonctionne pas. J'ai essayé un million de trucs.
Pour l'heure j'ai contourné le problème. J'arrive à récupérer la valeur de l' id_prestation qui doit être supprimer. Mais je ne sais pas comment mettre à jour mon champ caché <input type="hidden" name="prestation_a_supprimer[]" value="">.
Comment j'ai fais :
1) Lorsque je rappelle une réservation déjà existante, je génère le code de la page via php. Avant j'avais par exemple pour la partie Prestation Incluses:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
<tbody>
<?
for ($i=1;$i<=$nb_total_lignes_inclus;$i++)
{
echo "<td style='width: 105px;'><a href='#' onclick='deleteCurrentRow(this,0)'; >delete</a></td>";
echo "<td style='width: 278px;'><input type='hidden' name='id_prestation$i' value='".$ligne_presta_inclus['id_prestation']."'><input type='hidden' name='categorie_prestation$i' value='2'><input type='text' name='libelle$i' size='40' value='".$ligne_presta_inclus['libelle_prestation']."'></td>";
echo "<td style='width: 10px;'></td>";
echo "<td style='width: 85px;'><input type='text' id='montant_vente$i'name='montant_vente$i' size='10' value='".$ligne_presta_inclus['montant_vente']."'readOnly onChange='majTotal_Vente();'></td>";
echo "<td style='width: 53px;'>".$devise_client_affichage."</td>";
echo "<td style='width: 13px;'></td>";
echo "<td style='width: 111px;'><input type='text' name='montant_achat$i' size='20' value='".$ligne_presta_inclus['montant_achat']."'></td>";
echo "<td style='width: 41px;'></td>";
echo "<td style='width: 128px;'><input type='text' name='fournisseur$i' size='20' value='".$ligne_presta_inclus['fournisseur_id']."'></td>";
echo "</tr>";
$ligne_presta_inclus =mysql_fetch_assoc($liste_prestations_inclus);
}
?>
</tbody>
<tbody>
<tr>
<td style="width: 105px;"><input type="button" value="Add" onclick="ajoutLigneAuTableau(0);" /></td> |
J'ai modifier les paramètres de la fonction deleteCurrentRow en ajoutant un 3ème paramètre que je sais récupérer en php.
1 2 3
| for ($i=1;$i<=$nb_total_lignes_inclus;$i++)
{
echo "<td style='width: 105px;'><a href='#' onclick='deleteCurrentRow(this,0)'; >delete</a></td>"; |
devient
1 2 3 4 5
|
for ($i=1;$i<=$nb_total_lignes_inclus;$i++)
{
$id_presta_inclus_sup = $ligne_presta_inclus['id_prestation'];
echo "<td style='width: 105px;'><a href='#' onclick='deleteCurrentRow(this,0,$id_presta_inclus_sup)'; >delete</a></td>"; |
avec en debut de code php suivant qui permet de récupérer les données de la base situé en debut de code de page.
1 2 3 4 5
|
$requeteInclus = "SELECT * FROM prestation WHERE resa_id = '$id_resa' AND categorie_ligne_id = '2'";
$liste_prestations_inclus = ExecRequete($requeteInclus, $connexion);
$nb_total_lignes_inclus = mysql_num_rows($liste_prestations_inclus) ;
$ligne_presta_inclus =mysql_fetch_assoc($liste_prestations_inclus); |
Côté javascript la fonction deleteCurrentRow devient :
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
|
function deleteCurrentRow(obj,num_tbody,id_prestation_sup)
{
var delRow = obj.parentNode.parentNode;
var tbl = delRow.parentNode.parentNode;
var rIndex = delRow.sectionRowIndex;
var rowArray = new Array(delRow);
var id_prestation_sup = id_prestation_sup;
alert(id_prestation_sup);
deleteRows(rowArray);
if (num_tbody == 0) // si on ajoute une prestation incluse donc premier tbody donc 0
{
nbLignesInclus--;
}
else if (num_tbody == 2) // si on ajoute une option donc premier tbody donc 2
{
nbLignesOptions--;
}
else if (num_tbody == 4) // si on ajoute une remise donc premier tbody donc 4
{
nbLignesRemises--;
}
majNumLignes(0);
majNumLignes(2);
majNumLignes(4);
// uniquement pour les tests+
document.getElementById('nb_ligne_inclus').value= nbLignesInclus;
document.getElementById('nb_ligne_options').value= nbLignesOptions;
document.getElementById('nb_ligne_remises').value= nbLignesRemises;
// Mise à jour du nb total de lignes qui se trouve dans un champ caché
document.getElementById('nb_total_lignes').value= 1+nbLignesInclus+nbLignesOptions+nbLignesRemises;
majTotal_Vente();
} |
Le alert(id_prestation_sup); est juste là pour m'assurer que j'ai bien la bonne valeur de l'id_prestation à supprimer. voir résultant en supprimant une ligne
Ceci étant dit :
1) maintenant je boque sur comment mettre à jour le champ array
2) Cette méthode de rajouter un 3ème paramètre est nulle, puisque je suis persuadé qu'on pourrait s'en passer. En effet, la fonction reçoit en paramètre
this et le numéro de tbody.
J'ai testé le code suivant qui m'affiche bien l'étiquette du champ à supprimer, mais le problème c'est que je n'arrive pas à naviguer dans le dom pour récupérer sa valeur. la preuve en (supprimer une ligne pour tester.
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
|
function deleteCurrentRow(obj,num_tbody)
{
var delRow = obj.parentNode.parentNode;
var tbl = delRow.parentNode.parentNode;
var rIndex = delRow.sectionRowIndex;
var rowArray = new Array(delRow);
///// DEBUT DE TEST /////////////////////////////////
var indice_ligne_supp = rIndex+1;
if (num_tbody == 0) // ligne prestations incluses
{
numLigneAsupprimer = indice_ligne_supp ;
}
else if (num_tbody == 2) //
{
var numLigneAsupprimer = nbLignesInclus + indice_ligne_supp ;
}
else if (num_tbody == 4) //
{
var numLigneAsupprimer = nbLignesInclus +nbLignesOptions+ indice_ligne_supp ;
}
var champ_idprestation_a_supprimer = 'id_prestation'+numLigneAsupprimer
alert(champ_idprestation_a_supprimer);
deleteRows(rowArray); |
Voili voilou ...
Partager