PHP Как вставить несколько значений флажка в базу данных - PullRequest
0 голосов
/ 30 мая 2018

ОБНОВЛЕНИЕ - Проблема была решена из-за ошибки опечатки в $ param_keyword

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

После нажатия кнопки отправки я печатаю ключевое словоArr, чтобы увидеть значения:

вспомогательные, химические и опасные материалы Что-то пошло не так.Повторите попытку позже.

PHP-запрос

<?php
require_once("includes/dbConfig.php");

// get input when form is submitted, using the clean functon to clean inputs
if ($_SERVER["REQUEST_METHOD"] == "POST") {

//name validation
if (empty(clean($_POST["name"]))) {
    $nameErr = "Name is required";
} else {
    $name = clean($_POST["name"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/", $name)) {
        $nameErr = "Only letters and white space allowed";
    }
}

$keyword = $_POST["keyword"];
echo $keywordArr = implode(",", $keyword);

// check input erros before inserting in database
if (empty($nameErr)) {

    // Prepare a INSERT statement
    $sql = "INSERT INTO site (name,keyword) VALUES (?,?)";

    if ($stmt = mysqli_prepare($conn, $sql)) {
        // Bind variables to the prepared statement as parameters
        mysqli_stmt_bind_param($stmt, "ss", $param_name, $param_keyword);

        // Set parameters
        //$param_id = $id;
        $param_name = $name;
        $parm_keyword = $keywordArr;

        if (mysqli_stmt_execute($stmt)) {

            // Alert to redirect
            echo ("<SCRIPT LANGUAGE='JavaScript'>
                    window.alert('Successfully Sent!')
                    window.location.href='index.php';
                    </SCRIPT>");
        } else {
            echo "Something went wrong. Please try again later.";
        }
    }
    // Close statement
    mysqli_stmt_close($stmt);
    }
    // Close connection
    mysqli_close($conn);
}
?>

HTML-форма

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheck1" 
value="housekeeping" name="keyword[]">
<label class="custom-control-label" for="customCheck1">Housekeeping</label>
</div>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheck2" 
value="procedure" name="keyword[]">
<label class="custom-control-label" for="customCheck2">Procedure (PTW,JSA, 
Inspection)</label>
</div>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheck3" 
value="chemical and dangerous material" name="keyword[]">
<label class="custom-control-label" for="customCheck3">Chemical & Dangerous 
Material</label>
</div>      
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheck4" 
value="confined space" name="keyword[]">
<label class="custom-control-label" for="customCheck4">Confined 
Space</label>
</div>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheck5" 
value="scaffolding" name="keyword[]">
<label class="custom-control-label" for="customCheck5">Scaffolding</label>
</div>
<input type="submit" name="submit" value="Submit">
</form>

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Я буду удалять этот пост, так как здесь была опечаткав базу данных работает хорошо

0 голосов
/ 30 мая 2018

Имена флажков могут отличаться, так как они не являются переключателями для каждого тега ввода. Затем в вашем PHP-файле получите каждое значение, используя $ _POST ["keyword1"], $ _ POST ["keyword2"] и т. Д.затем проверьте, выбран ли он с помощью следующего кода

If($_POST["keyword1"]=='on'){
// Your Code
}

Аналогичным образом установите флажок для каждого флажка, создайте нужную строку и вставьте ее в БД.

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