2017-09-21 4 views
0

Je suis en train de le rendre plus facile à modifier le titre et Description dans une galerie, et ce qu'il faut essayer de l'édition en ligne.base de données de mise à jour avec l'édition de texte en ligne

Je peux l'obtenir pour éditer sur l'écran et changer onblur, mais ne met pas à jour à ma base de données. Pouvez-vous regarder le code et voir ce qui me manque?

Je l'ai obtenu à partir d'un tutoriel et je ne suis pas sûr de la data:$('form').serialize(), dans la zone JS (quel est le format utilisé?). Toute aide serait appréciée. Merci!

HTML/PHP

<div onclick="editTitle(`ctitle`,this)" onblur="saveTitle(`ctitle`,this)" class="child black-txt p24-txt pb-25 w7 allcaps"><?php echo escape($g->title); ?></div> 

<div onclick="editDesc(`cdesc`,this)" onblur="saveDesc(`cdesc`,this)"class="child black-txt p24-txt pb-25 w3"><?php echo escape($g->description); ?></div> 

<div id="message"></div> 

JS

<script> 
function editTitle(ctitle,div){ 
    /*var div = document.class("ctitle");*/ 
    div.style.border = "1px solid #000000"; 
    div.style.padding ="20px"; 
    div.contentEditable = true; 

} 
function saveTitle(ctitle,div){ 
    div.style.border = "none"; 
    div.style.padding ="0px"; 
    div.contentEditable = false; 
    event.preventDefault(); 
    $.ajax({ 
    url:"update-gallery-text.php", 
    method:"post", 
    data:$('form').serialize(), 
    dataType:"text", 
    success:function(strMessage){ 
     $('#message').text(strMessage) 
    } 
    }) 
} 
</script> 


<script> 
function editDesc(cdesc,div){ 
    /*var div = document.class("ctitle");*/ 
    div.style.border = "1px solid #000000"; 
    div.style.padding ="20px"; 
    div.contentEditable = true; 

} 
function saveDesc(cdesc,div){ 
    div.style.border = "none"; 
    div.style.padding ="0px"; 
    div.contentEditable = false; 
    event.preventDefault(); 
    $.ajax({ 
    url:"update-gallery-text.php", 
    method:"post", 
    data:$('form').serialize(), 
    dataType:"text", 
    success:function(strMessage){ 
     $('#message').text(strMessage) 
    } 
    }) 
} 
</script> 

update-galerie-text.php

<?php 
include($_SERVER['DOCUMENT_ROOT'] . "/core/init.php"); 

$id   = $_POST['id']; 
$title  = $_POST['title']; 
$description = $_POST['description']; 


$updategallery = DB::getInstance()->update('gallery', $id, array(
    'title' => $title, 
    'description' => $description, 


)); 

if (mysql_query($updategallery)) { 
    echo "Updated Successfully...!!!"; 
} else { 
    echo mysql_error(); 
    } 

Répondre

1

vous manque un formulaire el EMENT dans votre code,

Remplacer ceci:

<div onclick="editTitle(`ctitle`,this)" onblur="saveTitle(`ctitle`,this)" class="child black-txt p24-txt pb-25 w7 allcaps"><?php echo escape($g->title); ?></div> 
<div onclick="editDesc(`cdesc`,this)" onblur="saveDesc(`cdesc`,this)"class="child black-txt p24-txt pb-25 w3"><?php echo escape($g->description); ?></div> 

Avec:

<input type="hidden" id="GalleryId" value="THE ID OF THE GALLERY" /> 
<div id="GalleryTitle" onclick="editTitle(`ctitle`,this)" onblur="saveTitle(`ctitle`,this)" class="child black-txt p24-txt pb-25 w7 allcaps"><?php echo escape($g->title); ?></div> 
<div id="GalleryDescription" onclick="editDesc(`cdesc`,this)" onblur="saveDesc(`cdesc`,this)"class="child black-txt p24-txt pb-25 w3"><?php echo escape($g->description); ?></div> 

Et ceci:

data:$('form').serialize(), 

Avec:

data: { 
    id: $("#GalleryId").val(), 
    title: $("#GalleryTitle").html(), 
    description: $("#GalleryDescription").html() 
    }, 
+0

Merci! Vous êtes un sauveur de vie. – echo

+0

J'étais curieux de savoir si vous pouviez m'aider à nouveau. Je n'arrive pas à modifier plusieurs Titres et Descriptions dans la galerie. Sur la page d'administration, j'ai "modifier toutes les images" et je veux que les utilisateurs sautent d'une image à l'autre et éditent le texte. Je ne peux le faire avec la première image dans la ligne de la base de données. – echo