Editer newsletter

Résolu
Utilisateur anonyme - Modifié le 13 juil. 2017 à 17:41
 Utilisateur anonyme - 15 juil. 2017 à 02:08
Bonjour,

Je travaille sur une création de newsletter avec la possibilité d'ajouter de nouveaux modules et de les modifier directement en ligne. Dans cet exemple, j'ai pris le cas de mes liens que je veux modifier en affichant une modale avec un champ pour entrer l'URL du lien et un champ pour le titre du lien. Mais cet exemple est valable pour l'édition d'autres contenus comme: image, texte, etc.

Chaque newsletter possède un identifiant que j'attache à son contenu. Je veux faire de mise à jour (update sql). Le problème, c'est que j'ajouterai d'autres modules à la newsletter pour la personnaliser. Ces nouveaux modules seront également modifiables.

Mon est au niveau de l'enregistrement de mes datas. Merci de votre aide. Mon code ci-dessous:


<div>
<h4>Item 1</h4>
<p>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.</p>
<div ><a href="http://link-j-en-profite" rel="nofollow noopener noreferrer" target="_blank" class="row-edit" data-type="link" data-id="1">J en profite</a></div>
</div>
<div>
<h4>Item 2</h4>
<p>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.</p>
<div ><a href="http://link-contact" rel="nofollow noopener noreferrer" target="_blank" class="row-edit" data-type="link" data-id="2">Contact</a></div>
</div>
<div>
<h4>Item 3</h4>
<p>Splendida porro oculi fugitant vitantque tueri. sol etiam caecat, contra si tendere pergas,propterea quia vis magnast.</p>
<div ><a href="http://link-a-propos" rel="nofollow noopener noreferrer" target="_blank" class="row-edit" data-type="link" data-id="3">A propos</a></div>
</div>
<!-- Modale -->
<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>


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).parents('.row-edit');
//edit link
if(big_parent.data("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-link .edit-box-buttons-save").click(function() {
var toSave = {};
$(this).parents('.edit').fadeOut(500)
.children().slideUp(500);
big_parent.text($("#edit-link .title").val());
big_parent.attr("href",$("#edit-link .url").val());
toSave = {
'id' : big_parent.data('id'),
'url' : big_parent.attr('href'),
'text' : big_parent.text()
}
console.info(toSave);
$.post("page-update_base.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');
});
$("#edit-link .edit-box-buttons-cancel").click(function() {
$(this).parents('.edit').fadeOut(500)
.children().slideUp(500);
});
})();


// page-update_base.php
// include connection file
include_once("db.php");
//récupération "propre" des variable)
$id= isset($_POST['id']) ? $_POST['id'] : "";
$url= isset($_POST['url']) ? $_POST['url'] : "";
$text= isset($_POST['text']) ? $_POST['text'] : "";

if($id == 1){
//préparation de la requete et des variables
$sql = "UPDATE tbl_newsletter SET url_1 = :url, titre_url_1 = :text WHERE newsletter_id = :id";
$datas = array(":url"=>$url, ":text"=>$text, ":id"=>$id);
//exécution de la requete
try {
$req = $db->prepare($sql);
$req->execute($datas);
$msg = array(
'status'=>true,
'msg'=>'Saisie enregistrée avec success !',
'debug'=>""
);
} catch (Exception $e) {
//erreur dans la requete
$msg = array(
'status'=>false,
'msg'=>'Erreur ! '.$e->getMessage(),
'debug'=>array("requete"=>$sql, "datas"=>$datas)
);
}
} else if ($id == 2) {
//préparation de la requete et des variables
$sql = "UPDATE tbl_newsletter SET url_2 = :url, titre_url_2 = :text WHERE newsletter_id = :id";
$datas = array(":url"=>$url, ":text"=>$text, ":id"=>$id);
//exécution de la requete
try {
$req = $db->prepare($sql);
$req->execute($datas);
$msg = array(
'status'=>true,
'msg'=>'Saisie enregistrée avec success !',
'debug'=>""
);
} catch (Exception $e) {
//erreur dans la requete
$msg = array(
'status'=>false,
'msg'=>'Erreur ! '.$e->getMessage(),
'debug'=>array("requete"=>$sql, "datas"=>$datas)
);
}
} else if ($id == 3) {
//préparation de la requete et des variables
$sql = "UPDATE tbl_newsletter SET url_3 = :url, titre_url_3 = :text WHERE newsletter_id = :id";
$datas = array(":url"=>$url, ":text"=>$text, ":id"=>$id);
//exécution de la requete
try {
$req = $db->prepare($sql);
$req->execute($datas);
$msg = array(
'status'=>true,
'msg'=>'Saisie enregistrée avec success !',
'debug'=>""
);
} catch (Exception $e) {
//erreur dans la requete
$msg = array(
'status'=>false,
'msg'=>'Erreur ! '.$e->getMessage(),
'debug'=>array("requete"=>$sql, "datas"=>$datas)
);
}
} 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);
}

8 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
13 juil. 2017 à 22:42
Bonjour,

QUel est ton problème exactement ??
0
Utilisateur anonyme
13 juil. 2017 à 23:15
Bonjour,

Le problème est que je n'arrive pas à enregistrer mes informations en base de données. J'ai le message d'alerte mentionnant que l'enregistré est réalisé avec succès mais je ne trouve rien dans ma table.

Il faut que chaque contenu s'enregistre dans le champ correspondant.

