Graphique en php.

Apollo27 Messages postés 22 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 17 mai 2015 - 25 mars 2015 à 15:48
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 28 mars 2015 à 20:52
Bonjour,
Je cherche à créer un graphique en php à l'aide de javascript.
Un ami m'a fourni un script qui semblerait être ça sauf qu'un message d'erreur apparait comme ci dessous:

Et voici le code que j'utilise:
<?php
include 'connexion.php';
if (isset($_POST['submit']))
{
$pseudo = htmlspecialchars(trim($_POST['pseudo']));
$point=10;
$requete = $connection->prepare ('SELECT * FROM messcores WHERE prenom=:prenom AND score=:score');
$requete->execute(array(
':prenom' => $pseudo,
':score' => $point));
$javascript="";
do
{
$javascript .="['".$resultat['prenom']."', '".$resultat['score']."'],";
}
while($resultat=$requete->fetchALL());
}
?>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Score', 'en milliers'],]);
var options = {
title: 'My Daily Activities'
};
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(data, options);
<?php
echo $javascript;
?>
</script>
</head>
<body>
<div id="piechart" style="width: 900px; height: 500px;"></div>
<table>
<tr>
<td>
<h1> Quel est votre pseudo ?</h1><br />
<form method="post" action="camembert.php" >
<p>
<input type="text" name="pseudo" required />
<input type="submit" name="submit" value="Valider" />
</p>
</form>
</td>
</tr>
</table>
</body>
</html>


Ainsi pourriez vous m'indiquer si possible où se situe l'erreur pour que je puisse y remédier?
Merci.

27 réponses

Apollo27 Messages postés 22 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 17 mai 2015
27 mars 2015 à 17:30
Un bug sans doute car cela ne fonctionne plus pour présenter des images.
Voici ce que présente l'onglet Json:
Trier par clé

cols

["Score", "en milliers"]
0

"Score"
1

"en milliers"
L'onglet HTML
{"cols":["Score","en milliers"]}

L'onglet réponse:
{"cols":["Score","en milliers"]}

L'onglet Post:
pseudo Pascal
Source
pseudo=Pascal
L'onglet Entête:
Connection Keep-Alive
Content-Length 34
Content-Type text/html
Date Fri, 27 Mar 2015 16:16:56 GMT
Keep-Alive timeout=5, max=99
Server Apache/2.4.4 (Win32) PHP/5.4.16
X-Powered-By PHP/5.4.16
voir le code source
Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
Content-Length 13
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Host localhost
Referer http://localhost/messcores/graph.php
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:36.0) Gecko/20100101 Firefox/36.0
X-Requested-With XMLHttpRequest
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
27 mars 2015 à 18:03
bon.. déjà ...L'onglet SOURCE n'est pas nécessaire...

Ensuite...
Une erreur se trouve au niveau du premier IF ...
if (isset($_POST['submit']))

On n'envoie JAMAIS la variable SUBMIT à ton fichier.. donc il n'entre jamais dans le traitement (la requête ..etc....)
La seule variable envoyée étant (tu peux la voir dans l'onglet POST de la console sur l'ajax...) pseudo.

A la limite... remplace cette ligne par :
if (isset($_POST)) 


Mais si tu reprends les codes que je t'avais donné... tu remarqueras que je ne l'avais pas mis !

