Bonjour à tous,
Voici mon problème : J'ai une fonction JS qui me permet d'enregistrer différents éléments de ma page avec ensuite un appel AJAX qui m'envoi vers un controller php. Donc dans ma fonction js quand je fais un console.log des données que je veux envoyer à mon php ce sont les bonnes données (console.log juste avant l'appel ajax). Ensuite je les envoie dans mon appel ajax via "data:" en POST et pour les récupérer dans mon php je fais un
Du coup je dois bien récupérer quelque chose parce que je n'ai pas d'erreur du style undefinedindex ....
Le vrai problème est que du coup il va m'enregistrer des données "nulles" en base (ex: 0 pour un numero, chaine vide pour une string...)
Je fais appel à vous pour que vous m'aidiez à comprendre ce qui ne marche pas et si possible m'aider à résoudre ce problème...
Je vous met mon code ci-dessous :
Mon controller PHP qui fait les traitements et qui doit enregistrer mes données en base...
Je précise que mon problème se trouve en fait au niveau du $magazine et des lignes qui suivent...
Ma fonction JS/Ajax:
Voila en espérant que vous pourrez m'aider...
Merci d'avance
Voici mon problème : J'ai une fonction JS qui me permet d'enregistrer différents éléments de ma page avec ensuite un appel AJAX qui m'envoi vers un controller php. Donc dans ma fonction js quand je fais un console.log des données que je veux envoyer à mon php ce sont les bonnes données (console.log juste avant l'appel ajax). Ensuite je les envoie dans mon appel ajax via "data:" en POST et pour les récupérer dans mon php je fais un
isset($_POST['numero_mag'])
Du coup je dois bien récupérer quelque chose parce que je n'ai pas d'erreur du style undefinedindex ....
Le vrai problème est que du coup il va m'enregistrer des données "nulles" en base (ex: 0 pour un numero, chaine vide pour une string...)
Je fais appel à vous pour que vous m'aidiez à comprendre ce qui ne marche pas et si possible m'aider à résoudre ce problème...
Je vous met mon code ci-dessous :
Mon controller PHP qui fait les traitements et qui doit enregistrer mes données en base...
/**
* @Route("/enregistrerPage",name="enregistrerPage",options={"expose"=true})
*/
public function enregistrerPageAction(Request $request)
{
$user = $this->getUser();
if ($request->isXmlHttpRequest()) {
$repository = $this
->getDoctrine()
->getManager()
->getRepository('CompteBundle:element_page');
$em = $this->getDoctrine()->getManager();
//$em2 = $this->getDoctrine()->getManager();
$data = $request->request->All();
$nbr_element = count($data);
for ($i=0; $i < $nbr_element; $i++) {
$element = $em->getRepository('CompteBundle:element_page')->find($data['tableau_'.$i]['id_element']);
$element-> setElementCol($data['tableau_'.$i]['col']);
$element-> setElementOrdre($data['tableau_'.$i]['ordre']);
$element-> setElementContenu(trim($data['tableau_'.$i]['contenu']));
$em->persist($element);
$em->flush();
}
// gestion des inputs
//$magazine = $em->getRepository('CompteBundle:Magazines')->findOneBy(['magazineNumero' => $request->query->get('id_mag')]); //array('magazineUser' => $user->getId(),
$magazine = $em->getRepository('CompteBundle:Magazines')->find(244);
$magazine->setmagazineNumero(isset($_POST['numero_mag']));
$magazine->setmagazinePeriode(isset($_POST['periode_mag']));
$magazine->setmagazineIntitule(isset($_POST['intitule_mag']));
$em->persist($magazine);
$em->flush();
return new Response('ok');
}else{
throw new Exception("Erreur");
}
}
Je précise que mon problème se trouve en fait au niveau du $magazine et des lignes qui suivent...
Ma fonction JS/Ajax:
function enregistrerPage(tableaudebord){ // gérer l'enregistrement des inputs ici
$('#loading').show();
$('.element_pdf').children('div').attr('contenteditable', 'true');
$('.img_block').attr('contenteditable', 'false');
$('.element_pdf').children('.block_choix_new_article').attr('contenteditable', 'false');
$('.element_pdf').children('.block_choix_new_article').attr('contenteditable', 'false');
$('.btn_suppr_element').remove();
//$('.input_pdf').attr('contenteditable', 'true'); // pour les inputs
var tableau_result = {};
var i = 0;
var tableau_input_periode = {}; //tableaux de mes inputs
var j = 0;
//, tableau_input_numero, tableau_input_intitule, tableau_input_nom_page
$('.element_pdf').each(function(){
var id_element = $(this).data('idelement');
var ordre = $(this).data('ordre');
var contenue = $(this).html();
var col = $(this).data('col');
tableau_result['tableau_'+i]={"id_element" : $(this).data('idelement'), "ordre" : $(this).data('ordre'), "contenu" : $(this).html(),"col":$(this).data('col')};
i++;
});
var intitule_mag = document.getElementById('intitule_mag').value;
console.log(intitule_mag);
var periode_mag = document.getElementById('periode_mag').value;
console.log(periode_mag);
var numero_mag = document.getElementById('numero_mag').value;
console.log(numero_mag);
//var nom_page = document.getElementById('nom_page').value;
//console.log(nom_page);
$.ajax({
type: 'POST',
async: false,
url: Routing.generate('enregistrerPage'),
data: tableau_result, intitule_mag : intitule_mag, periode_mag : periode_mag, numero_mag : numero_mag, //tableau_result, intitule_mag, periode_mag, numero_mag, //à enlever ,
success: function(){
$("#sauvegarde_success").show();
$('#sauvegarde_success').delay(2500).fadeOut('blind');
if (tableaudebord!=1) {
location.reload();
}
}
});
Voila en espérant que vous pourrez m'aider...
Merci d'avance