Affichage d'une requête Ajax dans un script PHP

Avatar du membre
Mammouth du PHP | 1564 Messages

04 nov. 2023, 18:30

Est pas* exécuté ;)

Eléphanteau du PHP | 36 Messages

07 nov. 2023, 13:34

or Cette ligne defini la variable etat du panier ce trouvant dans le fichier donc, sans celui-ci $etatdupanier is undifined

Avatar du membre
Mammouth du PHP | 1564 Messages

07 nov. 2023, 13:52

C'est pas possible de faire passer une variable PHP à JS, voir ma dernière solution avec "variable_nommee_differemment".

JS est côté client, PHP est côté serveur. Les deux langages sont différents, on peut communiquer du PHP à JS mais pas comme tu tente de le faire avec function($etatdupanier).

Eléphanteau du PHP | 36 Messages

07 nov. 2023, 16:46

Rooooh les gars merci beaucoup mais j'ai l'impression de tourner en rond.

Mon panier test toujours mis a jour en javascript et s'affiche correctement dans la console mais la variable en php n'est tjs pas mise à jour.

J'ai bien évidement pas compris vos explications hein . Si vous avez la patience de me re re expliquer ce qui vous semble juste pour mettre a jour ma variable me réexpliquer, m'envoyer un code fonctionnelle.

Le js :

Code : Tout sélectionner

save: function() { const cartJSON = JSON.stringify(this); $.ajax({ type: "POST", url: "./ajax-save-cart.php", data: { cart: cartJSON }, cache: false, }).done(function(ma_variable_nommee_differemment){ // Tous s'affiche console.log("ici les données de ajax-save-cart.php : " + ma_variable_nommee_differemment); }); displayCart(); },
le résultat de la console :

Code : Tout sélectionner

ici les données de ajax-save-cart.php : <pre>{"etatdupanier":"Le panier a \u00e9t\u00e9 enregistr\u00e9 avec succ\u00e8s.","products":{"products":[{"id":2,"title":"Compatibilit\u00e9","price":49}],"total":49}}</pre>
tout se que nous essayons s'affiche dans la console mais rien niveau php. La variable php reste fixée a 'le panier est vide'

le php :

if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["cart"]) && !empty($_POST["cart"])) {

  $cartData = $_POST["cart"];

  $etatdupanier = "Le panier a été enregistré avec succès.";

  $response = array(
      "etatdupanier" => $etatdupanier,
      "products" => json_decode($cartData, true),
  );

    dd(json_encode($response), 'ici mon response json');

} else {
  // Cette variable est figer elle n'est jamais mise à jour en fonction de la console qui quant à elle affiche le bon contenu.
    $etatdupanier = "Le panier est vide";

}

Mammouth du PHP | 2703 Messages

07 nov. 2023, 16:50

qu'est-ce qui est fait dans ajax-save-cart.php ? pour savoir si quelque chose est sauvé en php, ce qui permet ensuite d'accéder en php à ce qui a été sauvé pour le réafficher.

Avatar du membre
Mammouth du PHP | 1564 Messages

07 nov. 2023, 16:51

Si tu envoie en JSON, te faut décodr le JSON côté JS :
let donnes_recues = JSON.parse(ma_variable_nommee_differemment);
console.log(donnes_recues.etatdupanier);

Eléphanteau du PHP | 36 Messages

07 nov. 2023, 17:20

qu'est-ce qui est fait dans ajax-save-cart.php ? pour savoir si quelque chose est sauvé en php, ce qui permet ensuite d'accéder en php à ce qui a été sauvé pour le réafficher.
Or1 désolé ... Mais répondre à une question par une autre question ... Sa fait pas avancer surtout vu le temps qu'on y est j'appel à la pertinence dans tes reponse :D

Eléphanteau du PHP | 36 Messages

07 nov. 2023, 17:21

Si tu envoie en JSON, te faut décodr le JSON côté JS :
let donnes_recues = JSON.parse(ma_variable_nommee_differemment);
console.log(donnes_recues.etatdupanier);
Ok mais je met ou ce code ?

Eléphanteau du PHP | 36 Messages

07 nov. 2023, 17:46

C'est pas possible de faire passer une variable PHP à JS, voir ma dernière solution avec "variable_nommee_differemment".

JS est côté client, PHP est côté serveur. Les deux langages sont différents, on peut communiquer du PHP à JS mais pas comme tu tente de le faire avec function($etatdupanier).
Je souhaite ici envoyer mon panier JS en PHP Je crois que vous n'avez pas compris le pb

Avatar du membre
Mammouth du PHP | 1564 Messages

07 nov. 2023, 17:55

A toi de traiter en PHP ce que tu envoie via JS.

Eléphanteau du PHP | 36 Messages

07 nov. 2023, 18:15

Ok ... Ca repond meme plus au question en faite. Ni reprend mon code existant pour me proposer des solutions. Merci pour tout malgrès tout

Avatar du membre
Mammouth du PHP | 1564 Messages

07 nov. 2023, 18:45

Reprenons :
Je souhaite ici envoyer mon panier JS en PHP Je crois que vous n'avez pas compris le pb
1. Envoyer le panier via AJAX

//les données à envoyer :
const cartJSON = JSON.stringify(this); // à récupérer en PHP via $_POST['cart'], car "cart: cartJSON"
$.ajax({
type: "POST",
url: "ajax-save-cart.php",
data: { cart: cartJSON },
}).done(function(response) {
   console.log(response); // Affichera  $_POST['cart']
});
2. Récupérer ce qui est envoyé via AJAX, en PHP
//ajax-save-cart.php
echo $_POST['cart'];

Eléphanteau du PHP | 36 Messages

08 nov. 2023, 17:30

Voici le retour de la console dans ton code ci-dessus

Code : Tout sélectionner

<pre>{"products":[{"id":3,"title":"Prévisions","price":29},{"id":3,"title":"Prévisions","price":29},{"id":3,"title":"Prévisions","price":29}],"total":87}ici le $_POST["cart"]</pre><!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> ...
Voici l'affichage

Code : Tout sélectionner

Notice: Undefined index: cart in /Applications/MAMP/htdocs/Numerova/index.php on line 15 ici le $_POST["cart"]

Et au clique rien ne bouge

En faite nous sommes de retour dans notre 1ere conversation. Mon code initiale etait telquel, et mon echo PHP ne fonctionnait pas.

Avatar du membre
Mammouth du PHP | 1564 Messages

08 nov. 2023, 17:33

Fais simple, pour savoir si ça fonctionne en tenter de débuguer la chose :
$.ajax({
type: "POST",
url: "ajax-save-cart.php",
data: { cart: "bonjour" },
}).done(function(response) {
   console.log(response); // Affichera  $_POST['cart']
});
Fichier PHP ajax-save-cart.php :
<?= $_POST['cart'] ?>

Eléphanteau du PHP | 36 Messages

08 nov. 2023, 21:25

Toujours rien comme cela en affichage dans l-mon php.

J'ai tenté l'aproche cookie.

Ici mon JS

Code : Tout sélectionner

save: function() { // Convertissez le panier en chaîne JSON const cartJSON = JSON.stringify(this); document.cookie = "cart = " + cartJSON; console.log(cartJSON); displayCart(); },
SE présente ici le probleme de rafraichir la page pour afficher les cookies.

Il s'affiche correctement en php mais se sont des cookies stokés précédement, et non les cookies envoyé au moment du clique. Avez vous une idée pour mettre a jour les cookie et les afficher sans rafraichir la page.

Cette solution fonction en tout cas mais le probleme de mise en cache et de stockage des cookies intervient.