Cordialement,
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
14 juil. 2017 à 02:17
Essaye ça :
<?php
// page-update_base.php
// include connection file
require_once "db.php";
//récupération "propre" des variable)
$id = !empty($_POST['id']) ? $_POST['id'] : NULL;
$url = isset($_POST['url']) ? $_POST['url'] : "";
$text = isset($_POST['text']) ? $_POST['text'] : "";

function update_newsletter($url,$titre,$id){
  $sql = "UPDATE tbl_newsletter SET url_$id = :url, titre_url_$id = :text WHERE newsletter_id = :id";
  $datas = array(":url"=>$url, ":text"=>$text, ":id"=>$id);
  return queryExec($sql,$datas);
}

function queryExec($sql,$a_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 == 1 || $id==2 || $id==3){
   $msg = update_newsletter($url,$titre,$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);


Et dis nous ce que ça retourne dans la CONSOLE
0
Re,

Le souci est que je ne peux pas faire 600 if si j'ai 600 liens !
Mon architecture de table est de ce style :

? ID ? URL ? TITRE ?

? 1 ? http://link-j-en-profite ? J'en profite ?

? 2 ? http://link-contact ? Contact ?

? 3 ? http://link-a-propos ? A propos ?

Je voudrais rajouter un ID dynamiquement et de mettre à jour mes liens par rapport à leur ID. Merci

Cordialement,
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
15 juil. 2017 à 00:35
Ben tu vires mon if...

Mais... j'ai peur que ta structure de table ne soit pas la bonne... quel est ton mcd ??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mon mcd est le suivant :

http://static.ccm2.net/codes-sources.commentcamarche.net/pictures/EyHFUKeFs8GJe24va5AQp56NQtsAtG6e8JCJ2aKN2GisCHMwqnBOfjzzxoeudUXk-mcd.png

Si je supprime le if, qu'adviendra-t-il de cette partie de code ?:

if($id == 1 || $id==2 || $id==3){
$msg = update_newsletter($url,$titre,$id)
} else {
//pas d'ID
$msg = array( 'status'=>false,
'msg'=>"Erreur ! ID de ligne vide !",
'debug'=>$_POST
);
}


Comment puis-je récupérer mes liens dans la newsletter ? La structure des mes blocs n'est pas la même donc je ne peux pas faire de boucle. Faut-il faire une requête sql pour chaque lien ?

Merci

Cordialement,
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
15 juil. 2017 à 01:18
Si ton MCD est bien celui que tu me montres... alors tu n'as qu'à faire ça :
<?php
// page-update_base.php
// include connection file
require_once "db.php";

function update_newsletter($url,$text,$id){
  $sql = "UPDATE tbl_newsletter SET url_lien = :url, titre_url_lien = :text WHERE newsletter_id = :id";
  $datas = array(":url"=>$url, ":text"=>$text, ":id"=>$id);
  return queryExec($sql,$datas);
}

function queryExec($sql,$a_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;
}


//récupération "propre" des variable)
$id = !empty($_POST['id']) ? $_POST['id'] : NULL;
$url = isset($_POST['url']) ? $_POST['url'] : "";
$text = isset($_POST['text']) ? $_POST['text'] : "";


if($id){
   $msg = update_newsletter($url,$titre,$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);

0
L'enregistrement marche très bien maintenant. Merci beaucoup.

Pour ce qui est du côté html (newsletter), comment dois-je récupérer mes infos dynamiquement de la façon suivante : ?


// include connection file
require_once "db.php";

$sql = 'SELECT * FROM tbl_newsletter WHERE newsletter_id = 1 OR newsletter = 2 OR newsletter_id = 3';
$req = $db->prepare($sql);
$req->execute();
$row = $req->fetch();


<div>
<h4>Item 1</h4>
<p>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.</p>
<div ><a href="<?php echo $row['url_lien']; ?>" class="row-edit" data-type="link" data-id="<?php echo $row['newsletter_id']; ?>"><?php echo $row['titre_url_lien']; ?></a></div>
</div>
<div>
<h4>Item 2</h4>
<p>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.</p>
<div ><a href="<?php echo $row['url_lien']; ?>" class="row-edit" data-type="link" data-id="<?php echo $row['newsletter_id']; ?>"><?php echo $row['titre_url_lien']; ?></a></div>
</div>
<div>
<h4>Item 3</h4>
<p>Splendida porro oculi fugitant vitantque tueri. sol etiam caecat, contra si tendere pergas,propterea quia vis magnast.</p>
<div ><a href="<?php echo $row['url_lien']; ?>" class="row-edit" data-type="link" data-id="<?php echo $row['newsletter_id']; ?>"><?php echo $row['titre_url_lien']; ?></a></div>
</div>
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
15 juil. 2017 à 01:57
Ceci est une nouvelle question... et comme le veut la tradition sur ce forum .. tu dois ouvrir une nouvelle discussion !

N'oublie pas de mettre celle-ci en RESOLU.

N'oublie pas non plus d'appliquer la gestion des erreurs PDO dans tes requêtes..... dans le code que tu nous montres... tu n'as, une fois de plus..., toujours pas placé ton code de requête dans des blocs try/catch !!!

Pour finir... dans ta prochaine discussion... soit plus précis. Là .. je ne comprend pas ta question...... tu n'est pas assez explicite sur ce que tu souhaites faire !!!!
0
Utilisateur anonyme
15 juil. 2017 à 02:08
Ok c'est noté.
Merci encore
0
Rejoignez-nous