Мне нужно создать форму, в которой есть много одинаковых полей, которые должны быть вставлены в базу данных, но проблема заключается в том, что если пользователь заполняет только одну или две строки, форма по-прежнему будет отправлять пустую данные пустых полей вместе с одним или двумя полями, которые пользователь заполнил.
Как я могу проверить строки, которые не были заполнены, и оставить их вне запроса? или проверить те, которые были заполнены, и добавить их в запрос. , ,
Файл thank_you.php будет захватывать переменные $ _POST и добавлять их в базу данных.
<form method="post" action="thank_you.php"> Name: <input type="text" size="28" name="name1" /> E-mail: <input type="text" size="28" name="email1" /> <br /> Name: <input type="text" size="28" name="name2" /> E-mail: <input type="text" size="28" name="email2" /> <br /> Name: <input type="text" size="28" name="name3" /> E-mail: <input type="text" size="28" name="email3" /> <br /> Name: <input type="text" size="28" name="name4" /> E-mail: <input type="text" size="28" name="email4" /> <input type="image" src="images/btn_s.jpg" /> </form>
Я предполагаю, что я мог бы использовать javascript или jQuery для этого, как бы я это сделал?
Заранее спасибо за помощь.
Как говорили другие, это плохая практика полагаться на javascript как на вашу единственную форму проверки. Посмотрите на javascript как способ помочь вашим пользователям отправлять достоверные данные, но вы всегда должны проверять их на стороне сервера. Имея это в виду, вот мое предложение:
<form method="post" action="thank_you.php"> Name: <input type="text" size="28" name="name1" /> E-mail: <input type="text" size="28" name="email1" /> <br /> Name: <input type="text" size="28" name="name2" /> E-mail: <input type="text" size="28" name="email2" /> <br /> Name: <input type="text" size="28" name="name3" /> E-mail: <input type="text" size="28" name="email3" /> <br /> Name: <input type="text" size="28" name="name4" /> E-mail: <input type="text" size="28" name="email4" /> <input type="image" src="images/btn_s.jpg" /> </form> <?php $num = 4; //Number of times the field is repeated for($i = 1; $i <= $num; $i++){ if($_POST['name'.$i] != '' && $_POST['email'.$i] !=''){ //Only process if name and email are not blank $thisname = $_POST['name'.$i]; $thisemail = $_POST['email'.$i]; //Your code here } } ?>
Хорошо использовать javascript для проверки формы, но вы не должны полагаться на него. Первое, что нужно сделать, это проверить значения в $ _POST в PHP и убедиться, что они что-то действительно выглядят (или, по крайней мере, проверяют, что они не являются ").
Чтобы проверить с помощью javascript, вы должны поместить onSubmit = "…" в тег формы, который возвращает false, если данные формы недействительны (что означает «не отправлять форму»). Возможно, вам также понадобится предупреждение, или вы можете каким-либо образом изменить страницу, чтобы указать на проблему. Я не собираюсь выписывать скрипт проверки формы для вас.
Вы можете выполнить проверку JavaScript с помощью кнопки отправки, чтобы вызвать функцию JavaScript вместо отправки формы. Если данные передают ваши критерии проверки, функция JavaScript может затем отправить данные. Однако вы не должны полностью полагаться на проверку JavaScript. Если у пользователя отключен JavaScript, их данные не будут проверены, поэтому ваше приложение PHP должно быть достаточно прочным для обработки пустых данных. Тем не менее, это не просто пустые данные. Вам необходимо проверить вход пользователя для мусора и дезинформировать данные перед его использованием в базе данных.
Я не знаю точного синтаксиса PHP, но я напишу какой-нибудь псевдокод, который должен сделать трюк. Основная идея заключается в том, что когда вы извлекаете значения $ _POST, вам нужно создать новый хеш, который имеет приемлемые значения, а затем вы можете передать этот хэш любым методам, необходимым для создания запросов или чего-то еще. То, как я это сделаю, – полностью удалить недопустимые значения из хэша, так что, похоже, они никогда не были там. Очевидно, вы можете сделать это по-другому (отметьте их как недопустимые и т. Д.).
$cleaned_args = array(); foreach ($_POST as $key => $value) { if ($_POST[$key] != "" && is_valid_email($_POST[$key])) { $cleaned_args[$key] = $_POST[$key]; } make_db_call_or_whatever($cleaned_args);
где is_valid_email
– это метод, который, возможно, имеет PHP, или вам нужно писать. Вы можете даже обобщить предложение if в is_valid($_POST[arg])
если хотите, но это зависит от того, насколько сложна ситуация.
Надеюсь, это поможет вам понять, как это сделать. Я думаю, что это будет проще, чем динамическое удаление входов с JavaScript перед отправкой формы, и, как уже упоминалось, будет более безопасным, чем выполнение этого только на стороне клиента.