Bonjour,

J'ai réalisé à l'aide de Bootstrap un tableau éditable qui affiche des données de ma base de données. La seconde partie consiste à réaliser une mise à jour de ma BDD (MYSQL) directement en modifiant les cellules du tableau.

Alors je sais le faire sur un tableau simple html via cette méthode :
Code html : 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<script src="./js/jquery.js"></script> 
<script> 
$(document).ready(function() 
{  
 
 
 $("td").click(function()  
  { 
   if( $(this).attr("contenteditable") == "true") 
   {    
    // le"id" du td doit contenir l'id de la BDD 
    // le "name" doit contenir le nom du champ à modifier 
     
    var contenu_avant = $(this).text(); 
                var id_bdd = $(this).attr("id"); 
                var champ_bdd = $(this).attr("name"); 
    //alert("avant =" + contenu_avant); 
                 
    $(this).blur(function() 
        { 
         var contenu_apres = $(this).text(); 
         //alert("contenu apres = " + contenu_apres); c
         
                                 if (contenu_avant != contenu_apres) 
                                     { 
          parametre='id='+id_bdd+'&champ='+champ_bdd+'&contenu='+contenu_apres ; 
          //alert(param) ; 
          $.ajax({ 
            url: "updatedynamique.php",  
            type: "POST",  
            data: parametre,  
            success: function(html) {  
                  //alert(html); 
                  } 
           }); 
          } 
          
        }); 
     
   };     
             
  }); 
});   
 
   
</script> 
 
 </head> 
 
 <body> 
  <?php
  try
 
{     
         $link = new PDO('mysql:host=localhost;dbname=voiture;charset=utf8', 'root', '',array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ));
          
}
 
catch(Exception $e)
 
{
 
        die('Erreur : '.$e->getMessage());
}
?>
 
 
 <table id="tableau" border="1"> 
  <tr> 
   <td >--   NOM   --</td> <td >--   TELEPHONE   --</td> 
  </tr> 
  <tr> 
   <td contenteditable="true" id="1" name="nom" > </td> 
   <td  contenteditable="true" id="1" name="telephone" > <?php $req =$link->query('SELECT prix from voiture WHERE id=1'); $donnees = $req->fetch(); echo $donnees['prix'] ;?></td> 
   </tr> 
   <tr> 
   <td contenteditable="true" id="2" name="nom" ></td> 
   <td contenteditable="true" id="2" name="telephone" ></td> 
   </tr> 
 </table>  
 
 
 </body> 
 
</html>

Bien que la réalisation d'un tableau Boostrap est plus simple je n'arrive pas à récupérer les champs du tableau ( via les sélecteurs du DOM ) pour effectuer l'ajax.

Voici le code pour mon tableau Bootsrap :
Code html : 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
<body> 
 <div class="container">
        <h1>Editable</h1>
        <table id="table"
               data-toggle="table"
               data-pagination="true"
               data-show-export="true"
               data-url="./tableau_developpement_sw.php">
            <thead>
            <tr>
                <th data-field="id_ligne">ID</th>
                <th data-field="type_sw" data-editable="true">Type</th>
                <th data-field="complexite" data-editable="true">complexite</th>
                <th data-field="date_lancement" data-editable="true">Date de lancement</th>
                <th data-field="date_livraison" data-editable="true">Date de Livraison</th>
                <th data-field="commentaire" data-editable="true">Commentaire</th>
            </tr>
            </thead>
        </table>
    </div>
  <script> 
$(document).ready(function() 
{  
 
 
 $("th").click(function()  
  { 
   if( $(this).attr("data-editable") == "true") 
   {    
    
   console.log('ici');
   };     
             
  }); 
});   
   
</script> 
 </body>

Le script ne donne rien.

Merci.