2013-01-10 2 views
0

Кажется, что это должно быть легко, но я искал и не могу понять, как это понять. Я использую PHP для обновления базы данных MySQL, которая устанавливает несколько полей в виде логических ключей. Триггер на сайте - это флажок. Когда пользователь проверяет флажок, значение устанавливается равным 1, при снятии флажка значение равно нулю. Проблема в том, что когда я отправляю форму, база данных обновляется отлично, когда установлен флажок, однако он не будет обновлять значение поля до нуля, он просто игнорирует его. Я повторил значение, когда не установлен, чтобы проверить, действительно ли переменная установлена ​​в ноль. Я нахожу подобные проблемы, когда пытаюсь очистить текстовое поле и ничего не отправлять. MySQL просто игнорирует его и не очищает поле. Я что-то упускаю?Как хранить ноль в MySQL

Вот пример кода, я использую:

<?php 
if ($_POST) { 
    if (isset($_POST['box1'])) { 
     $box1 = $_POST['box1']; 
    } 
    else { 
     $box1 = 0; 
    } 
    $query = "UPDATE table SET box1 = '{$box1}'"; 
    $result = mysqli_query($dbc, $query); 
} 
    ?> 

<form method="post" action=""> 
    <input type="checkbox" name="box1"> Box 1 
</form> 
+2

Что результат 'эхо $ запроса;'? – Kermit

+7

Вы уверены, что не пропустили 'WHERE'? – Kermit

+1

Где атрибут 'value' в вашем флажке? –

ответ

0

<input type="checkbox" name="box1">

Должно быть

<input type="checkbox" name="box1" value="1">

Тип данных для box1 в базе данных должна быть INT поэтому даже если его не установить на 0, он по-прежнему будет сохранять d с 0, потому что вы просто ничего не можете хранить в поле с INT в качестве типа данных.

+0

Это не отвечает на вопрос. OP утверждает, что его флажок имеет значение 1. Его логика объявляет '0' для пустого поля. – Kermit

+0

Я предоставляю ответ, который работает. OP сказал: Когда пользователь проверяет флажок, значение устанавливается равным 1, если не отмечен, значение равно – SeanWM

+0

Вы пропустили комментарий от OP выше? «извините, я забыл включить value =« 1 »в исходный код флажка« – Kermit

0

На данный момент, если в массиве не передается никакого значения, никаких действий не происходит.

Рассмотрим следующее ...

... 
$box1=0; 

if ($_POST) { 
    if (isset($_POST['box1'])) { 
     $box1 = $_POST['box1']; 
    } 
} 
    $query = "UPDATE boxtest SET box1 = $box1"; 
    $result = mysqli_query($dbc,$query); 
    ?> 

<form method="post" action=""/> 
    <input type="checkbox" name="box1" value="1"/> Box 1 
    <input type="submit"/> 
</form> 

или (как на мой предыдущий комментарий)

<input type="hidden" name="box1" value="0" /> 
<input type="checkbox" name="box1" value="1"/> 
Смежные вопросы