Вставка записей флажков в базу данных - PullRequest
0 голосов
/ 31 декабря 2011

У меня есть флажки с именами статусов.Вот как я это делаю:

   $_SESSION['statuses'] = mysql_real_escape_string($_POST['statuses']);

Когда я вставляю это, я делаю это так:

   $insert = "INSERT INTO submitted (statuses) 
   VALUES ('".$_SESSION['statuses']."')";

   $query = mysql_query($insert) or die ("Error: ".mysql_error());

Проблема в том, что проверяемое ничего не вставляется в базу данных,Итак, как мне вставить отмеченные записи?

NEW / UPDATE:

Вот так выглядит форма флажка:

                    <input type="checkbox" name="statuses" value="something">
        <input type="checkbox" name="statuses" value="something">
        <input type="checkbox" name="statuses" value="something">
        <input type="checkbox" name="statuses" value="something">
        <input type="checkbox" name="statuses" value="something">
        <input type="checkbox" name="statuses" value="something">

Ответы [ 3 ]

5 голосов
/ 31 декабря 2011

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

<form action="checkbox-form.php" method="post">
Select your options<br />
<input type="checkbox" name="options[]" value="A" />A<br />
<input type="checkbox" name="options[]" value="B" />B<br />
<input type="checkbox" name="options[]" value="C" />C<br />
<input type="submit" name="formSubmit" value="Submit" />
</form>

Обратите внимание, что options установлено как options[]. Это позволяет массиву всех отмеченных опций появляться в вашей супер-переменной POST.

Если вы делаете:

var_dump($_POST['options']);

Затем вы должны получить массив, содержащий все проверенные значения.

Тогда вы можете сделать что-то вроде:

foreach($_POST['options'] as &$option){
   mysql_real_escape_string($option);
}

Затем вставьте в базу данных:

   $insert = "INSERT INTO submitted (statuses)       
   VALUES ('". implode(",", $_POST['options']) ."')";      

   $query = mysql_query($insert) or die ("Error: ".mysql_error());

Обновление: На каждой странице формы у вас должно быть что-то вроде экранирования значений и сохранение его в сеансе. Затем сохраняются значения с каждой страницы в сеансе пользователя:

//Page 1
foreach($_POST['options'] as $option){
     $_SESSION['options'][] = mysql_real_escape_string($option);
}

//page 2
$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_POST['SOME_OTHER_VALUE_FROM_TEXT_BOX');

//Final page:
//Everything is now stored in SESSION, so you can use them there:
//For example, display the value of options:
var_dump($_SESSION['options']); //etc

//So here, you would just run your sql queries to insert the appropriate data into your databse.
1 голос
/ 31 декабря 2011

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

function validateCheckBox($name) {
    if (isset($_POST[$name]) && !empty($_POST[$name]) && $_POST[$name] === 'on') {
        return 1;
    }else{
        return 0;
    }
}
0 голосов
/ 29 марта 2012

Понятия не имею, если вы только что набрали это, или вы не знаете, что это там

$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_PSOT['SOME_OTHER_VALUE_FROM_TEXT_BOX');

должно быть

$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_POST['SOME_OTHER_VALUE_FROM_TEXT_BOX');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...