Pour ce qui est des corrections que tu as faites ligne 12 ... ce n'est pas vraiment ça..
Il suffisait d'ajouter la parenthèse manquante sur la ligne
$pseudo = isset($_POST['pseudo'])?htmlspecialchars(trim($_POST['pseudo']):'';

C'est à dire :
$pseudo = isset($_POST['pseudo']) ? htmlspecialchars(trim($_POST['pseudo'])) : '';
0
Apollo27 Messages postés 22 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 17 mai 2015
27 mars 2015 à 18:29
Les images sont revenues.



Ce qui correspond au fichier modifié ligne 12 comme tu me l'a demandé:
<?php
//-----------------------------------------------------------------------//
// Page getData.php
// Permet de renvoyer en JSON les données du graphique
//-----------------------------------------------------------------------//
include 'connexion.php';
$result=array();

//définition des colonnes
$result['cols']=array("Score","en milliers");

$pseudo = isset($_POST['pseudo']) ? htmlspecialchars(trim($_POST['pseudo'])) : '';
$point=10;

$params = array(':prenom' => $pseudo,':score' => $point);
$sql="SELECT *
FROM messcores
WHERE prenom=:prenom
AND score=:score";
try
{
$requete = $connection->prepare($sql);
$requete->execute($params);
$resultat = $requete->fetchAll();

//-------------------------------------------------//
//le temps des tests !
//-------------------------------------------------//
$result['sql'] = $sql;
$result['params'] = $params;
$result['resultats'] = $resultat;
//-------------------------------------------------//
} catch (Exception $e){
echo "<br><b>Exception :<b>", $e->getMessage(), "\n";
echo "<br><b>Requete:</b><br>".$sql;
echo "<br><b>params:</b><br>";
print_r($params);
}


// Création des data (lignes)
foreach($resultat as $R){
$result['rows'][] = array($R['prenom'],$R['score']);
}



print json_encode($result);
?>

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
27 mars 2015 à 18:37
Donc visiblement... ta requête ne retourne RIEN.
L'as tu testé en direct dans ta BDD ??
Obtiens tu bien des résultats pour le pseudo = Pascal et le score = 10 ?

SELECT * 
FROM messcores 
WHERE prenom='Pascal'
AND score='10'


Pour tester ta requête.. soit tu passes par PhpMyadmin .. soit tu peux utiliser un logiciel comme HeidiSql.
Lis ceci : http://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql
0
Apollo27 Messages postés 22 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 17 mai 2015
27 mars 2015 à 19:13
Voici ce que j'ai en base de données:

Donc le problème n'est pas de l'alimenter puisqu'elle contient déjà les données à exploiter pour faire le graphique.
Mais bel et bien un graphique représentant des points pour chaque prenom.
Sinon si tu le veux vraiment demain je te montrerai un code pour entrer les données dans la base.Mais cela ne me règlera pas le problème de création de graphique que je cherche à résoudre ici.
Merci pour l'adresse que tu viens de m'indiquer.J'ai observé en vitesse ce qu'il en est et cela me semble intéressant.
A demain sans faute.
Cordialement.
Apollo27
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
27 mars 2015 à 19:38
Heu.... pour Pascal. ..le score est de 5 ......donc normal que ta requête ne retourne rien. .
0
Apollo27 Messages postés 22 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 17 mai 2015
28 mars 2015 à 08:36
Je souhaiterai obtenir un graphique sous forme de camembert ou barres verticales représentatifs de scores obtenus par Jean et Pascal se trouvant en base de données comme présentés dans mon précédent message
Saurais tu me fournir le ou les fichiers pour le faire?
Cordialement.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
28 mars 2015 à 14:33
Je pense qu'il y a déjà besoin de tu reflechisses à la conception de ta page et de ce qui s'en suit...

Déjà .. à quoi sert la case PSEUDO .. si ton but c'est d'avoir les stats de tout le monde....
Ensuite... il va falloir que tu réflechisses à quelles données tu souhaites avoir...
... tu nous dis .. les SCORES de Jean et Pascal .. donc (en m'appuyant sur la capture écran de ta table actuelle...) il suffit de faire :
SELECT * 
FROM messcores 

Sans aucune condition.....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Apollo27 Messages postés 22 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 17 mai 2015
28 mars 2015 à 15:32
C'est tout réfléchi.
Il s'agit pour moi d'une page servant d'exemple et à adapter (celle qui correspond à l'affichage des graphiques) à mon site.
Les résultats se trouvent en base de données.
Sur cette base il y a les champs nommés username et rep_bon qui devront servir à fournir les données du graphique sous forme de camembert ou de barres.Prenom c'est username et score c'est rep_bon.Ok?
Actuellement se sont des phrases et des chiffres qui présentent les résultats.Je voudrai simplement améliorer cette présentation par du graphisme.
Alors bien sûr dans ce cas la case pseudo ne sert à rien.
Je m'en servais jusqu'ici pour valider une page à laquelle j'ai toujours espérer obtenir un camembert.
Mais maître renard n'arrive pas à l'obtenir du corbeau ce camembert!
Alors voilà si tu sais me créer cette page en graphisme (camembert ou barres) avec les données obtenues à partir de prenom et scrore, se sera formidable et tu auras gagné toute mon amitié.
De mon côté j'arriverai bien à me débrouiller pour adapter cette page à mon site.
Voilà.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
28 mars 2015 à 16:15

Alors voilà si tu sais me créer cette page en graphisme (camembert ou barres) avec les données obtenues à partir de prenom et scrore

Le Hic .. c'est que sur ce forum .. on aide à corriger ou à créer des scripts .. on ne le fait pas pour les autres !

Ta case .pseudo .... tu t'en servais.. tu ne t'en sers plus ...
Le nom des champs de la BDD que tu nous as montré ne correspond plus au texte que tu viens de nous poster ("Sur cette base il y a les champs nommés username et rep_bon ") ...
bref.. que d'incohérences !!!

Imagine quelle surprise c'est pour moi... sachant que je me suis basé sur ton code initiale pour réaliser les codes que je t'ai proposé ....... mais au final je pense que tu t'imagine que j'allais deviner ce que tu souhaites faire et que je t'écrive tout le code .... et bien non ! (je n'ai pas ma boule de cristal avec moi...)

