Bonjour à tous,
Voici mon problème:
J'ai repris le tutoriel InlineMod disponible sur le site. Après de nombreuses modifications et quelques simplifications, j'arrive bien à modifier le contenu du tableau dynamiquement ( lors du double-clique sur une cellule : champ -> création de l'input -> transfert vers champ.value ).
Or, la requête SQL ne s'effectue pas lorsque l'édition de la cellule est terminée. Voici les fonctions de mon fichier inlinemod.js (je vous montre celles qui nous intéressent ) :
et voici sauverMod2.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
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 function inlineMod(id,obj,nomChamp,classe){ if(editionEnCours){ return false; }else{ editionEnCours=true; sauve=false; } champ=eval('new '+classe+'();'); champ.valeur=obj.innerText ? obj.innerText : obj.textContent; champ.id=id; champ.nomChamp=nomChamp; champ.remplacerTexte(obj,sauverMod()); champ.activerChamp(); } function sauverMod(){ xhr.onreadystatechange=function(){ if(xhr.readyState == 400){ if(!xhr.reponseText){ editionEnCours = false; champ.terminerEdition(); document.getElementById("erreur").innerHTML=""; return true; }else{ sauve=false; return false; } } } } Texte.prototype.remplacerTexte=function(parent,sauvegarde){ if(!parent || sauvegarde){ return false; }else{ this.parent=parent; } input=document.createElement('input'); input.value=this.valeur; input.style.width=getTextWidth(this.valeur)+10+"px"; input.setAttribute('method', 'GET'); input.onblur=function(){ sauverMod(); champ.terminerEdition(); } input.onkeydown=function keyDown(event){ if(window.event.keyCode==13){ sauverMod(); champ.terminerEdition(); } }; champ.terminerEdition(); parent.replaceChild(input,parent.firstChild); } } Texte.prototype.terminerEdition=function(){ this.parent.replaceChild(document.createTextNode(input.value), this.parent.firstChild); var querystring = "?champ=" + champ.nomChamp + "&valeur=" + champ.getValeur() + "&echap=" + champ.echapperValeur() + "&id=" + champ.id + ieTrick() ; xhr.open("GET" , "sauverMod2.php" + querystring , true); xhr.send(null); delete input; editionEnCours=false; sauve=false; }
J'ai déjà vu pas mal de tutoriel là-dessus, mais à chaque fois l'input était déjà initialisé dans la page index.php (dont l'attribut method était aussi précisée). Le problème vient peut-être du fait que l'input est créé dynamiquement... j'ai déjà testé avec la methode "post" et avec d'autres syntaxes plus simples pour la requête SQL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php $con=mysql_connect("localhost","root","root") or die(mysql_error()); mysql_select_db("bootx",$con); $champ=$_GET["champ"]; $valeur=$_GET["valeur"]; $id=$_GET["id"]; $sql="UPDATE clients SET ".$champ." = `".$valeur."` WHERE clients.id = ".$id; mysql_query($sql,$con); mysql_close($con); ?>
(Je précise que le code javascript n'a visiblement aucun problème)
Merci à vous.
Partager