Passer une boucle dans du json_encode
Résolu
anthonyr_25
Messages postés
165
Date d'inscription
Statut
Membre
Dernière intervention
-
anthonyr_25 Messages postés 165 Date d'inscription Statut Membre Dernière intervention -
anthonyr_25 Messages postés 165 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Salut salut je voudrais passer une boucle php dans du json encode pour l'afficher avec js.
En fait j'ai une page html qui appele une function js dans laquelle il y as un fetch ->
Ce fetch fait appele à une page php ->
Cette page php insere ma donnée dans ma bdd ->
Puis elle boucle des éléments html en récupérant les données stocké dans ma table
Et bien j'aimerais afficher le resultat de cette boucle sur ma page html
voila ou je veux inserer mon résulat :
voila mon fetch :
et voici mon php :
Alors j'ai bien essayer de mettre ma boucle dans le json_encode mais sa me le soulignait en rouge ...
Salut salut je voudrais passer une boucle php dans du json encode pour l'afficher avec js.
En fait j'ai une page html qui appele une function js dans laquelle il y as un fetch ->
Ce fetch fait appele à une page php ->
Cette page php insere ma donnée dans ma bdd ->
Puis elle boucle des éléments html en récupérant les données stocké dans ma table
Et bien j'aimerais afficher le resultat de cette boucle sur ma page html
voila ou je veux inserer mon résulat :
<section class="task"> </section>
voila mon fetch :
const value = document.querySelector('.box_text_add').value const form = new FormData() form.append("task_name_value", value) fetch('add.php', { method: "POST", body: form }) .then( response => { return response.json() }) .then(data=>{ console.log(data); })
et voici mon php :
$data = $_POST['task_name_value']; if ($data != null) { $etat = 2; $name = $data; $insert = $bdd->prepare('INSERT INTO task (task_name, task_etat) VALUES (?, ?)'); $insert->execute(array($name, $etat)); } else { echo "error"; } $recupProd = $bdd->query('SELECT * FROM task INNER JOIN task_not_complete ON task.id = task_not_complete.task_etat'); $valeurs = $recupProd->fetch(); while ($valeurs = $recupProd->fetch()) { ?> <div class="box_task box"> <div class="circle circle_all"><img src="complete.png" alt="" class="tchek"></div> <p class="box_task_text"><?= $valeurs['task_name'] ?></p> </div> <?php } echo json_encode();
Alors j'ai bien essayer de mettre ma boucle dans le json_encode mais sa me le soulignait en rouge ...
Configuration: Windows / Chrome 101.0.4951.54
A voir également:
- Passer une boucle dans du json_encode
- Passer de qwerty a azerty - Guide
- Passer a windows 10 - Accueil - Mise à jour
- Passer une ligne dans une cellule excel - Guide
- Passer de majuscule à minuscule - Guide
- Passer à windows 11 gratuitement - Guide
2 réponses
Bonjour,
Si tu souhaites que ton fichier php retourne les données au format json, il ne faut pas créer de boucle pour générer du code html en php.
Tu peux directement envoyer toutes les valeurs (via fetchAll) avec la fonction json_encode :
C'est ensuite dans le code JS qu'il faut parcourir les valeurs et générer le code html.
Si tu préfères générer le code html depuis le fichier php, dans ce cas il ne faut pas utiliser le format json.
Si tu souhaites que ton fichier php retourne les données au format json, il ne faut pas créer de boucle pour générer du code html en php.
Tu peux directement envoyer toutes les valeurs (via fetchAll) avec la fonction json_encode :
$recupProd = $bdd->query('SELECT ...'); $valeurs = $recupProd->fetchAll(); echo json_enode($valeurs);
C'est ensuite dans le code JS qu'il faut parcourir les valeurs et générer le code html.
Si tu préfères générer le code html depuis le fichier php, dans ce cas il ne faut pas utiliser le format json.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
nous as-tu montré ce que tu as essayé?
nous as-tu montré ce que tu as essayé?
Non mais je peux te les montré, j'ai esayer deux choses mais je ne sais pas du tout comment faire je suis bloqué :
1er essaie :
2eme essaie :
1er essaie :
function test_json(){ return while ($valeurs = $recupProd->fetch()) { ?> <div class="box_task box"> <div class="circle circle_all"><img src="complete.png" alt="" class="tchek"></div> <p class="box_task_text"><?= $valeurs['task_name'] ?></p> </div> <?php }; } echo json_encode(test_json());
2eme essaie :
echo json_encode( while ($valeurs = $recupProd->fetch()) { ?> <div class="box_task box"> <div class="circle circle_all"><img src="complete.png" alt="" class="tchek"></div> <p class="box_task_text"><?= $valeurs['task_name'] ?></p> </div> <?php } );
Donc depuis le js je ne fait pas de fetch ?
Et depuis le php comment je renvoie les informations au js ?
Tu peux utiliser fetch en js, mais il faut du coup utiliser la méthode response.text() au lieu de response.json() dans la première promise (le premier then).
et donc ducoup le resultat correspond à data dans le js ?
Il te suffit ensuite de sélectionner ton élément .task (via querySelector par exemple) puis d'utiliser la propriété innerHTML pour insérer le contenu html dans cet élément.
Essaye d'appeler ton fichier http://localhost/todo/vue.php dans ton navigateur et corrige les éventuelles erreurs pour t'assurer que ce fichier retourne bien le code html.