Code : Tout sélectionner
$.ajax({
type: "POST",
url: "./shop.php",
data: { cart: "bonjour" },
}).done(function(response) {
console.log(response); // Affichera $_POST['cart']
});
Code : Tout sélectionner
var_dump($_POST['cart']);
Notice: Undefined index: cart in /Applications/MAMP/htdocs/numerova-master/views/modal.phtml on line 264
NULL
$.ajax({
type: "POST",
url: "test2.php",
data: { cart: "bonjour" },
}).done(function(response) {
console.log(response); // Affichera $_POST['cart']
});
test2.php
<?php var_dump($_POST) ?>Code : Tout sélectionner
<?php
//var_dump($_COOKIE['cookieCart']);
var_dump($_POST['panier']);
?>
// Retour du code : idem que sur le modal
Notice: Undefined index: panier in /Applications/MAMP/htdocs/numerova-master/shop.php on line 4
NULL
Code : Tout sélectionner
// Save
save: function() {
// Convertissez le panier en chaîne JSON
const cartJSON = JSON.stringify(this);
// this.deleteBasketCookie();
// document.cookie = "cookieCart = " + cartJSON;
// console.log(cartJSON);
$.ajax({
type: "POST",
url: "./shop.php",
data: { panier: "bonjour" },
}).done(function(response) {
console.log(response); // Affichera $_POST['panier']
});
displayCart();
},
Je comprends mieux maintenant, c'est pas le JS qui pose souci, mais l'affichage direct de shop.php qui n'affiche pas $_POST['panier'], c'est tout à fait normal...Nous constatons qu'au clique, la fonction se déclenche, affiche la console 'bonjour' correctement mais que $_POST['panier'] est undifined et NULL à l'affichage.
<form action="./shop.php" method="get">
<label> ici le retour de ajax devrait s'afficher :</label>
<input name="panier" id="panier" type="text" />
Bonjour, et ... re<?php echo htmlspecialchars($_GET['panier']); ?>.
Bonjour, et ... re<?php echo htmlspecialchars($_POST['panier']); ?>.
Bonjour, et ... re<?php echo htmlspecialchars($_REQUEST['panier']); ?>.
</form>
<form action="./shop.php" method="post">
<label> ici le retour de ajax devrait s'afficher :</label>
<input name="panier" id="panier" type="text" />
Bonjour, et ... re<?php echo htmlspecialchars($_GET['panier']); ?>.
Bonjour, et ... re<?php echo htmlspecialchars($_POST['panier']); ?>.
Bonjour, et ... re<?php echo htmlspecialchars($_REQUEST['panier']); ?>.
</form>
Etape 2 _____________________________________________________Code : Tout sélectionner
string(6) "coucou" string(6) "coucou"
Notice: Undefined index: panier in /Applications/MAMP/htdocs/numerova-master/shop.php on line 6
NULL
Code : Tout sélectionner
$.ajax({
type: "POST",
url: "./shop.php",
data: { panier: "bonjour" },
}).done(function(response) {
console.log(response); // Affichera $_POST['cart']
});
Code : Tout sélectionner
Notice: Undefined index: panier in /Applications/MAMP/htdocs/numerova-master/shop.php on line 4
NULL
Notice: Undefined index: panier in /Applications/MAMP/htdocs/numerova-master/shop.php on line 5
NULL
Notice: Undefined index: panier in /Applications/MAMP/htdocs/numerova-master/shop.php on line 6
NULL
<?php
var_dump($_GET['panier']);
var_dump($_REQUEST['panier']);
var_dump($_POST['panier']);
?>
Pour conclure dans ce nouveau test avec le formulaire intégré au html, nous avons défini l'input 'panier' en tapant manuelement la donnée. Donc dans le meilleur des mondes il faudrait non pas l'écrire à la main mais choper le 'bonjour' que nous définissons dans le script JS.Je comprends mieux maintenant, c'est pas le JS qui pose souci, mais l'affichage direct de shop.php qui n'affiche pas $_POST['panier'], c'est tout à fait normal...
<form>
<textarea name="panier" id="panier" readonly style="min-height: 500px;"></textarea>
</form>
Code : Tout sélectionner
$("#panier").val(decodedResponse); Code : Tout sélectionner
save: function() {
// Convertissez le panier en chaîne JSON
const cartJSON = JSON.stringify(this);
console.log("Données du panier à envoyer :", cartJSON);
$.ajax({
type: "POST",
url: "./shop.php",
data: { panier: cartJSON },
}).done(function(response) {
// Utilisez jQuery pour créer un élément HTML temporaire
const tempElement = $('<div>');
// Décodez les entités HTML dans la réponse
const decodedResponse = tempElement.html(response).text();
console.log(decodedResponse); // Affichera $_POST['cart']
// Mise à jour de la valeur dans le formulaire ou tout autre élément
$("#panier").val(decodedResponse);
// N'oubliez pas de supprimer l'élément temporaire
tempElement.remove();
});
displayCart();
},
// Vérifier si la clé "panier" existe dans la requête POST
if (isset($_POST['panier'])) {
$panierValue = $_POST['panier'];
// Décode les entités HTML
$decodedPanier = html_entity_decode($panierValue);
// Afficher la valeur du panier
echo "La valeur de panier est : " . htmlspecialchars($decodedPanier);
} else {
// Si la clé "panier" n'est pas présente dans la requête POST
echo "Aucune donnée de panier reçue.";
}
Le echo php reste figé à "Aucune donnée de panier reçue."; j'ai passé 4h avec GPT aujourd'hui resourde ce petit truc , donc si vous avez une idée ? J'ai du mal à comprendre ce que tu dis car en fait nous essayons de faire cela depuis le debut. $etatdupanier : le panier est vide, et si ajax est declenché , $etatdupanier : le panier est enregistré.Tu ne peux pas dire d'echo une variable PHP une fois la page générée. le PHP se génère une seule fois à l'affichage de la page, une solution serait de rediiger ton utilisateur avec un get : var=ici le contenu de shop.php puis d'afficher dans la page "echo $_GET['var']".
C'est à dire ?une solution serait de rediiger ton utilisateur avec un get : var=ici le contenu de shop.php puis d'afficher dans la page "echo
$etatdupanier = 'lepanierestvide'
$etatdupanier = 'lepanierestenregistrer'
Donc maintenant si je te comprends bien c'est impossible apres 70 messages ... bizarre bizarre