Array en php
Fermé
newphp
-
14 févr. 2008 à 12:25
Enax Messages postés 203 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 16 mars 2010 - 15 févr. 2008 à 15:00
Enax Messages postés 203 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 16 mars 2010 - 15 févr. 2008 à 15:00
A voir également:
- Array en php
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Php?id=1 - Forum PHP
- Php alert - Forum PHP
- Bouton php - Forum PHP
17 réponses
Enax
Messages postés
203
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
16 mars 2010
145
14 févr. 2008 à 13:19
14 févr. 2008 à 13:19
$data est un array puisque tu as [1], [2]... Tu peux utiliser print_r($data) pour afficher ces valeurs. Du coup tu peux faire directement $plot = new BarPlot($data).
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
14 févr. 2008 à 13:21
14 févr. 2008 à 13:21
Je ne comprend pas, tu l'as déja ton array c'est $data
en faisant echo $data[$i] tu ne fais que lire ce qu'il y dedans, ça ne l'efface pas.
en faisant echo $data[$i] tu ne fais que lire ce qu'il y dedans, ça ne l'efface pas.
En fait si je fais:
for($i=1;$i<=3;$i++)
{
// $values = array(12, 8, 20, 32, 15, 5);
$plot = new BarPlot($data,);
// Une fois le premier histogramme créé et personnalisé, il faut l'ajouter au groupe, de cette manière :
$group->add($plot);
}
Cela m'affiche ce message d'erreur: Class Plot:Expected numeric values for the plot
Quelqu'un voit comment corriger ce problème svp ?
for($i=1;$i<=3;$i++)
{
// $values = array(12, 8, 20, 32, 15, 5);
$plot = new BarPlot($data,);
// Une fois le premier histogramme créé et personnalisé, il faut l'ajouter au groupe, de cette manière :
$group->add($plot);
}
Cela m'affiche ce message d'erreur: Class Plot:Expected numeric values for the plot
Quelqu'un voit comment corriger ce problème svp ?
Regarde la ligne 6 qui a été modifiée
for($i=1;$i<=3;$i++) { // $values = array(12, 8, 20, 32, 15, 5); $plot = new BarPlot($data[i]); // Une fois le premier histogramme créé et personnalisé, il faut l'ajouter au groupe, de cette manière : $group->add($plot); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai fais ta modif, par contre j'ai un autre message d'erreur:
Class Plot: you tried to set a value that is not an array
Une autre solution?merci pour ta réponse en tout cas
Class Plot: you tried to set a value that is not an array
Une autre solution?merci pour ta réponse en tout cas
Enax
Messages postés
203
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
16 mars 2010
145
14 févr. 2008 à 14:11
14 févr. 2008 à 14:11
Il vient d'où en fait ton $data ?
Et-tu sûr qu'il contient des valeurs numériques ? Vérifies avec :
Et c'est $plot = new BarPlot($data); Tu avais mis une virgule après $data.
Et-tu sûr qu'il contient des valeurs numériques ? Vérifies avec :
<?php foreach($data as $v) { if(is_numeric($v)) echo 'valeur numérique<br />'; else echo 'valeur non numérique<br />'; } ?>
Et c'est $plot = new BarPlot($data); Tu avais mis une virgule après $data.
Merci pour ton aide,
Oui j'avais su pour la virgule.
Donc j'ai fais le test, et toute mes valeurs sont numérique. En fait j'ai comme valeur:
16.67 12 16.67 33.33 55.56 11.11
Tu n'aurai pas une autre idée par hasard ?
Oui j'avais su pour la virgule.
Donc j'ai fais le test, et toute mes valeurs sont numérique. En fait j'ai comme valeur:
16.67 12 16.67 33.33 55.56 11.11
Tu n'aurai pas une autre idée par hasard ?
Enax
Messages postés
203
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
16 mars 2010
145
14 févr. 2008 à 14:58
14 févr. 2008 à 14:58
Est-ce que la boucle sert à quelque chose, càd as-tu plusieurs séries de nombre ou une seule ? Si tu en as bel et bien plusieurs, essaie avec une seule pour commencer. A partir du moment où $data est bien un array numérique, il ne devrait alors pas il y avoir de problème.
J'ai enlevé ma boucle for.
A la place j'ai mis : $plot = new BarPlot($data[2]);
J'ai testé avec $data[1] et 3 ....
J'ai encore excepted numeric values for the plot..
Je ne vois pas trop comment faire......
A la place j'ai mis : $plot = new BarPlot($data[2]);
J'ai testé avec $data[1] et 3 ....
J'ai encore excepted numeric values for the plot..
Je ne vois pas trop comment faire......
Enax
Messages postés
203
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
16 mars 2010
145
14 févr. 2008 à 15:21
14 févr. 2008 à 15:21
$data est un array.
$data[x] est une valeur.
On te demande un array.
Donc : $plot = new BarPlot($data);
Utilises ce code (en changeant le chemin d'artichow) :
M'enfin, si tu n'arrives déjà pas à faire ça, tu vas galérer pour utiliser pleinement artichow...
$data[x] est une valeur.
On te demande un array.
Donc : $plot = new BarPlot($data);
Utilises ce code (en changeant le chemin d'artichow) :
<?php require_once "chemin_artichow/BarPlot.class.php"; $graph = new Graph(200, 200); $group = new PlotGroup; $plot = new BarPlot($data); $group->add($plot); $graph->add($group); $graph->draw(); ?>
M'enfin, si tu n'arrives déjà pas à faire ça, tu vas galérer pour utiliser pleinement artichow...
Xil
Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
257
14 févr. 2008 à 15:30
14 févr. 2008 à 15:30
Le constructeur de BarPlot prend un tableau (array) comme argument.
Dans ton cas, $data[$i] n'est pas un tableau mais UNE valeur numérique de ce tableau.
Il faut utiliser simplement $plot = new BarPlot($data); , et pas dans une boucle.
[Ouned by Enax ! J'suis trop lent au boulot]
Par contre, puisque tes valeurs viennent d'un tableau Excel, il est possible que les nombre à virgule soient considérés comme des chaînes de caractères. Pour une bonne compatibilité, je te conseille de rajouter ceci :
Dans ton cas, $data[$i] n'est pas un tableau mais UNE valeur numérique de ce tableau.
Il faut utiliser simplement $plot = new BarPlot($data); , et pas dans une boucle.
[Ouned by Enax ! J'suis trop lent au boulot]
Par contre, puisque tes valeurs viennent d'un tableau Excel, il est possible que les nombre à virgule soient considérés comme des chaînes de caractères. Pour une bonne compatibilité, je te conseille de rajouter ceci :
foreach($data as &$number) { $number = floatval($number); } $plot = new BarPlot($data);
J'avais déjà fais auparavant un test sur artichow
Quand je fais un graphique en prenant des données dans ma bdd, cela marche nickel
Mais par contre je n'arrive pas à afficher quand je prends les données via mon fichier excel...se matin j'étais arrivé à afficher la premiére ligne mais pas les duexiémes
J'ai posté un message dans le forum d'artichow mais toujours pas de réponses
Voici mon message, peut étre que toi tu saura me répondre.
---------------------------------------------------------------------------------------------
bonjour,
je voudrais lire les données stockées dans mon csv et ensuite les afficher dans un histogramme.
Mon fichier csv a cette "bouille":
Nom question TotalOui TotalNon TotalOSF
Sa va ? 4 2 3
Tu bosse ? 7 1 2
En gros c'est sa....
Voici mon code, le problème c'est qu'il ne m'affiche que l'histogramme de la ligne Sa va?. Comment faire pour que cela m'affiche aussi les résultats de Tu bosse ?
Merci pour les courageux qui se plongerons dans le code...
----------------------------------------------------------------------------------------------------
Si tu veux bien m'aider je suis preneur, en tout cas merci du temps que tu ma consacré
Quand je fais un graphique en prenant des données dans ma bdd, cela marche nickel
Mais par contre je n'arrive pas à afficher quand je prends les données via mon fichier excel...se matin j'étais arrivé à afficher la premiére ligne mais pas les duexiémes
J'ai posté un message dans le forum d'artichow mais toujours pas de réponses
Voici mon message, peut étre que toi tu saura me répondre.
---------------------------------------------------------------------------------------------
bonjour,
je voudrais lire les données stockées dans mon csv et ensuite les afficher dans un histogramme.
Mon fichier csv a cette "bouille":
Nom question TotalOui TotalNon TotalOSF
Sa va ? 4 2 3
Tu bosse ? 7 1 2
En gros c'est sa....
Voici mon code, le problème c'est qu'il ne m'affiche que l'histogramme de la ligne Sa va?. Comment faire pour que cela m'affiche aussi les résultats de Tu bosse ?
// Lecture du fichier contenant les questions et divers enregistrement : if (!$fp = fopen("fichier.csv","r")) { echo "Echec de l'ouverture du fichier"; exit; } else { // Permet d'éviter de lire la première ligne contenant les questions : $premierCoup=0; require_once "Artichow/BarPlot.class.php"; $graph = new Graph(400, 400); $graph->setAntiAliasing(TRUE); while (($data = fgetcsv($fp, 1000, ";")) !== FALSE) { // Test pour éviter de lire les preiméres colonnes contenant:TotalOUI, TotalNon, TotalOSF: if($premierCoup==0) { // On ne fait rien: on passe $premierCoup a faux, comme cela au prochain coup on rentrera dedans : $premierCoup=1; } // On lit les autres lignes contenant les pourcentages: else { //echo "toto"; $values = array($data[1], $data[2], $data[3]); $plot = new BarPlot($values); $plot->setBarColor(new Color(250, 230, 180)); $plot->setSpace(5, 5, NULL, NULL); $plot->barShadow->setSize(3); // $plot->barShadow->setPosition(Shadow::RIGHT_TOP); $plot->barShadow->setColor(new Color(180, 180, 180, 10)); $plot->barShadow->smooth(TRUE); /*$days = array( 'NB OUI', 'NB NON', 'Nb OSF', ); $plot->xAxis->setLabelText($days);*/ $graph->add($plot); $graph->draw(); } } }
Merci pour les courageux qui se plongerons dans le code...
----------------------------------------------------------------------------------------------------
Si tu veux bien m'aider je suis preneur, en tout cas merci du temps que tu ma consacré
Xil
Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
257
14 févr. 2008 à 15:32
14 févr. 2008 à 15:32
[Voir ma réponse plus haut, j'crois qu'elle est passée inaperçue]
désolé je n'avais pas vu ta réponse Xil ....
Dans mon fichier csv, j'ai enlevé toutes les virgules, je n'est mis que des nombre ronds.
J'ai donc testé ta méthode, bon bin cela n'a rien changé....merci quand même
Mais bon je ne désespère pas pour autant...
Dans mon fichier csv, j'ai enlevé toutes les virgules, je n'est mis que des nombre ronds.
J'ai donc testé ta méthode, bon bin cela n'a rien changé....merci quand même
Mais bon je ne désespère pas pour autant...
Xil
Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
257
14 févr. 2008 à 15:54
14 févr. 2008 à 15:54
Tu peux détailler comment tu as intégré la solution ?
Désolé je débute ..tu entends quoi par intégré la solution ?
Xil
Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
257
14 févr. 2008 à 16:04
14 févr. 2008 à 16:04
Comment tu as ajouté mon code au tien ^^
// On lit les autres lignes contenant les pourcentages: else { //echo "toto"; //$values = array($data[1], $data[2], $data[3]); $plot = new BarPlot($data); $plot->setBarColor(new Color(250, 230, 180)); $plot->setSpace(5, 5, NULL, NULL); $plot->barShadow->setSize(3); // $plot->barShadow->setPosition(Shadow::RIGHT_TOP); $plot->barShadow->setColor(new Color(180, 180, 180, 10)); $plot->barShadow->smooth(TRUE); /*$days = array( 'NB OUI', 'NB NON', 'Nb OSF', ); $plot->xAxis->setLabelText($days);*/ $graph->add($plot); $graph->draw(); }
Comme je n'ai pas de virgule dans mes nombres, je n'est pas utilisé :foreach($data as &$number) {
$number = floatval($number);
}
C'était cela que tu conté faire ?
Enax
Messages postés
203
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
16 mars 2010
145
15 févr. 2008 à 15:00
15 févr. 2008 à 15:00
Voilà un code qui marche très bien chez moi pour un fichier csv de ce type :
Code :
chaîne | chaîne | chaîne | chaîne | chaîne | nombre | nombre | nombre | chaîne | nombre | nombre | nombre | chaîne | nombre | nombre | nombre | chaîne | nombre | nombre | nombre | ...
Code :
<?php require_once "chemin_artichow/BarPlot.class.php"; $graph = new Graph(400, 400); $group = new PlotGroup; $fp = fopen("test.csv","r"); $premierCoup = 0; while (($data = fgetcsv($fp, 1000, ",")) !== FALSE) { if($premierCoup == 0) $premierCoup = 1; else { $values = array($data[1], $data[2], $data[3]); $plot = new BarPlot($values); $group->add($plot); } } $graph->add($group); $graph->draw(); ?>