Bonjour à tous,
J'ai un problème de sauvegarde côté PHP d'une partie de mes éléments qui ont une variable commune. Je souhaiterais modifier un titre, une image, un lien et son titre et enregistrer la modification en bd dans ma table qui a la structure suivante :
Le code HTML est le suivant :
Le code JS :
J'ai une même variable texte pour le titre et le titre du lien : $text = isset($_POST['text']) ? $_POST['text'] : "";. Après sauvegarde la console m'affiche ceci :
{"status":true,"msg":"Saisie enregistrée avec success !","debug":{"requete":"UPDATE newsletter
SET titre = :text WHERE newsletter_id = :id","datas":{":text":"",":id":"11"}}}. Pourtant je récupère bien mon élément dans la popup mais il enregistre un champ vide. Et c'est idem pour le titre du lien. Merci pour votre aide.
Cordialement,
J'ai un problème de sauvegarde côté PHP d'une partie de mes éléments qui ont une variable commune. Je souhaiterais modifier un titre, une image, un lien et son titre et enregistrer la modification en bd dans ma table qui a la structure suivante :
// Structure de la table `newsletter`
CREATE TABLE IF NOT EXISTS `newsletter` (
`newsletter_id` int(11) NOT NULL AUTO_INCREMENT,
`url_lien` varchar(255) NOT NULL,
`titre_url_lien` varchar(255) NOT NULL,
`titre` varchar(255) NOT NULL,
`description` text NOT NULL,
`image` varchar(255) NOT NULL,
PRIMARY KEY (`newsletter_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
// Contenu de la table `newsletter`
INSERT INTO `newsletter` (`newsletter_id`, `url_lien`, `titre_url_lien`, `titre`, `description`, `image`) VALUES
(1, 'http://link-j-en-profite', 'J''en profite', 'Item 1', 'Incenderat autem audaces usque ad insaniam homines ad haec, quae nefariis egere conatibus, Luscus quidam curator urbis subito visus: eosque ut heiulans baiolorum praecentor ad expediendum quod orsi sunt incitans vocibus crebris. qui haut longe postea ideo vivus exustus est.', 'image_01.jpg'),
(2, 'http://link-contact', 'Contact', 'Item 2', 'Incenderat autem audaces usque ad insaniam homines ad haec, quae nefariis egere conatibus, Luscus quidam curator urbis subito visus: eosque ut heiulans baiolorum praecentor ad expediendum quod orsi sunt incitans vocibus crebris. qui haut longe postea ideo vivus exustus est.', 'image_02.jpg'),
(3, 'http://link-a-propos', 'A propos', 'Item 3', 'Incenderat autem audaces usque ad insaniam homines ad haec, quae nefariis egere conatibus, Luscus quidam curator urbis subito visus: eosque ut heiulans baiolorum praecentor ad expediendum quod orsi sunt incitans vocibus crebris. qui haut longe postea ideo vivus exustus est.', 'image_03.jpg');
Le code HTML est le suivant :
<div>
<h4 class="row-edit" data-type="title" data-id="<?=$row['newsletter_id']; ?>"><?=$row['titre'];?></h4>
<p class="row-edit" data-type="image" data-id="<?=$row['newsletter_id']; ?>"><img src="<?=$row['image'];?>"></p>
<p class="row-edit" data-type="text" data-id="<?=$row['newsletter_id']; ?>><?=$row['description'];?></p>
<div ><a href="<?=$row1['url_lien']; ?>" class="row-edit" data-type="link" data-id="<?=$row['newsletter_id']; ?>"><?= $row['titre_url_lien']; ?></a></div>
</div>
<!-- Modale -->
<div class="edit" id="edit-title">
<div class="edit-box" style="">
<div class="edit-box-title">Edit Link</div>
<div class="edit-box-content">
<div class="edit-box-content-text">Title</div>
<div class="edit-box-content-field"><input type="text" class="edit-box-content-field-input title"/></div>
<div class="edit-box-content-text">URL:<span>(full address including http://)</span></div>
<div class="edit-box-content-field"><input type="text" class="edit-box-content-field-input url"/></div>
</div>
<div class="edit-box-buttons">
<div class="edit-box-buttons-save">Save</div>
<div class="edit-box-buttons-cancel">Cancel</div>
</div>
</div>
</div>
<div class="edit" id="edit-link">
<div class="edit-box" style="">
<div class="edit-box-title">Edit Link</div>
<div class="edit-box-content">
<div class="edit-box-content-text">Title</div>
<div class="edit-box-content-field"><input type="text" class="edit-box-content-field-input title"/></div>
<div class="edit-box-content-text">URL:<span>(full address including http://)</span></div>
<div class="edit-box-content-field"><input type="text" class="edit-box-content-field-input url"/></div>
</div>
<div class="edit-box-buttons">
<div class="edit-box-buttons-save">Save</div>
<div class="edit-box-buttons-cancel">Cancel</div>
</div>
</div>
</div>
<!-- Fin Modale -->
Le code JS :
console.clear();
(function hover_edit(){
var big_parent;
$(".row-edit").hover(
function() {
$(this).append('<span class="row-edit-hover"><i class="fa fa-pencil" style="line-height:30px;"></i></span>');
},
function() {
$(this).children(".row-edit-hover").remove();
}
)
$("a").click(function(e) {e.preventDefault()});
$("body").on('click', ".row-edit-hover i", function(e) {
e.preventDefault();
big_parent = $(this).parent().parent();
//edit title
if(big_parent.attr("data-type")=='title'){
$("#edit-title .title").val(big_parent.text());
$("#edit-title").fadeIn(500);
$("#edit-title .edit-box").slideDown(500);
}
//edit link
if(big_parent.attr("type")=='link'){
$("#edit-link .title").val(big_parent.text());
$("#edit-link .url").val(big_parent.attr("href"));
$("#edit-link").fadeIn(500);
$("#edit-link .edit-box").slideDown(500);
}
$(".edit-box-buttons-save").click(function() {
var toSave = {};
$(this).parents('.edit').fadeOut(500).children().slideUp(500);
[#red]big_parent.text($("#edit-title .title").val());[/#]
big_parent.text($("#edit-text .text").val());
big_parent.attr("href",$("#edit-link .url").val());
big_parent.attr("src",$("#edit-image .image").val());
toSave = {
'id' : big_parent.data('id'),
'url' : big_parent.attr('href'),
'img' : big_parent.attr('src'),
[#darkred] 'text' : big_parent.text()[/#]
}
console.info(toSave);
$.post("page-update.php", toSave, function(response) {
if(response.status) {
$("#msg").removeClass('danger');
$("#msg").addClass('success').html(response.msg);
} else {
$("#msg").removeClass('success');
$("#msg").addClass('danger').html(response.msg);
}
}, 'json');
});
});
})();
// page-update.php
function update_newsletter($url,$img,$text,$id){
$sql = "UPDATE newsletter SET url_lien = :url, titre_url_lien = :text, titre = :text, description = :text, image = :img WHERE newsletter_id = :id";
$datas = array(":url"=>$url, ":img"=>$img, ":text"=>$text, ":id"=>$id);
return queryExec($sql,$datas);
}
function queryExec($sql,$datas){
global $db;
try {
$req = $db->prepare($sql);
$res = $req->execute($datas);
$result = array(
'status'=> $res,
'msg'=>'Saisie enregistrée avec success !',
'debug'=>array("requete"=>$sql, "datas"=>$datas)
);
} catch (Exception $e) {
//erreur dans la requete
$result = array(
'status'=>false,
'msg'=>'Erreur ! '.$e->getMessage(),
'debug'=>array("requete"=>$sql, "datas"=>$datas)
);
}
return $result;
}
if($id){
$msg = update_newsletter($url,$img,$text,$id);
} else {
//pas d'ID
$msg = array( 'status'=>false,
'msg'=>"Erreur ! ID de ligne vide !",
'debug'=>$_POST
);
}
// send data as json format
echo json_encode($msg);
J'ai une même variable texte pour le titre et le titre du lien : $text = isset($_POST['text']) ? $_POST['text'] : "";. Après sauvegarde la console m'affiche ceci :
{"status":true,"msg":"Saisie enregistrée avec success !","debug":{"requete":"UPDATE newsletter
SET titre = :text WHERE newsletter_id = :id","datas":{":text":"",":id":"11"}}}. Pourtant je récupère bien mon élément dans la popup mais il enregistre un champ vide. Et c'est idem pour le titre du lien. Merci pour votre aide.
Cordialement,