IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[PHP-JS] identifier des valeurs avant suppression


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut [PHP-JS] identifier des valeurs avant suppression
    Bonjour !

    Voilà j’ai un formulaire sous forme tableau dynamique. Une fois validé, les données sont enregistrées dans mysql. Chaque ligne correspond à des lignes de prestations identifiées par un id_prestation.

    page de test

    Naturellement, selon qu’il s’agisse d’une création ou d’une modification, le traitement php qui est derrière diffère.

    Mon GROS soucis et lorsque je suis en mode modification et que je supprime une ligne déjà existante.
    En cliquant le lien « delete », la ligne est bien effacée de l’écran grâce à Javascript, mais pas dans la base de données.
    D’où l’idée d’intégrer à la fonction de suppression de ligne en js, un script qui permettrait de remplir un champ caché du type :
    <input type="hidden" name="prestation_a_supprimer" value="prestation_a_supprimer[];">
    Au fur et à mesure des suppressions, on remplirait l’array prestation_a_supprimer[] par les id_prestation à supprimer.
    Une fois transmis à php, on traite l’array et on supprime les lignes à supprimer.

    Malheureusement, je bloque …

    Je n’arrive pas à :
    1) Récupérer l’id_reservation de ma ligne qui va être supprimer
    2) Cela va sans dire remplir mon array prestation_a_supprimer[]

    Un coup de main serait le bien venu !

    Voilà ce que j’ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ///// DEBUT DE TEST /////////////////////////////////
    		var indice_ligne_supp = rIndex+1;
    		if (num_tbody == 0) // ligne prestations incluses
    		{
    		var 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 id_prestation_a_supprimer = document.getElementByTagName('id_prestation'+(numLigneAsupprimer)).value;
    		alert(id_prestation_a_supprimer);
    		///////////////  FIN TEST ///////////////////////
    Pour créer une nouvelle réservation
    cliquer sur
    http://dianamahe.free.fr/ajout_ligne19.php
    et donner un numéro dans id_reservation (ex 789)
    saisir des données
    et valider.

    Pour Modifier votre saisie :
    cliquer sur suivi de votre id reservation. (ex 789)

  2. #2
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("id_reservation").value

  3. #3
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ...

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/04/2008, 14h03
  2. Réponses: 3
    Dernier message: 23/10/2007, 13h35
  3. [PHP-JS] Récupération des valeurs des champs
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 08/06/2007, 13h19
  4. Réponses: 11
    Dernier message: 22/02/2006, 17h25
  5. [PHP-JS] recupperer des valeurs html
    Par zimotep dans le forum Langage
    Réponses: 4
    Dernier message: 11/09/2005, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo