Ajax avec un grand A. - Problème : transfère de données

Fermé
arion320 Messages postés 233 Date d'inscription lundi 20 décembre 2010 Statut Membre Dernière intervention 4 février 2022 - Modifié le 4 nov. 2018 à 18:46
arion320 Messages postés 233 Date d'inscription lundi 20 décembre 2010 Statut Membre Dernière intervention 4 février 2022 - 4 nov. 2018 à 19:53
Bonjour Bonjour,

Je me casse la tête sur un code depuis quelques jours déjà. Je cherche à transmettre des données vers ma bdd par un fichier externe. Je m'explique, je vous montre :

bdd.php
<?php if(!isset($_SESSION)) { session_start(); }

$bdd = New PDO("mysql:host=***MON HOST***;dbname=***NOM BDD***", '*USERNAME*', '*PASSWORD*');

/* Sécurisation du $_SESSION['id']; */
$sessionid = intval($_SESSION['id']);

/* Sécurisation du $_GET['id']; pour les pages ayant un identifiant */
$getid = intval($_GET['id']);

 ?>

<head>
  <link rel="icon" href="favicon.ico" />
 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 <script type="text/javascript" src="/elements/global/js/prefixfree.min.js"></script>
</head>


page1.php
        $('#confirming').click(function(){
         $.post('page2.php', {id:<?php echo $r['id']; ?>,prsentval:1});         
        });
        $('#reffusing').click(function(){ 
         $.post('page2.php', {id:<?php echo $r['id']; ?>,prsentval:2});  
        });



page2.php
<?php require_once('bdd.php');
if (isset($sessionid) AND !empty($sessionid)) {

 $iduser = intval($_GET['id']);
 $prsentval = intval($_GET['prsentval']);

 if (!empty($iduser) AND !empty($prsentval)) {
  $updatevalue = $bdd->prepare("UPDATE personnes SET prsent=" . $prsentval . " WHERE id=" . $iduser);
  $updatevalue->execute();
 }
} else {
header('Location: page0.php');
}
?>


Alors voilà :

• Le click fonctionne parfaitement, j'ai réussit à faire fonctionner une alerte.

• Que je le mettre sous form de $.get - $.post - $.ajax

• J'ai fait fonctionner mon php sans bavure sans passer par un code JS. (www.monsite.com/page2.php?id=91&prsentval=1) -> Requête bien traitée.

Si vous avez des idées, des question, des réactions, n'hésitez pas ! Vous avez 2 heures.
Merci d'avance,



A voir également:

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 nov. 2018 à 19:01
Bonjour,

Vu que tu veux faire de l'ajax, commence par retirer la redirection qui se trouve dans ton fichier page2.php

Ensuite, essaye avec ce code :
$('#confirming').click(function(){
   var id = '<?php echo $r['id'];?>';
   ajaxPage2(id,1)         
});
$('#reffusing').click(function(){ 
  var id = '<?php echo $r['id'];?>';
  ajaxPage2(id,2);  
});

function ajaxPage2(id,prsentval){
	var datas = {id:id,prsentval:prsentval}
	$.ajax({ 
			type: "POST",
			url: 'page2.php',
			data: data,
			async: true,
			dataType: "json"
	  })
	  .done(function(reponse){
		 console.log('Ajax Success !',response);
	  })
	  .fail(function(jqXHR, textStatus){
		console.log('Erreur', textStatus);
	 });
 }


Et côté page2.php
<?php 
require_once('bdd.php');

$result = array();

if (!empty($sessionid)) {
 $iduser = !empty($_POST['id']) ? $_POST['id'] : NULL;
 $prsentval = !empty($_POST['prsentval']) ? $_POST['prsentval'] : NULL;

 if (!empty($iduser) && !empty($prsentval)) {
   $sql = "UPDATE personnes SET prsent = :prsentval
          WHERE id = :id ";	  
    $datas = array(":id"=>$iduser , ':prsentval'=>$prsentval);
   try{
	  $prep = $bdd->prepare($sql);
	  $result['SUCCESS'] = $prep->execute($datas);
	}catch(Exception $e){
	  $result['ERROR'] = 'Erreur dans la requete : '.$e->getMessage();
	}
 }else{
	$result['ERROR']= 'iduser ou prsentval sont null !';
 }
} else {
	$result['ERROR'] = 'sessionid n`existe pas !';
}

//on revoi le resultat au js au format json
echo json_encode($result);

?>


Bien entendu.. pour voir si tout fonctionne et si il n'y a pas d'erreur.. il faut que tu ouvres la CONSOLE de ton navigateur avant de lancer l'ajax. de préférence via firefox ...
Mais si tu utilises Chrome, pense à installer le plugin Ajax Debuger

Je t'invite également à lire et à appliquer les conseils donnés dans ces deux liens :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
et surtout :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs


0
arion320 Messages postés 233 Date d'inscription lundi 20 décembre 2010 Statut Membre Dernière intervention 4 février 2022 22
4 nov. 2018 à 19:53
Franchement merci beaucoup Jordane pour ta réponse. Je vais essayer tout ça, je reprends bientôt l'école là où justement je vais faire du JS don't Ajax.

J'ai tenter de comprendre tout cela mais c'est vrais que c'est assez compliquer.

Surtout cette histoire de console Ajax ça va me rendre fou. haha


J'aurais une question en attendant que je mette ça en place pour vraiment mieux comprendre la logique.

• Pourquoi retirer la redirection de la page 2 ? Je vérifie si l'utilisateur est bien connecté sinon redirection vers une page Login.

Merci d'avance l'ami !

0