Только генерировать диаграмму, если переменная 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(...);
}
Другие вопросы по тегам