Как отправить непроверенное значение флажка, которое не равно 0 / false или 1 / true, но целые числа от 1 до 32

#javascript #php #arrays #smarty

#javascript #php #массивы #smarty

Вопрос:

У меня есть массив флажков с некоторыми дополнительными столбцами. Когда установлен флажок, его значение добавляется в таблицу MySQL. Значения от 1 до 32.

Когда один из них непроверен, мне нужно отправить MySQL те же данные и с ОБНОВЛЕНИЕМ ДУБЛИРУЮЩЕГО КЛЮЧА, просто чтобы обновить остальные столбцы, если они изменены.

В данном случае я хочу отправлять не 0 или 1, а значение от 1 до 32.

 <input type="checkbox" name="add_value[]" id="add-value" value="{$values.id_value}"/><p>{$values.name} </p>
  

Комментарии:

1. Если флажок установлен, то при отправке формы value атрибут определяет, что будет отправлено на сервер. Если флажок не установлен, то ничего не публикуется. Что именно вы хотите использовать по-другому?

2. Да, но тогда MySQL не обновляется. Или как я могу принудительно обновить его?

3. Затем выполните SQL-запрос, чтобы обновить его, если ваш флажок не установлен. Используйте ISSET для проверки. Если они не установят флажок, он не будет установлен, вы можете использовать тернарный оператор для публикации вашего значения

Ответ №1:

Способ сделать это похож:

 <input type="checkbox" name="1bit" />
<input type="checkbox" name="2bit" />
<input type="checkbox" name="4bit" />
<input type="checkbox" name="8bit" />
<input type="checkbox" name="16bit" />
  

Затем в вашем приемнике, что-то вроде

 <?php
$num = 0;
if ($_REQUEST["2bit"]===1) $num  = 1;
if ($_REQUEST["4bit"]===1) $num  = 2;
...

?>
  

Затем вы можете отправить $ num в свою базу данных. Вам также следует добавить проверки, чтобы убедиться, что имена ваших полей (1 бит, 2 бита и т.д.) Существуют в массиве $_REQUEST

Комментарии:

1. Интересно, протестирую это и сообщу, что это сработало.

Ответ №2:

Развивая мой комментарий к тому, что он спрашивает, вы можете сделать что-то вроде этого:

 $checkBoxValue = (ISSET($_POST['name']) ? 1 : 0;
  

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

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

Или даже еще один вариант, вы можете сделать что-то вроде этого:

 <form action="" method="post">
<input type="checkbox" id="status_1" name="status_1" value="1" />
<input type="checkbox" id="status_2" name="status_2" value="1" />
<input type="checkbox" id="status_3" name="status_3" value="1" />
<input type="submit" />
</form>    
<?php
    for($i = 1; $i<=count($_POST); $i  ) {
        $_POST["status_$i"] = isset($_POST["status_$i"]) ? $_POST["status_$i"] : 0;
    }
    var_dump($_POST);
  

Комментарии:

1. Другой вариант заключается в том, что вы можете создать скрытые, если вам нужно, чтобы они содержали определенное значение, и если оно не отмечено, а скрытые существуют, тогда у вас есть ваше значение.

2. Мне не нужно добавлять 0 или 1 в базу данных, но целые числа от 0 до 32. Проверенные и отправленные флажки добавляются в базу данных, но когда флажок снят, это не так. Мне просто нужно отправить их, чтобы база данных могла быть обновлена некоторой другой информацией, зависящей от этого столбца.

3. Если это все, что вам нужно сделать, то здесь у вас есть вся необходимая информация для этого. Проявите творческий подход к тому, что я вам предоставил.

4. Спасибо, Тим, буду экспериментировать и отчитываться!