La communauté ALL HTML c'est 58420 membres à ce jour dont 7 inscrits aujourd'hui et 26 depuis une semaine.

  • imprimer
  • aide

Forum de discussions « PHP - SQL »

Retrouvez les publications relatives à ces discussions dans nos rubriques PHP, SQL.

ils array-tent pas de m'embêter !!!!

liste des forums liste des discussions Participer à la discussion

Photo de elizabeth Message publié le mercredi 09 juillet 2008 à 12 h 17 par elizabeth. les pieds sur terre et la tête dans les étoiles
Bonjour,
et encore quelques poignées d'heures à galérer....
que quelqu'un m'achève de suite... ou m'aide..?

j'ai récupéré des codes pour faire des camemberts dynamiquement
(merci telnes) http://www.maani.us/charts/index.php
ça sera top quand j'arriverai à le relier à ma base...

voilà mon souci :
Le code que j'ai récupéré affiche les données dans un camembert à l'aide de cette ligne :
$chart[ 'chart_data' ] = array ( array ( "", "2005", "2006","2007", "2008"), array ( "", 10, 80,45,60 ) );

Ici les infos sont "en dur".
Donc la seule chose que je dois faire, c'est remplacer cet array par le mien, généré depuis ma base de donnée, sachant que le nombre d'items varie en fonction de la société concernée.

Donc la solution est de récupérer mes données sous forme d'array, et les mettre à la place des données en dur.

C'est là que ça se corse... Le code est susceptible, et il y a beaucoup de choses qui ne lui plaisent pas...
Je peux faire :
$an1 = "2010";
Puis
$chart[ 'chart_data' ] = array ( array ( "", $an1, "2006","2007", "2008"), array ( "", 10, 80,45,60 ) );
ça, ça marche, mais il faudrait alors que je connaisse le nombre de valeurs, ce qui n'est pas le cas vu que ça change en fonction de la société...

Mais il y a des choses qui m'échappent dans la rédaction et l'insertion de ma requête.
Voilà ce que j'ai fait :
mysql_select_db($database_rbdh, $rbdh);
$query_var = "SELECT * FROM ca_marche WHERE societe = 'xxx'";
$var = mysql_query($query_var, $xxx) or die(mysql_error());
$var2 = mysql_query($query_var, $xxx) or die(mysql_error());
echo "array (''";
while($data = mysql_fetch_array($var)) {
echo ","."'".$data['marche']."'";
}
echo "), array (''";
while($data2 = mysql_fetch_array($var2)) {
echo ","."'".$data2['chiffre']."'";

}
echo ")";