Donc... je me ferais un plaisir de t'aider quand tu auras défini avec précision ce que tu souhaites faire .... que tu nous auras présenté le code que tu as essayé de faire dans ce but ( SANS LES ÉLÉMENTS SUPERFLUS ! ).. et quand tu auras fini de mettre en place ta Base de donnée ( finale... avec sa structure..et des exemples concrets de données.....!)
0
Apollo27 Messages postés 22 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 17 mai 2015
28 mars 2015 à 17:03
Non le hic vient du fait que je demandais de l'aide pour corriger le ou les lignes de codes que j'ai présentais la première fois et que j'avais obtenu d'une relation qui a essayer de m'aider en me fournissant les codes.Malheureusement celui ci n'y est pas arrivé.
Alors tu m'a proposé une autre solution avec AJAX que je ne connais pas du tout.
Et comme ici comme ailleurs on aide les gens à moitié en ne leur indiquant tout en deux fois puisque comme tu me l'as avouer "on aide à corriger ou à créer des scripts .. on ne le fait pas pour les autres ! "
Nous ne pouvions que tourner en rond.Puisque je suis à mille lieu de savoir réaliser ce que tu attends de moi avec des conseils.
Comme on dit chez moi "les conseilleurs ne sont pas les payeurs".
Enfin, il est bien dommage qu'il y ait tant de gens sur internet et qu'il n'y ait pas moyen d' obtenir une aide en accomplissant une page complète.
C'est dommage.Tu aurais pu obtenir toute mon amitié.Et à ce titre j'aurai sans doute pu te rendre des services en échange.
Mais là maintenant c'est fini.Je n'y crois plus si c'est ça.
Je suis quelqu' un de bien moi et j'ai su créer aussi un forum où les gens s'y sentent bien et sans magouilles par derrière.
C'est d'ailleurs rare de nos jour.
Oui les relations sur internet ne sont plus ce qu'ils était auprès d' il y a 10 ou 15 ans.
Alors il ne faut pas s'étonner que l'ambiance se dégrade.
Enfin, je m'éloigne du sujet.Mais de toute façon tourner en rond pour tourner en rond je ne suis plus à ça près.
Naïf que j'ai été de croire qu'il pouvait encore y avoir des gens bien comme moi sur les forums informatiques.
Illusions perdues.Espoir brisé!
Je m'en vais.
A revoir.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
28 mars 2015 à 20:52

Non le hic vient du fait que je demandais de l'aide pour corriger le ou les lignes de codes que j'ai présentais la première fois et que j'avais obtenu d'une relation qui a essayer de m'aider en me fournissant les codes

Je pense que ces lignes de codes ne peuvent pas fonctionner quoi qu'il arrive....et que la solution AJAX est sûrement la seule véritablement possible.

Malheureusement celui ci n'y est pas arrivé.

Ce qui rejoint ma remarque précédente....

Puisque je suis à mille lieu de savoir réaliser ce que tu attends de moi avec des conseils.
Comme on dit chez moi "les conseilleurs ne sont pas les payeurs".

Que ça soit avec mes conseils ou non.. tu ne sembles pas en mesure de le faire quoi qu'il arrive.......


Enfin, il est bien dommage qu'il y ait tant de gens sur internet et qu'il n'y ait pas moyen d' obtenir une aide en accomplissant une page complète.
C'est dommage.

Il existe des forums plus propices aux demandes de " faites moi le boulot à ma place.." ..... celui-ci n'en fait pas parti.

Tu aurais pu obtenir toute mon amitié.Et à ce titre j'aurai sans doute pu te rendre des services en échange.

Ce n'est pas ce que je cherche en essayant d'aider de toutes façons.


Naïf que j'ai été de croire qu'il pouvait encore y avoir des gens bien comme moi sur les forums informatiques.
Illusions perdues.Espoir brisé!
Je m'en vais.

Ne désespère pas.. des gens "bien" il y en a toujours....


Quoi qu'il en soit :
Codes-sources est un forum d'aide ... à condition que les "demandeurs" sachent un minimum coder et/ou réflêchir... et ne s'attendent pas à se voir mâcher le travail...
Pour ta demande actuelle.. je pense que tu devrais plutôt poser ta question dans le forum
http://www.commentcamarche.net/forum/php-155

Bonne continuation.

0
Rejoignez-nous