2010-06-17 5 views
2

J'utilise l'exemple de demande de post php donné sur http://code.google.com/apis/chart/docs/post_requests.html pour générer un graphique.Google Exemple d'outil graphique ne fonctionne pas

Le code: chartserver-image.php

<?php 
// Create some random text-encoded data for a line chart. 
header('content-type: image/png'); 
$url = 'http://chart.apis.google.com/chart'; 
$chd = 't:'; 
for ($i = 0; $i < 150; ++$i) { 
$data = rand(0, 100000); 
$chd .= $data . ','; 
} 
$chd = substr($chd, 0, -1); 

// Add data, chart type, chart size, and scale to params. 
$chart = array(
'cht' => 'lc', 
'chs' => '600x200', 
'chds' => '0,100000', 
'chd' => $chd); 

// Send the request, and print out the returned bytes. 
$context = stream_context_create(
array('http' => array(
    'method' => 'POST', 
    'content' => http_build_query($chart)))); 
fpassthru(fopen($url, 'r', false, $context)); 
?> 

another_page.html

<img width='600' height='200' src='chartserver-image.php'> 

En ce moment, quand j'accéder another_page.html, l'image ne se charge pas lorsque je clique sur la vue l'image montre

L'image "http://localhost/demo/chartserver-image.php" ne peut pas être affichée, car elle contient des erreurs.

Quel est le problème que je n'arrive pas à comprendre?

S'il vous plaît aidez-moi sur ce

Merci

Répondre

2

Remplacement 'contenu' => http_build_query (graphique de $)))); avec 'content' => http_build_query ($ chart, '', '&')))); résout le problème.

J'ai ajouté le séparateur d'arguments '&' à http_build_query() qui évite les bogues si le paramètre arg_separator.output est modifié dans php.ini.

Lorsque j'ai vérifié phpinfo le argument arg_separator.output était & amp. Cela posait problème en ajoutant '&' à http_build_query() résout le problème.

+0

+1 qui semble avoir résolu mon problème à http://stackoverflow.com/questions/3682622/anyone-having-problems-with-google-charts-in-xampp – Mawg

+0

oups, désolé, non, il n'a pas -quelque chose D'autre a fait, désolé. Mais c'est un bon point à faire de toute façon – Mawg

0

Cela fonctionne pour moi:

<?php 

// Create some random text-encoded data for a line chart. 
//header('content-type: image/png'); 
$url = 'http://chart.apis.google.com/chart'; 
$chd = 't:'; 
for ($i = 0; $i < 150; ++$i) { 
$data = rand(0, 100000); 
$chd .= $data . ','; 
} 
$chd = substr($chd, 0, -1); 

// Add data, chart type, chart size, and scale to params. 
$chart = array(
'cht' => 'lc', 
'chs' => '600x200', 
'chds' => '0,100000', 
'chd' => $chd); 

$query = http_build_query($chart); 

$fullurl = $url."?".$query; 

$context = stream_context_create(

    array(
      'http' => array(
        'method' => 'GET', 
        'header' => "Content-type: application/x-www-form-urlencoded\r\n" . 
           "Content-length: 0", 
        'proxy' => 'tcp://X.X.X.X:XXXX' 
      ) 
    ) 
); 

$ret = fopen(fullurl, 'r', false, $context); 
fpassthru($ret); 
+0

Merci d'avoir répondu, veuillez clarifier le besoin de 'proxy' => 'tcp: //X.X.X.X: XXXX'. Quelle est la valeur que je devrais passer à cette variable? En ce moment je reçois cette erreur Avertissement: fopen() [fonction.fopen]: php_network_getaddresses: getaddrinfo a échoué: Aucun hôte de ce type n'est connu. dans E: \ xampp \ htdocs \ demo \ chartserver-image.php à la ligne 33 –

+0

Avertissement: fopen (http://chart.apis.google.com/chart?cht=lc & chs = 600x200 & chds = 0% 2C100000 & dans E: \ xampp \ htdocs \ demo \ chartserver-image.php à la ligne 33 Avertissement: fpassthru(): l'argument fourni n'est pas une ressource de flux valide dans E: \ xampp \ htdocs \ demo \ chartserver-image.php sur la ligne 34 –

+0

Je l'ai testé derrière un proxy, c'est pourquoi j'ai dû avoir le jeu 'proxy', je ne suis pas un expert en PHP, mais ça a marché pour moi. –

0

j'ai eu le même problème, et je fendu

$context = stream_context_create(
array('http' => array(
    'method' => 'POST', 
    'content' => http_build_query($chart)))); 

en deux déclarations:

$x = array('http' => array(
    'method' => 'POST', 
    'content' => http_build_query($chart))); 

$context = stream_context_create($x); 

et qui semblait le résoudre (s'il vous plaît ne me demandez pas pourquoi)

1

Cela fonctionnera Absolument bien ... Certaines erreurs dans l'exemple ci-dessus je pense .. ils sont résolus ci-dessous.

<?php 

// Create some random text-encoded data for a line chart. 
header('content-type: image/png'); 
$url = 'http://chart.apis.google.com/chart'; 
$chd = 't:'; 
for ($i = 0; $i < 150; ++$i) { 
$data = rand(0, 100000); 
$chd .= $data . ','; 
} 
$chd = substr($chd, 0, -1); 

// Add data, chart type, chart size, and scale to params. 
$chart = array(
'cht' => 'lc', 
'chs' => '600x200', 
'chds' => '0,100000', 
'chd' => $chd); 

$query = http_build_query($chart); 

$fullurl = $url."?".$query; 

$context = stream_context_create(

    array(
      'http' => array(
        'method' => 'GET', 
        'header' => "Content-type: application/x-www-form-urlencoded\r\n" . 
           "Content-length: 0", 

      ) 
    ) 
); 

$ret = fopen($fullurl, 'r', false, $context); 
fpassthru($ret); 
?> 
Questions connexes