Объединить значения флажка с помощью php mysql

У меня около 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).