Как я могу сохранить 4 переключателя с 4 цветами в базе данных? - PullRequest
0 голосов
/ 22 января 2019

У меня есть 4 переключателя, и у них есть 1 цвет, когда пользователь выбирает переключатель с цветом, который он отображает в ячейке таблицы. Когда пользователь нажимает кнопку «Отправить», он сохраняет информацию в моей базе данных, поэтому у пользователя могут быть те же параметры, когда они возвращаются на веб-сайт.

Я удалил детали подключения к базе данных, чтобы вы знали.

Я не могу понять, что я сделал неправильно.

$first = $_POST['white'];
$first = $_POST['red'];
$first = $_POST['orange'];
$first = $_POST['green'];

$sql = "INSERT INTO savecolor (white, red, orange, green) VALUES ('$first')";

Я мог все испортить. Я действительно не знаю. ^^

<form action="include/dbh.inc.php" method="post">
<table id="table">
    <tr>
            <td>
                <div class="white">
                    <input type="radio" name="first" value="white" onclick="setBgColor(this)" checked>
                    </div>
                <div class="red">
                    <input type="radio" name="first" value="red" onclick="setBgColor(this)">
                    </div>
                <div class="orange">
                    <input type="radio" name="first" value="orange" onclick="setBgColor(this)">
                </div>
                <div class="green">
                    <input type="radio" name="first" value="green" onclick="setBgColor(this)"> 
                </div>
            <br>
            This is a text.
</td>

php код

<?php

$dbServername = "";
$dbUsername = "";
$dbPassword = "";
$dbName = "";

   $conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);

if(!$conn){
echo 'Not Connected To Server';
}

$first = $_POST['white'];
$first = $_POST['red'];
$first = $_POST['orange'];
$first = $_POST['green'];

$sql = "INSERT INTO savecolor (white, red, orange, green) VALUES('$first')";

if(!mysqli_query($conn,$sql))
{
echo 'Not Inserted';
}
else
{
 echo 'Inserted';
}
?> 

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Для получения значения вам необходимо использовать атрибут имени ввода.

И вы должны использовать mysqli_real_escape_string для безопасности. mysqli_real_escape_string

$first = mysqli_real_escape_string($conn, $_POST['first']);

//Not $first = $_POST['first']
//Or not $first = $_POST['white'];

Теперь вам нужно вставить это в вашу базу данных. Ваша база данных должна содержать только выбранный цвет.

Вам не нужны такие столбцы, как красный, белый, оранжевый, зеленый

Вам просто нужен столбец, такой как user_color

После перестройки вашей базы данных давайте вставим ее.

$query = mysqli_query($conn, "INSERT INTO savecolor (user_color) VALUES ('$first')");
//Check it
if ($query) {
   echo 'Inserted';
} else {
   echo 'Not Inserted';
}

Примечание:

Вы должны проверить сообщение раньше всего.

<?php
if (empty($_POST)) {
    //There is no post so exit.
    exit(0);
}
....
0 голосов
/ 22 января 2019

Обратите внимание на предупреждение об SQL-инъекциях в комментариях.Узнайте, как использовать подготовленные операторы и сделать это привычкой.

В запросе $sql = "INSERT INTO savecolor (white, red, orange, green) VALUES('$first')"; он пытается заполнить 4 столбца, но предоставляет только одно значение.

Возможно, вы захотите изменить макет таблицы savecolor, чтобы она содержала только одну переменную colorchoice или что-то в этом роде.Тогда вам нужно будет только вставить $_POST['first'] в эту таблицу (после изменения запроса на использование подготовленных операторов :)).

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