Bonjour, j'utilise pour la première fois de l'Ajax pour éditer du contenu texte car le principe d'enregistrer en arrière plan me semble génial. Cependant, je rencontre 2 problèmes :
- Les retour à la lignes (touche "entrée") ne sont pas enregistrés dans ma BDD (ils sont pourtant bien enregistrés via un textarea sans passé par Ajax).
- Je ne sais pour qu'elle raison l'enregistrement dans ma BDD à l'air assez aléatoire, principalement sur Chrome, il doit certainement y avoir un problème dans mon code.
HTML
<span contenteditable="true" table_bdd="nom_de_ma_table" champ_bdd="nom_du_champ" id_bdd="id" >Texte éditable</span>
JS
$(document).ready(function()
{
$("span").click(function()
{
if( $(this).attr("contenteditable") == "true")
{
var contenu_avant = $(this).text();
var id_bdd = $(this).attr("id_bdd");
var champ_bdd = $(this).attr("champ_bdd");
var table_bdd = $(this).attr("table_bdd");
$(this).blur(function()
{
var contenu_apres = $(this).text();
if (contenu_avant != contenu_apres)
{
parametre='id_bdd='+id_bdd+'&champ_bdd='+champ_bdd+'&table_bdd='+table_bdd+'&contenu='+contenu_apres ;
$.ajax({
url: "../../test/enregistrement.php",
type: "POST",
data: parametre,
success: function(html) {
}
});
}
});
};
});
});
PHP (enregistrement.php)
$table_bdd = $_POST["table_bdd"];
$champ_bdd = $_POST["champ_bdd"];
$id_bdd = $_POST["id_bdd"];
$contenu = utf8_decode($_POST["contenu"]);
$modifs_ajax = $bdd->prepare("
UPDATE " . $table_bdd . "
SET " . $champ_bdd . " = :contenu
WHERE id = :id_bdd
");
$modifs_ajax->execute(array(
'contenu' => $contenu,
'id_bdd' => $id_bdd
));
Bonjour, j'utilise pour la première fois de l'Ajax pour éditer du contenu texte car le principe d'enregistrer en arrière plan me semble génial. Cependant, je rencontre 2 problèmes :
- Les retour à la lignes (touche "entrée") ne sont pas enregistrés dans ma BDD (ils sont pourtant bien enregistrés via un textarea sans passé par Ajax).
- Je ne sais pour qu'elle raison l'enregistrement dans ma BDD à l'air assez aléatoire, principalement sur Chrome, il doit certainement y avoir un problème dans mon code.
HTML
[html]<span contenteditable="true" table_bdd="nom_de_ma_table" champ_bdd="nom_du_champ" id_bdd="id" >Texte éditable</span>[/html]
JS
[PHP]
$(document).ready(function()
{
$("span").click(function()
{
if( $(this).attr("contenteditable") == "true")
{
var contenu_avant = $(this).text();
var id_bdd = $(this).attr("id_bdd");
var champ_bdd = $(this).attr("champ_bdd");
var table_bdd = $(this).attr("table_bdd");
$(this).blur(function()
{
var contenu_apres = $(this).text();
if (contenu_avant != contenu_apres)
{
parametre='id_bdd='+id_bdd+'&champ_bdd='+champ_bdd+'&table_bdd='+table_bdd+'&contenu='+contenu_apres ;
$.ajax({
url: "../../test/enregistrement.php",
type: "POST",
data: parametre,
success: function(html) {
}
});
}
});
};
});
});[/PHP]
PHP (enregistrement.php)
[PHP]
$table_bdd = $_POST["table_bdd"];
$champ_bdd = $_POST["champ_bdd"];
$id_bdd = $_POST["id_bdd"];
$contenu = utf8_decode($_POST["contenu"]);
$modifs_ajax = $bdd->prepare("
UPDATE " . $table_bdd . "
SET " . $champ_bdd . " = :contenu
WHERE id = :id_bdd
");
$modifs_ajax->execute(array(
'contenu' => $contenu,
'id_bdd' => $id_bdd
));[/PHP]