Есть ли способ заставить форму выбора ничего не делать, когда она пуста? - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь создать форму выбора, которая отправляется в базу данных, но проблема в том, что, если выбор не выбран, он все равно отправит пустое значение в базу данных. Есть ли способ игнорировать пустую форму выбора, когда она пуста при нажатии кнопки отправки или при перезагрузке страницы?

Вот код, над которым я работал

<?php
//DB Connection
    $mysqli = new MySQLi('localhost','root','','mrbs');
    $resultSet = $mysqli->query("SELECT * FROM mrbs_users");

    //White board Current PIC
    $wb_current_pic = $mysqli->query("SELECT * FROM mrbs_room_pic WHERE id='1'");
    $wb_search_pic = $wb_current_pic->fetch_assoc();
    $wb_pic = $wb_search_pic['name'];
?>

<form action="" method="post">  
        <div>
            White Board (Current PIC : <?php echo("$wb_pic");?>) 
            <div>
                <select name="white_board">
                    <?php
                        //echo "<option value=''>--set---</option>";
                        echo "<option value='' disabled selected>---set---</option>";
                        while($rows = $resultSet->fetch_assoc()){
                            $username = $rows['name'];
                            $user_email = $rows['email'];
                            echo "<option value='$user_email $username'>$username</option>";
                        }
                    ?>
                </select><br>
            </div>
        </div>
        <input type="submit" name="button" value="Submit"/>
    </form>
<?php
    $wb_str = $_POST['white_board'];

    //string processing
    $wb_arr =  explode(" ",$wb_str);
    $wb_pic_email = $wb_arr['0'];
    $wb_pic_name = $wb_arr['1'];

    echo '<b>The PIC Adresses:</b>' .'<br>' .
    $wb_pic_email . "   " .$wb_pic_name .'<br>';

    //UPDATE DB
    $ex_query_wb = "UPDATE mrbs_room_pic SET name = '$wb_pic_name', email = '$wb_pic_email' WHERE id ='1'";
    mysqli_query($mysqli,$ex_query_wb);
?>

Исходя из кода, я сделал что-то не так? Или есть лучший способ сделать это?

1 Ответ

2 голосов
/ 28 февраля 2020

Вы должны заключить запрос к базе данных в пункт, который проверяет, что строки не пусты, например,

// Use trim to remove any whitespace
if (trim($_POST['white_board']) === '') {
    // Tell the user to check their data
} else {    
    // Do query...
}

В соответствующей заметке я бы также предложил рассмотреть санацию и проверку пользовательского ввода, и также рассмотрите возможность использования PDO вместо mysqli_query, поскольку это обеспечивает лучшую защиту от SQL инъекций. Ваш запрос чрезвычайно уязвим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...