2011-12-31 2 views
0

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

$_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"> 
+0

Почему вы используете переменную 'SESSION', чтобы сделать это ? А что такое '$ _POST ['statuses']'? Разве это значение «один к одному»? –

+0

Это форма из 5 страниц, поэтому я использую сеансы. $ _POST [ 'статусы']; для флажков. – AAA

+0

Итак, это часть волшебника. Является ли 'name =" statuses [] "' Это значение, которое вы пытаетесь вставить собственно строку или какой-либо другой тип значения (массив и т. Д.)? –

ответ

5

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

<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 super.

Если вы:

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. 
+0

ok one thign, когда я использую var_dump, значения отображаются на следующей странице. любой способ предотвратить отображение шляпы пользователю. – AAA

+0

«var_dump» выводит значения для вас. Это используется для целей отладки. Просто удалите строку var_dump, и все будет в порядке. – F21

+0

ОК одна проблема, если я выбираю все варианты, есть бит 20, тогда он дает мне ошибку проверки синтаксиса, но я не могу найти что-то неправильно. – AAA

1

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

function validateCheckBox($name) { 
    if (isset($_POST[$name]) && !empty($_POST[$name]) && $_POST[$name] === 'on') { 
     return 1; 
    }else{ 
     return 0; 
    } 
} 
-1

Не знаю, если вы только что ввели эту игру, или вы понятия не имею, что там

$_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'); 
+0

Его правильно в вопросе, в ответе F21 его неправильно. Комментируя ответ, вместо ответа на новый ответ будет правильным. – Lauri

Смежные вопросы