Только генерировать диаграмму, если переменная PHP имеет значение
Я использую php & Charts.js для создания диаграммы данных на основе HTML <select>
Моя проблема в том, что даже если ничего не выбрано из HTML <select>
в нижней части страницы отображается пустой график, а не echo
утверждение в моем else {}
блок.
Как мне переписать этот синтаксис так, чтобы диаграмма создавалась ТОЛЬКО ЕСЛИ сделан выбор из 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>
2 ответа
Вам нужно добавить if statement
с empty()
функция. Так что если if statement
будет проверять $whatsalesprsn
переменная, если пусто или нет с помощью empty()
функция
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]);
}
Где-то вы должны звонить new Chart(...)
, Если вы сделаете это, не передавая действительные данные, тогда Chart.js создаст пустой график (так как вы это и сказали).
Если у вас нет действительных данных (т.е. ничего не выбрано в <select>
элемент), не создавайте экземпляры Chart.js. Что-то вроде:
if (data.length) {
new Chart(...);
}