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

Avatar du membre
Mammouth du PHP | 1564 Messages

08 nov. 2023, 21:28

Si ça fonctionne pas, dis nous comment tu procède car ça doit fonctionner.

Eléphanteau du PHP | 36 Messages

09 nov. 2023, 02:55

1 = ajax requete : j'ai bien ce code ici qui s'exectute en JS

Code : Tout sélectionner

$.ajax({ type: "POST", url: "./shop.php", data: { cart: "bonjour" }, }).done(function(response) { console.log(response); // Affichera $_POST['cart'] });
2 = L'affichage reste undifined malgré que la console affiche correctement le 'bonjour'.

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
Nous avons toujours le meme problème.

Avatar du membre
Mammouth du PHP | 1564 Messages

09 nov. 2023, 08:11

J'ai demandé de faire simple afin de savoir si ça fonctionne, là je vois que tu es sur la page modal.phtml...

Sur une page, met ton code JS, puis sur une page vide test2.php (par exemple), met var_dump($_POST).

test1.php
$.ajax({
type: "POST",
url: "test2.php",
data: { cart: "bonjour" },
}).done(function(response) {
console.log(response); // Affichera $_POST['cart']
});
test2.php
<?php var_dump($_POST) ?>

Eléphanteau du PHP | 36 Messages

09 nov. 2023, 11:43

ici une page shop.php créer ..

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
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.


Ici le rappel de ma fonction save qui se declenche au clique. Cela fonctionne correctement avec les cookies (en commentaire). A l'affichage dans le shop.php ou dans le modal (Je dis cela pour vous expliquer que la fonction save fait sont boulot correctement pour les cookies mais dès que nous sommes sur ajax sa marche pas. J'ai changé le nom du post aussi pour des histoires d' incompatibilité de variable au cas ou mais rien ne change)

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(); },

Avatar du membre
Mammouth du PHP | 1564 Messages

09 nov. 2023, 11:50

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.
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...

https://www.php.net/manual/fr/tutorial.forms.php
https://www.php.net/manual/fr/language. ... ternal.php

Eléphanteau du PHP | 36 Messages

09 nov. 2023, 16:50

J'aime lire ton message il me donne espoir après cette semaine de traversée du desert.
Comment dois-je procéder as ton sens ? J'ai essayé ceci mais bon j'ai pas eu d'éclaire de génie me permettant d'afficher les données ajax :

Etape 1 _____________________________________________________

Ici dans mon index.phtml un simple formulaire est ajouter en bas de page, en POST et en GET pour tester :
<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 _____________________________________________________

// Dans ce teste constate que lorsque que je remplis l'input avec du texte ('exemple = coucou'), je tape sur entrer et je suis redirigé sur la page shop.php qui intégrer dans l'url le $post['panier'] = coucou

http://localhost:8888/numerova-master/s ... ier=coucou

Et ensuite le contenu de la page shop.php contient ceci :

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
Rappel du script ajax :

Code : Tout sélectionner

$.ajax({ type: "POST", url: "./shop.php", data: { panier: "bonjour" }, }).done(function(response) { console.log(response); // Affichera $_POST['cart'] });

Ici je rappelle que au clic du bouton suivant la console affiche 'bonjour' et l'affichage est tjs undified et NULL :
G tenter les 3 var_dump en $POST $GET et $REQUEST du shop.php

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
Ici Mon shop.php ou rien n'a été ajouté de plus
<?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.

Eléphanteau du PHP | 36 Messages

10 nov. 2023, 10:02

Maitre Yoda .... Enseignez moi :mrgreen:
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...

Eléphanteau du PHP | 36 Messages

10 nov. 2023, 18:15

Bon il y a eu une avancée donc merci , je suis pas loin de toucher au but :

ici le html qui fonctionne correctement pour l'affichage du panier :
			
<form>
<textarea name="panier" id="panier" readonly style="min-height: 500px;"></textarea>
</form>	


Le html est exécuté grace donc à cette magnifique requête ajax ou j'ai ajouté 1 seule pu.... de ligne hihihihi (Je suis content) :

Code : Tout sélectionner

$("#panier").val(decodedResponse);
ici la fonction complete que j'ai modifier pour une meilleur lecture

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(); },
J'usqu'ici tout va bien ...


Le form me permet d'afficher dans le html en php, sauf que je dois traiter ces données ajoutés et modifiés ce tableau en php et c'est la que je rencontre toujours le meme problème d'affichage du echo dans mon php qui reste figé malgres la console js qui fonction et maintenant le form qui fonctionne aussi ... Manque plus que le echo et on est bon je ne vois embete plus.


voici le php :
// 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 ?


Merci encore pour tous ca , ca avance

Avatar du membre
Mammouth du PHP | 1564 Messages

10 nov. 2023, 19:17

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']".

Eléphanteau du PHP | 36 Messages

11 nov. 2023, 10:12

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']".
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é.
une solution serait de rediiger ton utilisateur avec un get : var=ici le contenu de shop.php puis d'afficher dans la page "echo
C'est à dire ?

Avatar du membre
Mammouth du PHP | 1564 Messages

11 nov. 2023, 10:59

Je penses qu'il te faut revoir les base du JS et du PHP, en résumé, les deux sont différents :

PHP : affichage généré une fois l'arrivé du visiteur sur la page : statique
JS/AJAX : affichage généré dynamiquement, permet d'aller chercher des infos dans des fichiers PHP pour les afficher dynamiquement dans la page pour contourner ce côté statique du PHP.

Eléphanteau du PHP | 36 Messages

13 nov. 2023, 09:48

Je pense que tu devrais les revoir aussi car t'es reponses sont incohérentes d'une réponse à la suivante.
Depuis mon 1er message sur le forum ma question etait :

Changer la variable ci-dessous au declechement d'ajax
$etatdupanier = 'lepanierestvide'
$etatdupanier = 'lepanierestenregistrer'
Donc maintenant si je te comprends bien c'est impossible apres 70 messages ... bizarre bizarre :shock:

Merci pour ton aide malgré tout je vais continuer ailleurs maintenant.

Avatar du membre
Mammouth du PHP | 1564 Messages

13 nov. 2023, 10:15


Eléphanteau du PHP | 49 Messages

11 janv. 2024, 04:56

Essaie d'encode ton json avant de faire ton echo ça devrait fonctionné !
:D
$rep = json_encode($etatdupanier);
echo $rep;
Plutôt être que paraître !