0

PHP と Google Charts を使用していくつかのグラフを作成しようとしています。ユーザーがグラフに表示したい情報を選択するフォームを含む PHP ページがあります。フォームには、日付範囲、総売上高、ネットなどのデータが含まれています。フォームは GraphData.php に送信されます。ここでは、フォーム送信から受け取ったデータに基づいて MySql クエリを生成したいと考えています。そのデータを使用して、Google Charts の JSON オブジェクトを作成します。次に、ユーザー ID とセッション変数を含むフォームを Graphs.php ページに送信します。ここでは、Ajax を使用して JSON データを取得し、Google Chart を作成します。Graphs.php へのリダイレクト/フォーム送信に問題があります。これは可能ですか?GraphData.php のコードは次のとおりです。

// mysql stuff here ....
$result = mysql_query($sql, $myconn) or die(mysql_error());

//start the json data in the format Google Chart js/API expects to recieve it
$data = array('cols' => array(array('label' => 'Month', 'type' => 'string'),
                          array('label' => 'Ticket Sales', 'type' => 'number'),
                          array('label' => 'Amount Bet', 'type' => 'number'),
                          array('label' => 'Amount Won', 'type' => 'number'),
                          array('label' => 'Total Net', 'type' => 'number')),
          'rows' => array());

// loop through the results and add them to the json object
while($row = mysql_fetch_row($result)) 
{
    $data['rows'][] = array('c' => array(array('v' => $row[0]), array('v' => $row[1]), array('v' => $row[2]), array('v' => $row[3]), array('v' => $row[4])));
}

echo json_encode($data);
echo("<FORM id='redirect' name='redirect' method='POST' action='Graphs.php'>
        <INPUT type='hidden' name='userid' value='$userid'>
        <INPUT type='hidden' name='session' value='$session'>'
      </form>");
?>
<script type="text/javascript">
function submit () {
var frm = document.getElementById("redirect");
frm.submit();
}
window.onload = submit;
</script>

ページは Graphs.php に正常にリダイレクトされますが、フォームが送信されず、JSON 文字列が無効であるというエラーが表示されます。私がやろうとしていることは本当に可能ですか?私はそれを間違っているだけですか?それとも別の方法がありますか?これが紛らわしい場合は申し訳ありません。さらに詳しい情報が必要な場合はお知らせください。どんな助けでも大歓迎です!前もって感謝します!!

4

1 に答える 1

0

複数の可能な値がある場合は、if/then または switch ステートメントのいずれかを使用してページ アクションを決定するために、各フォームで非表示の値を使用することにより、ページ ジャンプを完全になくすことができます。疑似として:

if ($_POST[myHiddenInput]==null){
        (means the form hasn't been submitted)
        load or echo options form (form submits to this page)
}
else{
        (they submitted the filled out form)
        check the form for errors, re-populate and prompt if needed, etc.
        if no errors, query mysql (use PDO or face problems later),
         generate json from your sql response and use file_get_contents()
         or curl() google to get your chart, echo response to screen

}

php を javascript 内に慎重にネストして、json を作成し、それを javascript 関数呼び出し (つまり、jquery ajax リクエスト) に返す php 関数を持つことができますが、これはページの読み込み時にのみ発生することに注意してください。

于 2012-11-05T22:03:23.177 に答える