[RESOLU] passage de paramètre Ajax à PHP

Petit nouveau ! | 4 Messages

07 déc. 2021, 17:49

Bonjour,

Je suis débutant en PHP.
je souhaite passer des variables de ajax vers mon programme PHP.
Je n'arrive pas à accéder à mes variables dans mon code PHP.
J'ai un message "Undefined array key" sur les noms de mes variables.
Merci de votre aide.

Mon code AJAX

<script type="text/javascript" language="javascript">
$(document).ready(function() {
$('#enreg_button').click(function() {
var annee = $('#annee').val();
var nom = $('#nom').val();
var balance_id = $('#id').val();
$.ajax({
url: "insert_balance.php",
method: 'POST',
data: ({annee: annee}, {nom: nom}, {balance_id: balance_id}),
contentType: false,
processData: false,
success: function(data) {
console.log(data);
}
});

});
});
</script>

MON CODE PHP

<?php
include('database connection.php');
include('function.php');

echo $_POST['balance_id'];
echo $_POST['nom'];
echo $_POST['annee'];


$statement = $connection->prepare(
"UPDATE bal_client
SET annee = :annee, nom = :nom
WHERE id = :id"
);
$result = $statement->execute(
array(
':annee' => $_POST["annee"],
':nom' => $_POST["nom"],
':id' => $_POST["balance_id"]
)
);

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 déc. 2021, 18:18

Regarde dans la console de ton navigateur (Ctrl+Maj+i), onglet réseau ce qui est transmis à ton script PHP.

Tu peux aussi dans ton script PHP faire un var_dump($_POST) et voir le résultat ensuite en réponse dans la console réseau.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 4 Messages

07 déc. 2021, 20:25

var_dump($_POST) est vide : array(0) { } !!!
Pourtant, si je fais un alert(annee) , alert(nom) et alert(balance_id) dans code ajax, les données sont OK.
C'est clair que je passe mal les données mais je ne vois pas ou je me trompe.

Mammouth du PHP | 2703 Messages

07 déc. 2021, 20:49

contentType: false,
processData: false,

pourquoi avoir fait ces choix ?

Petit nouveau ! | 4 Messages

07 déc. 2021, 21:11

désespérément, je faisais des tests, j'ai oublié de supprimer ces deux lignes.
J'ai rectifié et le contenu de mon var_dump($POST) a évolué. il manque les parametres "annee" et "nom"
var_dump($POST) = array(1) {
["balance_id"]=>
string(1) "2"
}

j'ai les messages suivants pour les deux variables :

<b>Warning</b>: Undefined array key "nom" in <b>C:\xampp\htdocs\PROJET-BALANCE\insert_balance.php</b> on line <b>7</b><br />
<br />
<b>Warning</b>: Undefined array key "annee" in <b>C:\xampp\htdocs\PROJET-BALANCE\insert_balance.php</b> on line <b>8</b><br />
<br />
<b>Warning</b>: Undefined array key "annee" in <b>C:\xampp\htdocs\PROJET-BALANCE\insert_balance.php</b> on line <b>19</b><br />
<br />
<b>Warning</b>: Undefined array key "nom" in <b>C:\xampp\htdocs\PROJET-BALANCE\insert_balance.php</b> on line <b>20</b><br />


Merci de votre aide.

Mammouth du PHP | 2703 Messages

07 déc. 2021, 21:27

data: ({annee: annee}, {nom: nom}, {balance_id: balance_id}),
la syntaxe est différente sur le premier exemple de https://api.jquery.com/jquery.ajax/

Petit nouveau ! | 4 Messages

07 déc. 2021, 22:08

Merci beaucoup.
C'est effectivement un problème de syntaxe.
Il fallait juste mettre : $.ajax({
method: 'POST',
url: "insert_balance.php",
data: {annee: annee,nom: nom,balance_id: balance_id}
Merci encore.
Bonne soirée.