#php #forms #validation #checkbox
Вопрос:
Я использую «reusableforms.com» PHP-скрипт формы. Форма работает хорошо. Но я получил ошибку при значениях флажков с несколькими вводами.
Как я могу получить значения флажка с несколькими вводами?
HTML-код:
lt;div class="form-box"gt; lt;labelgt;Choose which of the following are most important to you:lt;/labelgt; lt;div class="multi-select"gt; lt;div class="custom-select"gt; lt;input type="checkbox" id="hight-rating" value="High Rating" name="important" hiddengt; lt;label for="hight-rating"gt;High Ratinglt;/labelgt; lt;/divgt; lt;div class="custom-select"gt; lt;input type="checkbox" id="mobile-phone-app" value="Mobile phone app" name="important" hiddengt; lt;label for="mobile-phone-app"gt;Mobile phone applt;/labelgt; lt;/divgt; lt;div class="custom-select"gt; lt;input type="checkbox" id="vendor-management" value="Vendor management" name="important" hiddengt; lt;label for="vendor-management"gt;Vendor managementlt;/labelgt; lt;/divgt; lt;/divgt; lt;/divgt;
handler.php
lt;?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); require_once './vendor/autoload.php'; use FormGuideHandlxFormHandler; $pp = new FormHandler(); $validator = $pp-gt;getValidator(); $validator-gt;fields(['name','email', 'phone', 'address', 'property', 'following', 'units', 'date'])-gt;areRequired()-gt;maxLength(50); $validator-gt;field('important[]')-gt;maxLength(5000); $validator-gt;field('email')-gt;isEmail(); $pp-gt;sendEmailTo('xxx@gmail.com'); // ← Your email here echo $pp-gt;process($_POST); ?gt;
Спасибо.
Комментарии:
1. я) я думаю, что вы должны использовать имя «важно» как «важно[]» в html, чтобы получить несколько данных. ii) я не уверен в инструменте «ФормХандлер». Но максимальная длина применима для данных строкового типа, и там вы получаете тип массива. а также для проверки вы можете попробовать имя как «важный» или «важный[индекс]». ** я не уверен, какой инструмент вы используете для обработки формы. это просто моя мысль, когда я смотрю на код
2. Используйте важный[] в html, а также в обработчике форм
Ответ №1:
В соответствии с вашим вопросом вы не указываете флажки в виде массивов, которые вам понадобятся для:
lt;input type="checkbox" id="hight-rating" value="High Rating" name="important[]" hiddengt;
Но если это не поможет, то было бы полезно немного подробнее проработать этот вопрос.
Ответ №2:
использование в html
lt;input type="checkbox" id="mobile-phone-app" value="Mobile phone app" name="important[]" hiddengt;
в php вы будете получать данные в массиве, поэтому вы можете использовать счетчик, а не максимальную длину
$important = $_GET['important']; $count = count($important);
Ответ №3:
Мы можем получить данные формы с помощью функций добавления jQuery.
$("#reused_form").submit(function (e) { e.preventDefault(); $form = $(this); var formdata = new FormData(this); var valuesArray = $('[name=important]:checked').map( function() { return this.value; }).get().join(", "); formdata.append( 'important', valuesArray ); $.ajax({ type: "POST", url: "form/handler.php", data: formdata, success: after_form_submitted, dataType: "json", processData: false, contentType: false, cache: false, }); });