Bonjour à tous,
j'ai un tableau dont les lignes sont générées via un script PHP et qui contiennent les données issues d'une requête MySQL, jusqu'ici, rien d'extraordinaire.
Pour alléger le code dans ma page, j'ai entrepris de donner la possibilité de modifier les données directement dans les cellules avec le paramètre contentEditable : je fais passer le contenu des cellules dans des hidden de mon formulaire avec Javascript
Mais mon affaire ne fonctionne pas bien, malgré la simplicité du code.
Quelqu'un saurait-il me dire à côté de quoi je passe svp ?
Voici les portions de code correspondant à la fonction, dans l'ordre d'exécution.
HTML (via PHP) :
Code php : 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 echo' <tr id="ligne',$data[0],'"> <td style="width:16px; cursor:pointer;" onclick="modif_vlan(\'ligne',$data[0],'\',\'valid',$data[0],'\',\'annul',$data[0],'\')"> <img src="pics/b_editer.png" title="Modifier vlan ',$data[2],'"> </td> <form method=post style="display:inline;" onsubmit="return conf_modif()"> <td style="width:352px;"> ',$data[1],' </td> <td> ',$data[2],' </td> <td style="width:20px;"> </td> <td style="width:16px;"> <input style="display:none;" type=image src="pics/b_valider1.png" id="valid',$data[0],'" title="Valider la modification" onmouseover="copie_valeurs(\'ligne',$data[0],'\',\'vid',$data[0],'\',\'vname',$data[0],'\')"> <input type=hidden name="h_mvlan" value=',$data[0],'> <input type=hidden id="vid',$data[0],'" name="mod_vid" value="',isset($mod_vid)?$mod_vid:null,'"> <input type=hidden id="vname',$data[0],'" name="mod_vname" value="',isset($mod_vname)?$mod_vname:null,'"> </td> </form> <td style="width:20px;"> </td> <td style="width:16px;"> <a href=vlans.php id="annul',$data[0],'" style="display:none;"><img src="pics/b_annuler.png" title="Annuler la modification"></a> </td> <td style="width:20px;"> </td> <td style="width:16px;"> <form method=post style="display:inline;" onsubmit="return conf_supp(\'vlan ',$data[2],'\')"> <input type=hidden name=delvlan value=',$data[0],'> <input type=image src="pics/b_supprimer.png" title="Supprimer vlan ',$data[2],'"> </form> </td> </tr>';
Javascript :
PHP :
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 <script language=javascript> function modif_vlan(ligne,valid,annul){ var cellule = document.getElementById(ligne).getElementsByTagName('td'); for(var i = 1; i < 3; i++){ cellule[i].contentEditable = "true"; cellule[i].title = "Cliquer pour modifier cette donnée"; } document.getElementById(valid).style.display = "block"; document.getElementById(annul).style.display = "inline-block"; } function copie_valeurs(ligne,hiden1,hiden2){ var hid1 = document.getElementById(hiden1).value; var hid2 = document.getElementById(hiden2).value; var cellule1 = document.getElementById(ligne).getElementsByTagName('td')[1].innerHTML.trim(); var cellule2 = document.getElementById(ligne).getElementsByTagName('td')[2].innerHTML.trim(); hid1 = cellule1; hid2 = cellule2; //alert(hid1+' '+hid2); } </script>
Code php : 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 $h_mvlan = $_POST['h_mvlan']?$_POST['h_mvlan']:null; $mod_vid = trim(str_replace('<br>','',$_POST['mod_vid'])); $mod_vname = strtoupper(trim($_POST['mod_vname'])); if($h_mvlan){ //$mod_vid = $_POST['mod_vid']?str_replace('<br>','',$_POST['mod_vid']):null; //$mod_vname = $_POST['mod_vname']?strtoupper($_POST['mod_vname']):null; if($mod_vid){ // On recherche dans la table si le couple VID / nom de VLAN n'existe pas déjà $sql = "select vid, nom_vlan from t_vlan where (vid = $mod_vid and nom_vlan = \"$mod_vname\")"; $req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error().'<br/><a href=vlans.php>Retour</a>'); $data = mysql_fetch_array($req); // si la recherche est positive, message d'erreur if($data[0] == $mod_vid and $data[1] == $mod_vname){ echo'<script>alert("ERREUR !\nLes VID et nom de VLAN renseignés existent déjà.");</script>'; }else{ // sinon, modification de la table $sql = "update t_vlan set vid = $mod_vid, nom_vlan = \"$mod_vname\" where id_vlan = $h_mvlan"; $req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error().'<br/><a href=vlans.php>Retour</a>'); echo'<script>alert(\'Vlan modifié avec succès !\');</script>'; } } }
Merci à vous
ed54
Partager