Hello,
De ce que j'ai crus comprendre, tu souhaite que ton JavaScript communique avec ton PHP via une requête Ajax.
Ce qu'il est important de comprendre ici c'est que les variables que tu envoye dans le body de ta requête Ajax sont stockées dans une variable magique en PHP qui est $_POST. Si elles sont bien envoyés tu peux très facilement les récupérées et les traitées en PHP.
Pour que tu comprennent mieux j'ai modifié les examples de code de ton sujet pour utiliser le $_POST.
fetch(
'/ITESCIA/Application_Enfant/Quiiz.php',
method: 'POST',
body: JSON.stringify{
"userscore": userScore,
"insertion": true // Si tu ne souhaite pas faire d'insertion, met la variable à `false`
}
)
.then(function (response) {
// La requête c'est executée avec succès et tu peux en informer ton utilisateur
let data = response.json();
console.log(data);
})
.catch(function (error) {
// Il y a eu une erreur, et là encore tu peux en informer ton utilisateur
console.error(error)
})
N'ayant pas le script complet sous les yeux c'est compliqué de voir exactement ce que tu souhaite mettre dans le body de ta requête, donc j'ai fais au mieux pour que le script fonctionne tel quel.
Ensuite du côté PHP, tu peux simplifier ton code et le rendre plus clair.
<?php
session_start();
$bdd = new PDO('mysql:host=127.0.0.1; dbname=membre', 'root', '');
$numero = intval($_SESSION['id']);
$pseudo = $_SESSION['identifiant'];
// Plus besoin ici d'utiliser php://input, les données du formulaire sont dans $_POST
if (isset($_POST['insertion'])) {
$query = "INSERT INTO resultat (`Id_Utilisateur`, `Nom_Utilisateur`, `score`) VALUES (:numero, :pseudo, :score)";
$values = [
':numero' => $numero,
':pseudo' => $pseudo,
':score' => $_POST['userscore'] // Voilà où est le score. Attention a bien vérifié que le type correspond avec ce que tu veux mettre dans ta base de donnée
];
try {
$request = $bdd->prepare($sql);
$request->execute($values);
// C'est ici que tu retourne un message de succès pour que ton JavaScript puisse executer le `.then(...)`
return [
'title' => "Succès",
'message' => "Score sauvegardé avec succès"
];
} catch (\Exception $e) {
// Et là une message d'erreur, pour executer le `.catch(...)`
return [
'title' => "Erreur",
'message' => "Une erreur est survenue lors de la sauvegarde du score"
];
}
}
Je suis loin d'être un expert avec PDO donc il est possible que la requête ne soit pas valide, si c'est le cas tu peux remplacer la partie $query et $values par ce que tu avais. Le seul truc est qu'il faut conserver la variable $_POST['userscore'] car c'est elle qui contient le score envoyé par ton JS.