2017-07-27 10 views
0

私はdraw chart using google chart APIにしようとしています。このチャートはデータベースからデータを取得します。ユーザは、チャートを描画したい日付を決定することができる。 weekly, year, Mysql monthly ...等。ユーザーはMySQLのクエリは、この変数にアクセスすることはできません週、月または年を選択どこからでもアクセス可能な変数

エラーが変数$sql

session_start(); 
 
$data_set = $_SESSION['config']; 
 
include("inc/users/$data_set.php"); 
 

 
include('database.php'); 
 
$connection = new database(); 
 
$con2 = $connection->connect($db, $user, $pass, $host); 
 

 
$time = $_POST['tar']; 
 

 
if ($time == 'week') { 
 
    $sql = "SELECT COUNT(DISTINCT `username`) AS `count`,date(`AcctStartTime`) AS `date1` FROM `radacct` where date(AcctStartTime) = curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY AND date(AcctStartTime) < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY"; 
 
} else if ($time == 'month') { 
 
    $sql = "SELECT COUNT(DISTINCT `username`) AS `count`,date(`AcctStartTime`) AS `date1` FROM radacct 
 
    WHERE YEAR(AcctStartTime) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND MONTH(AcctStartTime) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)"; 
 
} else if ($time == 'year') { 
 
    $sql = "SELECT COUNT(DISTINCT `username`) AS `count`,date(`AcctStartTime`) AS `date1` FROM radacct 
 
    WHERE YEAR(AcctStartTime) = YEAR(CURRENT_DATE - INTERVAL 1 YEAR)"; 
 
} 
 
$result = $con2->query($sql); 
 

 
while ($result2 = $result->fetch_assoc()) { 
 
    $rows[] = array("c" => array("0" => array("v" => $result2['date1'], "f" => NULL), "1" => array("v" => (int) $result2['count'], "f" => NULL))); 
 
} 
 
echo $format = '{ 
 
    "cols":[ 
 
     {"label":"date1","pattern":"","type":"string"}, 
 
     {"label":"count","pattern":"","type":"number"} 
 
    ], 
 
    "rows":' . json_encode($rows) . '}';
にアクセスできないため、SQLクエリが空であることを述べています

+0

使用ブラケットてください: '(あなたが満たされない条件をキャッチするために、最終的な 'else'ブロックを持っていないので、あなたのブロックはおそらくかかわらず下落している場合には読みやすいコード – ThisGuyHasTwoThumbs

+0

を作りますあなたのif/elseifブロックにある – WillardSolutions

+0

さらに、あなたの質問に正確なエラーメッセージを投稿し、エラーの内容をあいまいに解釈するのではありません。 – WillardSolutions

答えて

1

その他の条件がありません。 $時間チェック条件を追加しますが、else部分を追加する必要があります。 statemetns場合で

session_start(); 
    $data_set=$_SESSION['config']; 
    include("inc/users/$data_set.php"); 
    include('database.php'); 
    $connection=new database(); 
    $con2=$connection->connect($db,$user,$pass,$host); 
    $time= $_POST['tar']; 

    if(!empty($time)){ 
     if($time=='week') { 
      $sql="SELECT COUNT(DISTINCT `username`) AS `count`,date(`AcctStartTime`) AS `date1` FROM `radacct` where date(AcctStartTime) = curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY AND date(AcctStartTime) < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY"; 
     } else if($time=='month') { 
      $sql="SELECT COUNT(DISTINCT `username`) AS `count`,date(`AcctStartTime`) AS `date1` FROM radacct WHERE YEAR(AcctStartTime) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND MONTH(AcctStartTime) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)"; 
     } else if($time=='year') {  
      $sql="SELECT COUNT(DISTINCT `username`) AS `count`,date(`AcctStartTime`) AS `date1` FROM radacct WHERE YEAR(AcctStartTime) = YEAR(CURRENT_DATE - INTERVAL 1 YEAR)"; 
     } 
    } else { 
     //you have to write default query here 
     $result = $con2->query($sql);  
     while($result2= $result->fetch_assoc()) { 
     $rows[]=array("c"=>array("0"=>array("v"=>$result2['date1'],"f"=>NULL),"1"=>array("v"=>(int)$result2['count'],"f" =>NULL))); 
    } 

    echo $format = '{ 
    "cols":[ 
     {"label":"date1","pattern":"","type":"string"}, 
     {"label":"count","pattern":"","type":"number"} 
    ], 
    "rows":'.json_encode($rows).'}'; 
0

$sqlが空の場合は、$timeが空であることを意味します。あなたは値が何であるかをチェックしようとしましたか? $time=$_POST['tar'];は、フォームからnullを返している可能性があります。

関連する問題