#php #mysql #forms #insert
#php #mysql #формы #вставить
Вопрос:
Я искал ответ на этот вопрос около часа и не могу найти то, что ищу…
У меня есть 3 зависимых поля выбора в форме ВСТАВКИ. (drop_1, drop_2, drop_3) Каждое из их значений (int) представляет одно и то же поле в вызываемой базе category
данных.
Я ищу способ выбрать только наибольшее значение из трех в качестве значения, которое вставляется в category
поле.
Вот что я пытался (очевидно, не работает):
$drop_1 = ($_POST['drop_1']);
$drop_2 = ($_POST['drop_2']);
$drop_3 = ($_POST['drop_3']);
$category = max($drop_1, $drop_2, $drop_3);
Это работает, только если я выбираю вариант из каждого из 3 полей, но если я выбираю вариант только из 1 или 2 полей, форма отправляется в БД с пустыми значениями.
Комментарии:
1. можете ли вы показать html этой формы.
2. Пожалуйста, покажите форму, чтобы мы могли видеть варианты выбора значений.
3. возможна SQL-инъекция. Вы должны научиться использовать
mysql_real_escape_string()
перед вставкой в запрос.4. В моем скрипте обработки форм я очищаю $ category с помощью: $category = mysql_real_escape_string(htmlentities($category)); Эффективно ли это или мне следует очистить переменные $ drop_x и $ category?
Ответ №1:
ваш php кажется прекрасным:
<?php
$_POST['drop_1'] = 100;
$_POST['drop_2'] = null;
$drop_1 = ($_POST['drop_1']);
$drop_2 = ($_POST['drop_2']);
$drop_3 = ($_POST['drop_3']);
$category = max($drop_1, $drop_2, $drop_3);
echo $category;
выводил бы:
100
итак, проблема с формой.
Ответ №2:
$drop_1 = mysql_real_escape_string($_POST['drop_1']);
$drop_2 = mysql_real_escape_string($_POST['drop_2']);
$drop_3 = mysql_real_escape_string($_POST['drop_3']);
$query = "INSERT INTO table1 (category)
SELECT GREATEST('$drop_1', '$drop_2', '$drop_3') as new_cat ";