Page 1 sur 2

Ecrire dynamiquement dans un div les éléments d'un tableau j

Posté : 27 mai 2009, 09:52
par toone
Suite du topic dans php debutant ^^ qui est celui ci : http://www.phpfrance.com/forums/voir_sujet-248133.php

[Merci AB pour l'aide dans ma démarche!!]

Je cherche comment continuer mon projet donc il me faut travailler sur du JavaScript.

Mon but est une carte cliquable par departement qui affiche onclick sur la même page des infos clients tirés d'une BDD(j'ai deux tables, departements et informations).

J'ai un tableau $donnees qui contient les infos clients, je dois donc me servir de js_encode?

Code : Tout sélectionner

js_encode($donnees) echo js_encode($donnees) ;

Mais après il faut que j'arrive à recupérer les bonnes infos correspondants au departement cliqué

Posté : 27 mai 2009, 13:44
par AB
Dans une page séparée essaye l'exemple de sadec du précédent post.

Remarques, si tu as cliqué sur le lien de la doc http://fr.php.net/manual/fr/function.json-encode.php
il faut que tes données soient encodées en utf8.

Apparemment ce n'est pas le cas dans ton code puisque je lis

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Il faudra donc jouer de l' utf8_encode() pour convertir tes valeurs du tableau $donnees puis trouver une fonction JS utf8_decode(), (peut-être ce code que je n'ai pas testé : http://files.codes-sources.com/fichier. ... tf8_lib.js )

Autre solution utiliser les anciennes librairies qui transforment un tableau php en tableau js à partir de iso-8859-1 . Tu pourrais t'inspirer de ce post http://www.phpfrance.com/forums/voir_re ... .php#31576

Mais si ton projet n'est pas très avancé ce serait plus intéressant de coder ta page en utf8. Tu apprendrais ainsi par la même occasion la meilleur méthode pour apprendre à ton code à parler toutes les langues.

Posté : 27 mai 2009, 14:02
par toone
J'ai mis mes données en utf8 en utilisant ce lien : http://manuel-esteban.com/?p=71

Ca suffit?

J'ai vérifier la BDD est marquée UTF8, J'ai changé dans le meta et sur notepad++

EDIT :

En testant à part le code json_encode, je vois mieux le fonctionnement, mais dans mon cas il ne me faut pas une alert je pense...

Posté : 27 mai 2009, 14:15
par AB
Et l'entête php de ta page avec header('Content-Type: text/html; charset=UTF-8');

Ainsi que cette petite requête juste après la connexion à ta base de données
mysql_query("SET NAMES 'utf8'");

Remarque que c'est avec la participation de l'auteur du tuto que tu as trouvé sur l'utf8, que j'ai fait celui-ci http://www.phpfrance.com/forums/voir_sujet-245062.php

Posté : 27 mai 2009, 14:46
par toone
Quand je rajoute le header ca me met une parse error... qu'ai je fait?

Code : Tout sélectionner

<?php header(’Content-type:text/html; charset=UTF-8′); mysql_connect("localhost", "root", ""); mysql_query("SET NAMES 'utf8'"); mysql_select_db("clients");

Posté : 27 mai 2009, 14:53
par yaug
Bonjour.

Quelle erreur as tu au juste ?

Le header doit être placé tout en haut de la page.
Une fois que du code html est déjà envoyé au navigateur, on ne peut plus utiliser le header et cela génère une erreur.

Et sinon... après avoir fait un copier coller, il semble que tu te sois planté dans tes quotes :D

Posté : 27 mai 2009, 14:54
par AB
Tu dois pouvoir trouver ça tout seul ! :wink:

Posté : 27 mai 2009, 15:04
par toone
erreur :

Code : Tout sélectionner

Parse error: parse error in C:\wamp\www\test\index.php on line 2
mes premières lignes, c'est bien au debut de la page index.php, mon html est plus loin...

Code : Tout sélectionner

<?php header(’Content-type:text/html; charset=UTF-8′); mysql_connect("localhost", "root", ""); mysql_query("SET NAMES 'utf8'"); mysql_select_db("clients");
Je sais que je suis pas loin AB... :D

Posté : 27 mai 2009, 15:10
par yaug
[voix mode="outretombe"]
Tes quuooooooôôôôôtteeeeeeeeuuuuhhhhhh
[/voix]

:twisted:

Posté : 27 mai 2009, 15:11
par AB
Elle fonctionne correctement ta fonction copié-collé ?

Posté : 27 mai 2009, 15:14
par sadeq
dans l'instruction : header(Content-type:text/html; charset=UTF-8);
Les quottes utilisés ne sont pas bien codés, remplaces-les par '

C'est ton éditeur qui te joue des tours :wink:

Posté : 27 mai 2009, 15:14
par toone
OHU!!!

C'est http://manuel-esteban.com/?p=71 qui mettait des simples quotes, mon ctrl-c ctrl-v fonctionne à merveille ^^ !

Bon ba 10 minutes de perdues pour des ptites barres, j'aime!

Posté : 27 mai 2009, 16:11
par AB
C'est pas le pb des simple quotes c'est que tu avais mis des apostrophes à la place.

Alors ça avance ? Pour voir si ton encodage utf-8 fonctionne correctement, remplace 'lundi', par 'Lun\'éàçd"i€,ù' et regarde si l'affichage dans le alert javascript correspond bien. Si oui on pourra passer à l'étape suivante.

Sinon retour au tuto sur l'utf8

Posté : 27 mai 2009, 16:38
par toone
ca m'affiche bien Lun\'éàçd"i€,ù' ... va bene?

Posté : 27 mai 2009, 17:20
par AB
Bon ça à l'air ...

Tu pourras donc avoir un tableau javascript ayant la même structure et le même contenu que ton tableau php de $donnees.

Je serais toi je montrerais un petit extrait du tableau pour aider ceux qui veulent t'aider (sans qu'ils aient besoin de se référer au précédent post php)

Suffit maintenant d'écrire dans un div les éléments choisis du tableau en fonction de l'index du département.

Donc on veux une fonction javascript de type Affiche('12') qui onclick affiche les éléments du département 12.

Déjà crée et positionne le div (en html) qui sera le conteneur. Un truc du genre

Code : Tout sélectionner

<div id="info_comp" style="position:absolute; top:cequetuveux; left:cequetuveux; border:situveux">Test</div>
Quand tu l'aura positionné où tu veux, ajoute dans le style : 'display:none' et ton div deviendra invisible.

Ensuite on commence la fonction js

Code : Tout sélectionner

<script type="text/javascript"> function Affiche(num_dep) { if (this.conteneur = document.getElementById('info_comp')) { this.conteneur.style.display = 'block'; } } </script>
Et donc dans tout élément où tu auras ajouté le comportement onclick = "Affiche('un_numero')" ton div devrait apparaitre on click. C'est ok ?