Публикация формы с необязательными и обязательными полями

Как я могу добавить в базу данных информацию из формы, если у меня есть обязательные и необязательные поля? До сих пор я только сделал несколько вложений, но во всех этих случаях вся информация всегда присутствовала. В этом случае я делаю контактную форму, где имя, фамилия и номер мобильного телефона являются обязательными, а все остальные являются необязательными.

Также информация человека (имя, фамилия, псевдоним) переходит в таблицу, а номера (домашний, рабочий, факс, сотовый и т. Д.) Переходят в другую таблицу.

Пример (другого приложения), который я использовал для POST:

jQuery (Ajax)

$("#btnAceptar").click(function() { var codigolab = $('#txtNumLab').val(), capacidad = $('#txtCapacidad').val(), carrera = $('#txtCarrera').val(), ubicacion = $('#txtUbicacion').val(); var request = $.ajax({ url: "includes/functionsLabs.php", type: "post", data: { 'call': 'addLab', 'pCodigoLab':codigolab, 'pCapacidad':capacidad, 'pCarrera':carrera, 'pUbicacion':ubicacion}, dataType: 'html', success: function(response){ $('#info').html(response); } }); }); 

PHP Я использую в этом примере для добавления в базу данных

 function addLab(){ if(isset($_POST['pCodigoLab']) && isset($_POST['pCapacidad']) && isset($_POST['pCarrera']) && isset ($_POST['pUbicacion'])){ $codigolab = $_POST['pCodigoLab']; $capacidad = $_POST['pCapacidad']; $carrera = $_POST['pCarrera']; $ubicacion = $_POST['pUbicacion']; $query = "INSERT INTO labs VALUES" . "('null', '$codigolab', '$capacidad', '$carrera','$ubicacion', '1')"; $result = do_query($query); echo "<p>¡El laboratorio ha sido añadido exitosamente!</p>"; } 

}

В этом случае, когда я делаю некоторые поля обязательными, а другие не нужно вставлять в разные таблицы, чтобы добавить другую вставку в этот запрос, я просто использую И или что-то в этом роде?

Также, если пользователь ничего не вводит в некоторых полях, я оставляю необязательные поля из инструкций isset? Как объявить эти переменные, если я не могу быть уверен, что они будут использоваться?

Извините, если я немного усложняюсь, я немного смущен, и английский не является моим основным языком.

Заранее спасибо.

FIDDLE действительного кода:

Нажатие кнопки Guardar отображает поля, которые являются обязательными, остальные являются необязательными.

благодаря

Solutions Collecting From Web of "Публикация формы с необязательными и обязательными полями"

Предположим, у меня есть name поля, email , note где требуются первые 2, а последний – нет.

Вот один из способов сделать это:

 <?php $error = array(); if (!isset($_POST['name'])) { $error[] = "The field name was not filled!"; } if (!isset($_POST['email'])) { $error[] = "The field email was not filled!"; } if (sizeof($error) == 0) { // insert the data $query = sprintf("INSERT INTO users VALUES ('%s', '%s', '%s')", mysql_real_escape_string($_POST['name']), mysql_real_escape_string($_POST['email']), mysql_real_escape_string((isset($_POST['note']) ? $_POST['note'] : ''))); $result = do_query($query); echo "<p>¡El laboratorio ha sido añadido exitosamente!</p>"; } else { // print the error foreach ($error as $msg) { echo $msg, "<br>\n"; } } 

В качестве note я использовал тройной оператор:

 isset($_POST['note']) ? $_POST['note'] : '' 

Что по существу является одним лайнером if / else, который мог бы быть написан как:

 if (isset($_POST['note'])) { $note = $_POST['note']; } else { $note = ''; } 

Также убедитесь, что вы дезинфицируете свои данные в своем случае с помощью mysql_real_escape_string чтобы предотвратить SQL Injection.

Один из способов сделать это может быть (я не эксперт на PHP, поэтому другие могут иметь лучшее решение):

 $codigolab = isset($_POST['pCodigoLab']) ? "'" . $_POST['pCodigoLab'] . "'" : NULL; $capacidad = isset($_POST['pCapacidad']) ? "'" . $_POST['pCapacidad'] . "'" : NULL; $carrera = isset($_POST['pCarrera']) ? "'" . $_POST['pCarrera'] . "'" : NULL; $ubicacion = isset($_POST['pUbicacion']) ? "'" . $_POST['pUbicacion'] . "'" : NULL; 

Это означало бы, что вам нужно будет удалить одинарные кавычки из вашего SQL.

Одно предупреждение: со своим SQL, пожалуйста, загляните в подготовленные заявления. Как и было, было бы легко отправить pUbicacion = " – '); DELETE labs; – " (или что-то подобное.) Это позволит человеку использовать SQL-инъекцию и либо изменять, либо удалять ваши данные.

Изменить: Добавить ссылку на страницу mysqli_prepare PHP : PHP :: mysqli :: подготовить