Editer newsletter [Résolu]

- 13 juil. 2017 à 17:38 - Dernière réponse :  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);
}
Afficher la suite 

Votre réponse

10 réponses

Messages postés
23244
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2018
- 13 juil. 2017 à 22:42
0
Merci
Bonjour,

QUel est ton problème exactement ??
Commenter la réponse de jordane45
- 13 juil. 2017 à 23:15
0
Merci
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,
Commenter la réponse de Utilisateur anonyme
Messages postés
23244
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2018
- 14 juil. 2017 à 02:17
0
Merci
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
Commenter la réponse de jordane45
0
Merci
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,
Messages postés
23244
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2018
- 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 ??
Commenter la réponse de Utilisateur anonyme
0
Merci
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,
Commenter la réponse de Utilisateur anonyme
Messages postés
23244
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2018
- 15 juil. 2017 à 01:18
0
Merci
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);

Commenter la réponse de jordane45
0
Merci
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>
Messages postés
23244
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2018
- 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 !!!!
Commenter la réponse de Utilisateur anonyme
- 15 juil. 2017 à 02:08
0
Merci
Ok c'est noté.
Merci encore
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.