ça affiche ceci : array ('','transports','biens equipement','energie','divers'), array ('','57.30','21.50','4','8.80')
C'est à dire exactement le contenu de la ligne qui définit mes valeurs dans le camembert....
Mais c'est affiché avec "echo" en affichant ma page par le serveur.
Il faudrait que j'arrive à mettre ces résultats dans une variable...mais :
ça me ferait avancer mais ne résoudrait pas entièrement mon problème...
En effet, si je met :
$mesdonnees = "array ('','transports','biens equipement','energie','divers'), array ('','57.30','21.50','4','8.80')";
$chart[ 'chart_data' ] = array ( $mesdonnees);
ça ne marche pas, ni :
$mesdonnees = "array (array ('','transports','biens equipement','energie','divers'), array ('','57.30','21.50','4','8.80'))";
$chart[ 'chart_data' ] = $mesdonnees; (là j'ai mis tous les array dans la variable)

Par contre,
En dur (au cas où ça vienne de mes guillemets ou données j'ai vérifié) ça, ça fonctionne :
$chart[ 'chart_data' ] = array ( array ('','transports','biens equipement','energie','divers'), array ('','57.30','21.50','4','8.80') );

alors sous quelle forme mettre ces données dans une variable pour que "ça passe" ?
Je ne sais plus quoi faire, comment, où... pitié !
je galère depuis 2 jours et une nuit sur ces sdghqzk de camemberts, j'ai tout essayé avant de venir supplier de l'aide ici....
merci....
Photo de mdr Message publié le mercredi 09 juillet 2008 à 14 h 15 par mdr.
c'est normal que ca t'affiche array ('','transports','biens equipement','energie','divers'), array ('','57.30','21.50','4','8.80') car tu utilises un echo ...
echo te retranscrits à l'écran ce que tu lui donnes
ce qu'il faut que tu fasses c'est déclaré un tableau puis y ajouter les tableaux récupérés de ta BDD à l'aide de array_push();
$chart[ 'chart_data' ] = array (); while (......) { //je récupère mon premier tableau } array_push($chart[ 'chart_data' ], $monPremierTableau); while (......) { //je récupère mon second tableau } array_push($chart[ 'chart_data' ], $monSecondTableau);
Avec ça tu devrais t'en sortir
Photo de telnes Message publié le mercredi 09 juillet 2008 à 14 h 38 par telnes. toujours revenir au debut - http://telnesmaster.free.fr/allhtml/index2.html - http://telnesmaster.free.fr/litetemplate - http://www.hotcontest.org

et encore quelques poignées d'heures à galérer....
que quelqu'un m'achève de suite... ou m'aide..?


moi je veux bien d'achever si tu veux ^^

mouhahaha
Photo de pchlj Message publié le mercredi 09 juillet 2008 à 15 h 33 par pchlj. no comment !
bon hé !!! DORS !!! lol ;)

mysql_select_db($database_rbdh, $rbdh);
$query_var = "SELECT * FROM ca_marche WHERE societe = 'xxx'";
$var = mysql_query($query_var, $xxx) or die(mysql_error());
while($data = mysql_fetch_array($var)) {
$chart['chart_data'][0][] = $data['marche'];
$chart['chart_data'][1][] = $data['chiffre'];
}


pour vérifer si tu y tiens vraiment => print_r ($chart);

voilà :)
Photo de telnes Message publié le mercredi 09 juillet 2008 à 15 h 43 par telnes. toujours revenir au debut - http://telnesmaster.free.fr/allhtml/index2.html - http://telnesmaster.free.fr/litetemplate - http://www.hotcontest.org
moi je le dit a chaque topic

PRINT_R(...)


mais personne m'écoute écoute écoute écoute



^^
Photo de elizabeth Message publié le mercredi 09 juillet 2008 à 22 h 10 par elizabeth. les pieds sur terre et la tête dans les étoiles
Merci beaucoup telnes,
en particulier pour ta proposition d'élimination, je retiens l'idée....
on s'rappelle, hein ?

merci de votre aide, et merci philippe, encore une fois tu me sors de la mouise !!!
au fait, t'as pas des cartons à faire ;o) ????

ça fonctionne, à un détail près : il n'affiche pas la première donnée du tableau.
j'ai 5 valeurs, il n'en met que 4.
j'ai remarqué que lorsqu'on crée le tableau en dur il y a un champ vide "", je pense que c'est pour cette raison...
j'abuse si je te demande comment inclure un item vide........?

merci beaucoup !
allez, ce soir je me couche avant minuit !
Photo de carambarocaramel1 Message publié le lundi 21 juillet 2008 à 00 h 22 par carambarocaramel1.
Bon ... C'est un tableau à deux indices qui contiennent chacun un tableau de même longueur.

donc les données du camembert sont stockées ainsi :
array ( /*marchés */ array( '', 'transports', 'biens equipement', ... ), /*chiffres*/ array( '', 57.30, 21.50, ... ) );

Ensuite, tu fais deux requêtes différentes qui sont strictement les mêmes ... C'est du gaspillage. Surtout avec un "select *".
1 - restreint les champs nécessaires : SELECT marche,chiffre FROM ...
2 - utilise le résultat pour les deux tableaux à créer.

mysql_select_db($database_rbdh, $rbdh); $query_var = "SELECT marche,chiffre FROM ca_marche WHERE societe = 'xxx'"; $var = mysql_query($query_var, $xxx) or die(mysql_error()); while($data = mysql_fetch_assoc($var)) { $marche[] = $data['marche']; $chiffre[] = $data['chiffre']; // ligne 7 } $camembert = array($marche,$chiffre);
S'il persiste un problème du fait que les données de $chiffre[] sont traitées comme des chaînes et non comme des nombres, alors tu peux forcer le typage via :

$chiffre[] = (float)$data['chiffre']; // ligne 7

NB : j'utilise mysql_fetch_assoc() plutôt que mysql_fetch_array().
Photo de carambarocaramel1 Message publié le lundi 21 juillet 2008 à 00 h 24 par carambarocaramel1.
Ah tiens , s'il faut *absolument* que le premier indice de tes tableaux ne contienne rien tu peux rajouter avant le while :
$marche[] = '';
$chiffre[] = '';
Photo de pchlj Message publié le dimanche 27 juillet 2008 à 23 h 12 par pchlj. no comment !
je sui enfin arrivé et j'ai enfin internet :)

donc elisabeth.. si en effet il faut que le premier chaps soit vide rajoute les 2 première valeur avant le while avec un vide

comme vient de le dire juste au dessus carambar ;) (aïe mes dents)

llez ++

liste des forums liste des discussions Participer à la discussion

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions