Recuperer le contenu d'une div content editable

Didi -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, et tout d'abord merci du temps que vous allez passer à m'aider.
J'ai un soucis avec une de mes div. J'aimerai recuperer le contenu d'une div content editable afin de la faire validée en php et ainsi l'enregistrée dans ma base de donnée.

 
<div contenteditable="true" id="test"><?php echo $mavariable?></div>


J'ignore comment recuperer l'id test et l'envoyer à mon formulaire afin d'etre validé en php
Merci encore de votre aide

1 réponse

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut Didi,

Si le contenu de ta
<div>
est modifié par l'utilisateur et que tu veux récupérer le résultat de cette modification, tu dois le faire du côté client avec du Javascript, récupérant le contenu de la
<div>
au moyen de son
id
lors de l'événement de ton choix, et l'envoyer ensuite à ton serveur Php, par exemple avec AJAX.

En Javascript pur, tu peux faire comme cela :

<!DOCTYPE html>
<html>
<body>

<div contenteditable="true" id="test-ed-div">Click me and change me, and press enter to send</div>

<script>
document.getElementById('test-ed-div').onkeyup = function(event) {
var x = event.which || event.keyCode;
if (x == 13) {
    this.innerHTML = this.innerHTML.substring(0, this.innerHTML.length - 1);
    this.blur();
    // now send this.innerHTM through AJAX to Php
  }
}
</script>

</body>
</html>

Dans cet exemple, le Javascript est déclenché à chaque fois qu'une touche pressée est relachée, et si c'est la touche Enter, ce caractère est retiré du
<div>
, et le focus est retiré du
<div>
. Il ne reste plus qu'à faire une requête XMLHttpRequest pour POSTer le contenu au script Php et le récupérer dans Php habituellement.

Dal
0
Didi
 
Salut Dal et merci de ta reponse, j'ai tenté de récuperer le contenu comme indiqué, mais cela ne fonctionne pas. Je ne suis pas trop doué en ajax, aurais tu une piste a me donner?
Merci
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
OK, voilà un exemple simplifié (non testé) :

<!DOCTYPE html>
<html>
<body>

<div contenteditable="true" id="test-ed-div">Click me and change me, and press enter to send</div>

<script>
document.getElementById('test-ed-div').onkeyup = function(event) {
var x = event.which || event.keyCode;
if (x == 13) {
    this.innerHTML = this.innerHTML.substring(0, this.innerHTML.length - 1);
    this.blur();
    // now send this.innerHTM through AJAX to Php
    var params = "content=" + encodeURIComponent(this.innerHTML);
    xhttp.open("POST", "mon-script.php", true);
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhttp.send(params);
  }
}
</script>

</body>
</html>

Dans
mon-script.php
, récupère le contenu envoyé ainsi :

<?php
$contenu = $_POST["content"];
?>

Cela devrait suffire pour envoyer le contenu en POST à Php.

ton script Php peut aussi renvoyer de l'information suite à l'appel Javascript, par exemple, pour dire que tout c'est bien passé et afficher un message sur la page Html.

A ce moment là, il faut ajouter au javascript la gestion de onreadystatechange.

https://www.w3schools.com/xml/xml_http.asp

Dal
0