У меня около 20 флажков в моей форме как
<input type="checkbox" name="c1" value="1" /> <input type="checkbox" name="c2" value="2" /> <input type="checkbox" name="c3" value="3" /> <input type="checkbox" name="c4" value="4" />
Я бы хотел, чтобы эти значения были в базе данных. Я просто подумал, а не создал 20 полей в моей базе данных, захватив все значения в хранилище в db как 1,2,3,4, а затем при запросе, чтобы взорвать значения и отобразить их соответственно с помощью php.
может кто-то, пожалуйста, скажите мне, как я должен конкатенировать значения 1,2,3,4 из полей проверки при отправке, чтобы я мог перейти в базу данных.
я был бы признателен, если бы кто-нибудь мог предложить другой эффективный способ достичь этого, используя php.
Вы можете изменить имя флажков на одно и то же, что-то вроде
<input type="checkbox" name="cb[]" value="1" /> <input type="checkbox" name="cb[]" value="2" />
Затем используйте их через $_GET
или $_POST
через
if (isset($_POST['cb'])) { $my_values = implode(",", $_POST['cb']); }
Если вы хотите, чтобы они отсортировались, вам нужно сделать что-то вроде этого:
if (isset($_POST['cb'])) { $my_values = $_POST['cb']; sort($my_values); $my_db_value = implode(',', $my_values); }
Для записи я согласен с @Shef в том случае, если база данных может обрабатывать дополнительную нагрузку. Однако, в зависимости от того, когда эта информация понадобится для решения с высокой масштабируемостью, это вполне приемлемый способ справиться с этим.
Чтобы ответить на ваш первоначальный вопрос, сначала вам нужно будет назвать свои одноименные флажки так, чтобы:
<input type="checkbox" name="box[]" value="1" /> .... <input type="checkbox" name="box[]" value="20" />
PHP-скрипт:
$boxes = $_POST['box']; $values = implode(",", $boxes); // $values now has "1,2,3,4...", insert into table
Лучшим способом было бы иметь отдельную таблицу (см. Комментарий @Shef).