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

Eléphant du PHP | 51 Messages

27 mai 2009, 09:52

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é

ViPHP
AB
ViPHP | 5818 Messages

27 mai 2009, 13:44

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.

Eléphant du PHP | 51 Messages

27 mai 2009, 14:02

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

ViPHP
AB
ViPHP | 5818 Messages

27 mai 2009, 14:15

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

Eléphant du PHP | 51 Messages

27 mai 2009, 14:46

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");

Eléphant du PHP | 353 Messages

27 mai 2009, 14:53

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
Modifié en dernier par yaug le 27 mai 2009, 14:56, modifié 1 fois.

ViPHP
AB
ViPHP | 5818 Messages

27 mai 2009, 14:54

Tu dois pouvoir trouver ça tout seul ! :wink:

Eléphant du PHP | 51 Messages

27 mai 2009, 15:04

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

Eléphant du PHP | 353 Messages

27 mai 2009, 15:10

[voix mode="outretombe"]
Tes quuooooooôôôôôtteeeeeeeeuuuuhhhhhh
[/voix]

:twisted:

ViPHP
AB
ViPHP | 5818 Messages

27 mai 2009, 15:11

Elle fonctionne correctement ta fonction copié-collé ?

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

27 mai 2009, 15:14

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:
Modifié en dernier par sadeq le 27 mai 2009, 15:15, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 51 Messages

27 mai 2009, 15:14

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!

ViPHP
AB
ViPHP | 5818 Messages

27 mai 2009, 16:11

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

Eléphant du PHP | 51 Messages

27 mai 2009, 16:38

ca m'affiche bien Lun\'éàçd"i€,ù' ... va bene?

ViPHP
AB
ViPHP | 5818 Messages

27 mai 2009, 17:20

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 ?