IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] Un tableau � 2 dimensions en javascript � partir d'un tableau PHP


Sujet :

Langage PHP

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    581
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 581
    Par d�faut [PHP-JS] Un tableau � 2 dimensions en javascript � partir d'un tableau PHP
    Bonjour, je me tourne vers vous pour un probl�me que je rencontre, � mi-chemin entre le PHP et le javascript. Je ne sais donc pas si cette section sera plus adapt�e qu'une autre ou pas, d�sol� d'avance si je me trompe.

    Mon probl�me est le suivant : utilisant un module jQuery pour construire des diagrammes, je dois r�cup�rer des valeurs contenues en base de donn�es, pour les transformer ensuite en variable javascript de la forme
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var data = [[x1,y1],[x2,y2],[x3,y3],...,[xn,yn]];
    J'ai donc un tableau � 2 dimensions dans un tableau.

    Pour cela je pensais construire un tableau en PHP, puis injecter ce tableau dans un tableau javascript. Mais je me perds dans le raisonnement et mes tentatives sont vaines.

    J'ai utilis� le m�me processus pour des variables construites � partir d'un tableau en 1 dimension, qui fonctionne parfaitement, mais impossible de l'adapter. Voici le code que j'utilisais :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    <?php while ($varNtotal = mysql_fetch_array($varStatistique)) {
    	$varVisite[] = $varNtotal['col1'];
    } ?>
     
    <script type="text/javascript">
    var data = new Array(<?php echo implode(',' ,$varVisite); ?>);
    </script>
    Je me retrouve bien avec une variable javascript de la forme
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var data = [x1,x2,x3,...,xn];
    Le probl�me est que si je suis la m�me logique et que je fais
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    <?php while ($varNtotal = mysql_fetch_array($varCotation_varStatistique)) {
    	$varVisite[] = array($varNtotal['col1'], $varNtotal['col2']);
    } ?>
     
    <script type="text/javascript">
    var data = new Array(<?php echo implode(',', $varHistorique); ?>);
    </script>
    Je me retrouve avec une variable javascript de la forme
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var data = [x1,y1,x2,y2,x3,y3,...,xn,yn];
    Une id�e ? Merci d'avance.

  2. #2
    Mod�ratrice
    Avatar de Celira
    Femme Profil pro
    D�veloppeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 40
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Mod�ratrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "�a ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'�diteur) et [C=php][/C]

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    581
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 581
    Par d�faut
    Merci pour le lien, je n'avais pas trouv� cette information.
    Mais apparemment j'obtiens le m�me r�sultat, avec une variable de cette forme
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var data = [x1,y1,x2,y2,x3,y3,...,xn,yn];
    ...

    EDIT :
    C'est bon, �a fonctionne. J'ai affich� la structure de mon tableau dans javascript � partir du plugin jQuery-JSon, et j'ai vu que les valeurs �taient interpr�t�es comme du texte, et non des chiffres.
    Du coup j'ai retir� les ' dans la fonction de construction du tableau, et le r�sultat est exactement ce que j'attendais.

    MERCI BEAUCOUP !

  4. #4
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    581
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 581
    Par d�faut
    Bonjour, je me retourne vers vous de nouveau pour une am�lioration sur ce code.
    Je souhaite construire en gros 30 tableaux de cette fa�on, donc au lieu d'�crire 30 fois la ligne de construction, j'ai essay� de faire une boucle sur une variable dynamique.
    Je me retrouve avec une erreur de construction du tableau, voici mon code :

    AVANT (fonctionne) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    function construisTableauJS($tableauPHP, $nomTableauJS){
    	echo $nomTableauJS." = new Array();";
    	for ($i=0; $i<count($tableauPHP); $i++) {
    		if (!is_array($tableauPHP[$i])) {
    			echo $nomTableauJS."[".$i."] = ".$tableauPHP[$i].";";
    		} else {
    			construisTableauJS($tableauPHP[$i], $nomTableauJS."[".$i."]");
    		}
    	}
    	return;
    }
     
    echo "<script type='text/javascript'>";
    construisTableauJS($varHistorique_EBM1, "varHistorique_EBM1");
    construisTableauJS($varHistorique_EBM2, "varHistorique_EBM2");
    construisTableauJS($varHistorique_EBM3, "varHistorique_EBM3");
    construisTableauJS($varHistorique_EBM4, "varHistorique_EBM4");
    construisTableauJS($varHistorique_EBM5, "varHistorique_EBM5");
    construisTableauJS($varHistorique_EBM6, "varHistorique_EBM6");
    construisTableauJS($varHistorique_EBM7, "varHistorique_EBM7");
    construisTableauJS($varHistorique_EBM8, "varHistorique_EBM8");
    construisTableauJS($varHistorique_EOB1, "varHistorique_EOB1");
    construisTableauJS($varHistorique_EOB2, "varHistorique_EOB2");
    construisTableauJS($varHistorique_EOB3, "varHistorique_EOB3");
    construisTableauJS($varHistorique_EOB4, "varHistorique_EOB4");
    construisTableauJS($varHistorique_EOB5, "varHistorique_EOB5");
    construisTableauJS($varHistorique_EOB6, "varHistorique_EOB6");
    construisTableauJS($varHistorique_EOB7, "varHistorique_EOB7");
    construisTableauJS($varHistorique_EOB8, "varHistorique_EOB8");
    construisTableauJS($varHistorique_EMA1, "varHistorique_EMA1");
    construisTableauJS($varHistorique_EMA2, "varHistorique_EMA2");
    construisTableauJS($varHistorique_EMA3, "varHistorique_EMA3");
    construisTableauJS($varHistorique_EMA4, "varHistorique_EMA4");
    construisTableauJS($varHistorique_EMA5, "varHistorique_EMA5");
    construisTableauJS($varHistorique_EMA6, "varHistorique_EMA6");
    construisTableauJS($varHistorique_EMA7, "varHistorique_EMA7");
    construisTableauJS($varHistorique_EMA7, "varHistorique_EMA8");
    construisTableauJS($varHistorique_ECO1, "varHistorique_ECO1");
    construisTableauJS($varHistorique_ECO2, "varHistorique_ECO2");
    construisTableauJS($varHistorique_ECO3, "varHistorique_ECO3");
    construisTableauJS($varHistorique_ECO4, "varHistorique_ECO4");
    construisTableauJS($varHistorique_ECO5, "varHistorique_ECO5");
    construisTableauJS($varHistorique_ECO6, "varHistorique_ECO6");
    construisTableauJS($varHistorique_ECO6, "varHistorique_ECO7");
    construisTableauJS($varHistorique_ECO6, "varHistorique_ECO8");
    echo "</script> ";
    APRES (ne fonctionne pas) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function construisTableauJS($tableauPHP, $nomTableauJS){
    	echo $nomTableauJS." = new Array();";
    	for ($i=0; $i<count($tableauPHP); $i++) {
    		if (!is_array($tableauPHP[$i])) {
    			echo $nomTableauJS."[".$i."] = ".$tableauPHP[$i].";";
    		} else {
    			construisTableauJS($tableauPHP[$i], $nomTableauJS."[".$i."]");
    		}
    	}
    	return;
    }
     
    echo "<script type='text/javascript'>";
    $varCotation = array("EBM","EOB","EMA","ECO");
    foreach($varCotation as $cdt) {
    	for ($x=1; $x<=8; $x++) {
    		$varVar1 = "varHistorique_".$cdt.$x;
    		construisTableauJS($$varVar1, $varVar1);
    	}
    }
    echo "</script> ";
    Merci d'avance.

  5. #5
    Mod�ratrice
    Avatar de Celira
    Femme Profil pro
    D�veloppeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 40
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par d�faut
    Hum... b�tement, tu as v�rifi� qu'un echo de ta variable construite donne bien ce que tu attends ?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    $varVar1 = "varHistorique_".$cdt.$x;
    echo $varVar1 ;
    Ensuite, si on avait l'erreur exacte �a aiderait sans doute.
    Mod�ratrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "�a ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'�diteur) et [C=php][/C]

  6. #6
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    581
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 581
    Par d�faut
    Oui la variable construite est bien celle que j'attends.

    L'erreur je la vois dans la console d'erreur en faite. La page arr�te de se charger au niveau de ces lignes l�, et le module qui construit le diagramme � partir de ces valeurs (voir premier post) me retourne un "varHistorique_EBM1 is not defined", comme si la valeur �tait vide.

  7. #7
    Mod�ratrice
    Avatar de Celira
    Femme Profil pro
    D�veloppeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 40
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par d�faut
    Pour �viter les probl�mes, tu peux contr�ler l'existence de ta variable avant l'appel de la fonction :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    $varVar1 = "varHistorique_".$cdt.$x;
    if (isset($$varVar1)) {
    	construisTableauJS($$varVar1, $varVar1);
    }
    Mod�ratrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "�a ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'�diteur) et [C=php][/C]

  8. #8
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    581
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 581
    Par d�faut
    Bon, apparemment le probl�me venait du nom de la variable "varVar1", que j'avais d�j� utilis� plus haut et qui faisait interf�rence !! Bizarre.
    Quoi qu'il en soit, �a fonctionne maintenant...
    Merci

  9. #9
    Membre �clair�
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    581
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 581
    Par d�faut [PHP-JS] Un tableau � 2 dimensions en javascript � partir d'un tableau PHP en AJAX
    Bonjour,

    Je reviens sur mon post pour une am�lioration que je tente d'apporter � mon code. Cette fois, mon tableau PHP est d�clar� en AJAX dans une page appel�e.
    Il me faut donc envoyer par AJAX le tableau, et l'interpr�ter dans le javascript.

    Puisque je ne peux pas faire une boucle pour construire le tableau JS, je suppose qu'il faut que j'envoie le tableau PHP "s�rialis�" depuis la page AJAX, puis que je le "d�serialise" dans javascript. C'est bien �a ?

    EDIT :
    Bon alors voici o� j'en suis.
    1. la page qui va interpr�ter le tableau en javascript et qui appelle l'AJAX :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    $.post('inc.php',
    	{ culture: num[0], echeance: num[1] },
    	function(data) {
    		var tableau = eval('('+data+')');
    		alert(tableau);				
    	}, 'json'
    );
    Et la page AJAX qui cr�� le tableau et le retourne s�rialis� en JSON :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    while ($varNtotal = mysql_fetch_array($varCotation)) {
    	$varHistorique[] = array($varNtotal['timestamp'], $varNtotal['echeance_2');
    }
    echo json_encode($varHistorique);
    Lorsque je fais un alert basique, je vois bien toute mes valeurs pass�es, sous la forme x1, x2, x3, x4. Et lorsque je fais l'�val, je n'obtiens que la derni�re valeur.

    O� est mon erreur ?

    EDIT 2 :
    Bon j'ai corrig� le tir en comprenant un peu mieux le fonctionnement. J'ai du coup trouv� une fonction de transformation qui m'a donn� un r�sultat satisfaisant.

    1. la page qui va interpr�ter le tableau en javascript et qui appelle l'AJAX :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    function array2json(arr) {
    	var parts = [];
    	var is_list = (Object.prototype.toString.apply(arr) === '[object Array]');
    	for(var key in arr) {
    		var value = arr[key];
    		if(typeof value == "object") {
    			if(is_list) parts.push(array2json(value));
    			else parts[key] = array2json(value);
    		} else {
    			var str = "";
    			if(!is_list) str = key + ':';
    			if(typeof value == "number") str += value;
    			else if(value === false) str += 'false';
    			else if(value === true) str += 'true';
    			else str += value;
    			parts.push(str);
    		}
    	}
    	var json = parts.join(",");
    	if(is_list) return '[' + json + ']';
    	return '{' + json + '}';
    }
     
    $.post('inc.php',
    	{ culture: num[0], echeance: num[1] },
    	function(data) {
    		var tableau = array2json(data);				
    	}, 'json'
    );
    2. la page AJAX qui cr�� le tableau et le retourne s�rialis� en JSON :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    while ($varNtotal = mysql_fetch_array($varCotation)) {
    	$varHistorique[] = array($varNtotal['timestamp'], $varNtotal['echeance_2']);
    }
     
    echo json_encode($varHistorique);
    Et �a tourne !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 1
    Dernier message: 05/07/2014, 11h21
  2. Recuperer un tableau � deux dimensions PHP sous Javascript
    Par Archalia dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 29/01/2010, 11h44
  3. R�ponses: 2
    Dernier message: 04/03/2008, 09h48
  4. R�ponses: 1
    Dernier message: 26/08/2007, 22h21
  5. [Tableaux] Fonction PHP et tableau � 2 dimensions
    Par ponteprimo dans le forum Langage
    R�ponses: 3
    Dernier message: 06/09/2006, 14h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo