2017-07-19 15 views
1

PHPを使用して& Charts.jsを使用すると、HTMLに基づくデータのグラフが生成されます<select>私の問題は、htmlの<select>から空のグラフが私のelse {}ブロックにechoステートメントを表示するのとは対照的に、ページの下部に表示されます。PHP変数に値がある場合のみグラフを生成

チャートは選択はあなたがnew Chart(...)を呼び出ししなければならないHTML <select>

<body> 
    <form method="POST"> 
    <p>Select Sales Name: 
      <select name="Name"> 
       <option value="">Select A Name...</option> 
       <option value="Joe">Joe</option> 
       <option value="Jack">Jack</option> 
       <option value="Jerry">Jerry</option> 
       <option value="Jimmy">Jimmy</option></select></p> 
     <input type="submit" name="submit" value="Show Me"> 
    </form> 
</body> 
<?php 
if (isset($_POST['submit'])) { 
    $whatsalesprsn = $_POST['Name']; 
    if ($whatsalesprsn == "Joe") { $region = "East"; } 
    if ($whatsalesprsn == "Jack") { $region = "West"; } 
    if ($whatsalesprsn == "Jerry") { $region = "North"; } 
    if ($whatsalesprsn == "Jimmy") { $region = "South"; } 
    if (isset($region)) { 
     $query = "Select * from salesdata where salesregion = '$region'"; 
     $db->setQuery($query); 
     $rows = $db->loadColumn(); 
     $output = array(); 
     for ($i = 0; $i <= 3; $i++) { 
     $column = $db->loadColumn($i); 
     array_push($output, $column); 
    } 
    $data = json_encode($output[0]); 
    } else { echo "PLease select a sales person to display data for."; } 
} 
?> 

<html> 
    <head> 
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script> 
    </head> 
    <body> 
     <div id="container" style="width: 75%;"> 
      <canvas id="canvas"></canvas> 
     </div><script> 
      //JavaScript to generate chart 
     </script> 
    </body> 
</html> 
+0

'場合{...}' Mr.Developer @この –

+0

を試してみてください - あなたはどこを提案します私は現在の構文にこのチェックを追加しますか? – BellHopByDayAmetuerCoderByNigh

+0

'$ whatsalesprsn = $ _POST ['Name'];' –

答えて

0

あなたはempty()機能をif statementを追加する必要があります。 (!)$ whatsalesprsn(空)empty()機能を使って、空であるかどうif statement$whatsalesprsn変数をチェックしますSO場合

if(!empty($whatsalesprsn)){ 
$whatsalesprsn = $_POST['Name']; 
    if ($whatsalesprsn == "Joe") { $region = "East"; } 
    if ($whatsalesprsn == "Jack") { $region = "West"; } 
    if ($whatsalesprsn == "Jerry") { $region = "North"; } 
    if ($whatsalesprsn == "Jimmy") { $region = "South"; } 
    if (isset($region)) { 
     $query = "Select * from salesdata where salesregion = '$region'"; 
     $db->setQuery($query); 
     $rows = $db->loadColumn(); 
     $output = array(); 
     for ($i = 0; $i <= 3; $i++) { 
     $column = $db->loadColumn($i); 
     array_push($output, $column); 
    } 
    $data = json_encode($output[0]); 
} 
0

どこかから作られている場合に作成ONLYになるように、どのように私はこの構文を再書き込みする必要があります。有効なデータを渡さずにこれを行うと、Chart.jsは空のグラフを作成します(それはあなたがしたことです)。

有効なデータがない(つまり、<select>要素で何も選択されていない)場合は、Chart.jsをインスタンス化しないでください。何かのように:

if (data.length) { 
    new Chart(...); 
} 
関連する問題