Récupérer tableau associatif en json....
Résolu
ephelya
Messages postés
282
Date d'inscription
Statut
Membre
Dernière intervention
-
ephelya Messages postés 282 Date d'inscription Statut Membre Dernière intervention -
ephelya Messages postés 282 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à faire un script en ajax qui récupère dans la bdd des titres de listes + le contenu de ces listes pour les afficher. Pour le titre et l'id, aucun problème, mais je n'arrive pas à afficher le contenu des listes.... Je débute en ajax, et j'ai beau chercher je ne trouve pas ma réponse. Quelqu'un peut m'aider sioupléé??
Voici ma fonction jquery
et voicci monfichier.php
Je sais que ce n'est pas la bonne façon de faire, mais c'est tout ce que j'ai trouvé... :-/
mon html me donne bien
et le alert me donne
Comment je dois m'y prendre pour récupérer ma liste d'items et l'afficher comme je veux ??
Merci d'avance pour votre aide !! :-)
Je cherche à faire un script en ajax qui récupère dans la bdd des titres de listes + le contenu de ces listes pour les afficher. Pour le titre et l'id, aucun problème, mais je n'arrive pas à afficher le contenu des listes.... Je débute en ajax, et j'ai beau chercher je ne trouve pas ma réponse. Quelqu'un peut m'aider sioupléé??
Voici ma fonction jquery
$.ajax({
type: "POST",
dataType: "json",
url: "http://monfichier.php",
data: data,
success: function(data) {
$("#showlist").append("<h1 id='titphrases'>Contenu de la liste <span id='updaten'>"+ data["name"] +"</span></h1>");
alert(data["phrases"]);
}
});
et voicci monfichier.php
$query = "SELECT id, item FROM items WHERE idliste=:valeur1";
$datas = array(':valeur1'=>$id);
try{
$requete = $db -> prepare($query) ;
$requete->execute($datas) ;
}catch(Exception $e){
// en cas d'erreur :
echo " Erreur ! ".$e->getMessage();
echo " Les datas : " ;
//print_r($datas);
}
$result = $requete->fetchAll();
foreach ($result as $phrase)
{
$list['items'][$item -> id] = $item -> item;
}
$list['items']=serialize($list['items']);
$list['id'] = $id;
echo json_encode($list);
Je sais que ce n'est pas la bonne façon de faire, mais c'est tout ce que j'ai trouvé... :-/
mon html me donne bien
<div id="showlist" style=""><h1 id="titphrases">Contenu de la liste <span id="updaten">liste 1</span></h1></div>
et le alert me donne
a:4:{i:4946;s:39:"item 1";i:4945;s:24:"item2";i:4943;s:31:"item2";i:4944;s:37:"item3";}
Comment je dois m'y prendre pour récupérer ma liste d'items et l'afficher comme je veux ??
Merci d'avance pour votre aide !! :-)
A voir également:
- Javascript tableau associatif
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
4 réponses
Donc:
data.id contient l'ID
et data.phrases te donne la phrase.
data.id contient l'ID
et data.phrases te donne la phrase.
success: function(data) { console.log(data); var html = "<h1 id='titphrases_"+data.id+"' >Contenu de la liste <span id='updaten_"+data.id+"'>"+ data.name +"</span></h1>"; html +=" <span>" + data.phrases +"<span>"; $("#showlist").append(html); }
Oui, je me suis rendu compte entre temps que ça ne servait à rien, j'ai supprimé le serialize ;-)
Par contre je suis toujours bloquée, avec une erreur en plus que je ne comprends pas.
Je récupère bien mes données dans le script php puisque voici ce que me donne console.log(data)
Mais pas moyen d'afficher quoi que ce soit :
Par contre je suis toujours bloquée, avec une erreur en plus que je ne comprends pas.
Je récupère bien mes données dans le script php puisque voici ce que me donne console.log(data)
{"name":"Titre 8","phrases":{"4540":"phrase 1","4539":"phrase 2"}, "id":"85"}
Mais pas moyen d'afficher quoi que ce soit :
$("#showlist").append("<h1 id='titphrases'>Contenu de la liste <span id='updaten'>"+data["name"]+"</span></h1>");m'affiche "Contenu de la liste undefined" et j'ai aussi "undefined" avec console.log(data["phrases"]) ...
Ca répond à la question, je pense ?
-- phpMyAdmin SQL Dump
-- version 4.2.12deb2+deb8u2
-- http://www.phpmyadmin.net
--
-- Client : localhost
-- Généré le : Lun 24 Octobre 2016 à 19:23
-- Version du serveur : 10.0.27-MariaDB-1~jessie
-- Version de PHP : 5.6.24-0+deb8u1
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de données : `test_def`
--
-- --------------------------------------------------------
--
-- Structure de la table `92_dlMoQd_phrases`
--
CREATE TABLE IF NOT EXISTS `92_dlMoQd_phrases` (
`id` int(5) NOT NULL,
`idtheme` int(5) NOT NULL,
`M_FR_phrase` varchar(300) NOT NULL,
`F_FR_phrase` varchar(300) NOT NULL,
`type` varchar(100) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=5697 DEFAULT CHARSET=utf8;
--
-- Contenu de la table `92_dlMoQd_phrases`
--
INSERT INTO `92_dlMoQd_phrases` (`id`, `idtheme`, `M_FR_phrase`, `F_FR_phrase`, `type`) VALUES
(5522, 739, 'test de phrase', 'test de phrase', '2'),
(5696, 739, 'une autre phrase', 'une autre phrase', '');
--
-- Index pour les tables exportées
--
--
-- Index pour la table `92_dlMoQd_phrases`
--
ALTER TABLE `92_dlMoQd_phrases`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT pour les tables exportées
--
--
-- AUTO_INCREMENT pour la table `92_dlMoQd_phrases`
--
ALTER TABLE `92_dlMoQd_phrases`
MODIFY `id` int(5) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=5697;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Le problème est réglé !!!!
Moi je ne comprends toujours pas ce qui s'est passé, mais un ami dev m'a dit que je n'envoyais pas du json et m'a fait ajouter une ligne avant mon echo
J'ai donc enfin pu utiliser tes conseils et afficher mes phrases avec la fonction each que tu m'as donnée.... Ouf !!!
Merci infiniment pour ton aide et ta patience !! :-)
Moi je ne comprends toujours pas ce qui s'est passé, mais un ami dev m'a dit que je n'envoyais pas du json et m'a fait ajouter une ligne avant mon echo
header('Content-Type: application/json');
echo json_encode($list);
J'ai donc enfin pu utiliser tes conseils et afficher mes phrases avec la fonction each que tu m'as donnée.... Ouf !!!
Merci infiniment pour ton aide et ta patience !! :-)
Oui j'ai bien pensé à each, mais quel élément j'utilise ? Le tableau des items arrive sérialisé et je ne sais pas comment utiliser each avec ça ni comment le dé-séraliser...
J'ai tenté un split mais je pense qu'il y a plus propre comme méthode et de toute façon je n'ai pas réussi...
Et si j'envoie le tableau sans le sérialiser, un alert sur le tableau des items me donne , et je ne sais pas quoi en faire non plus... :'(
et regarde dans la CONSOLE de ton navigateur (firefox ou chrome) ce que ça te donne.
Colle nous le contenu ici qu'on puisse voir à quoi ça ressemble.....