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 :
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 / 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 JS :
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 <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 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 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'); }); }); })();
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 :
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 // 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);
{"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,
Partager