Форма вставки MYSQL — вставить 1 из 3 возможных вариантов из зависимых полей выбора

#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 ";