Вопрос № 48609: Хотелось бы услышать как можно больше мнений и комментариев ибо ищу истину:
Задача: На сайте есть анкета из 10 полей, одно из полей - цвет, которое выбирается из значений таблицы color.
Данные анкеты сохраняются в таблицу data. Необходим...
Вопрос № 48.609
Хотелось бы услышать как можно больше мнений и комментариев ибо ищу истину:
Задача: На сайте есть анкета из 10 полей, одно из полей - цвет, которое выбирается из значений таблицы color.
Данные анкеты сохраняются в таблицу data. Необходимо чтобы: пользователь не мог ввести цвет, которого нет в таблице.
По сути это проблема создания связей в PHP+MySQL.
Важно: Это надо реализовать как можно более БЕЗОПАСНО и РАЦИОНАЛЬНО (т.е. важно качество, а не просто работает/неработает).
Вопрос родился после посещения сайта phpclub и статьи про организацию связей, они предлагают делать связывание на PHP,
а не SQL, что помоему неправильно.
Отправлен: 09.07.2006, 14:15
Вопрос задал: NiGHT (статус: Студент)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, NiGHT!
А в чем сложность то? Заносите все цвета из таблицы в контейнер SELECT и пользователь сможет выбрать только эти значения цвета.
Пример:
<?php
if (isset($_POST["color"])) {echo 'Выбранный цвет - '.$_POST["color"];}
?>
<form action="1.php" method=post>
<select name="color">
<?php
$link = mysql_connect("HOST", "LOGIN", "PASSWORD");
mysql_select_db("DATABASE_NAME");
$query = "SELECT * FROM `color` ORDER BY `color` ASC";
$result = mysql_query($query);
for ($i=0; $i
{
echo '';
}
?>
</select>
<input type=submit value="Заполнить анкету">
</form>
Удачи!
--------- Ответы на все вопросы - на сайте www.ya.ru ☺
Отвечает: Алексей Смуриков
Здравствуйте, NiGHT!
Хотелось бы добавить ещё одну вещь - также можно в целях обеспечения безопасности поставить проверку уже при приёме анкеты цвета на присутствии его в таблице color:
$query = "SELECT * FROM `color` WHERE color = 'color'";
$result = mysql_query($query);
--------- Speccy Rulezz!!!
Ответ отправил: Алексей Смуриков (статус: Практикант)
Ответ отправлен: 09.07.2006, 18:40 Оценка за ответ: 5
Отвечает: PVS
Здравствуйте, NiGHT!
Поле для которого есть базовая таблица правильно было бы сделать выпадающим списком, потому что если вы оставите его просто текстом, то не сможете проконтролировать что ввел пользователь, и соответственно придется делать какую-то обработку неправильного ввода (возврат назад, и т.д.)
Ответ отправил: PVS (статус: 8-ой класс)
Ответ отправлен: 10.07.2006, 10:40 Оценка за ответ: 5