Как я могу добавить в базу данных информацию из формы, если у меня есть обязательные и необязательные поля? До сих пор я только сделал несколько вложений, но во всех этих случаях вся информация всегда присутствовала. В этом случае я делаю контактную форму, где имя, фамилия и номер мобильного телефона являются обязательными, а все остальные являются необязательными.
Также информация человека (имя, фамилия, псевдоним) переходит в таблицу, а номера (домашний, рабочий, факс, сотовый и т. Д.) Переходят в другую таблицу.
Пример (другого приложения), который я использовал для 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 отображает поля, которые являются обязательными, остальные являются необязательными.
благодаря
Предположим, у меня есть 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 :: подготовить