RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 399
от 15.07.2006, 00:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 321, Экспертов: 45
В номере:Вопросов: 1, Ответов: 3


Вопрос № 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
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 09.07.2006, 14:48

Отвечает: Алексей Смуриков
Здравствуйте, 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное