Цитата:
Если вы не проверив, что прислал клиент, подставите его данные в запрос, то вашу базу могу и взломать, так как вы ожидали что там 5, а к ней еще добавят запрос. Цитата:
if($id = (int)имя_переменной) { теперь $id можно подставлять в запрос так как это число и не равно 0 } Ищите в руководстве раздел работы с переменными, где описана и функция проверки переменной является ли она числом или строкой, содержащей число - is_numeric. Также в РНР достаточный набор фильтров для проверки данных. Я вам не могу написать примеров хотя бы потому, что вы их вставите в свое, а в итоге не получится. Примеры использования той или иной РНР функции смотрите в разделе ее описания, есть там и примеры. Все потому, что нужно не просто проверять число/не число, но еще и отдавать клиенту сообщения об ошибках, то есть прием формы от клиента, это есть диалог клиент -> сервер -> клиент. Вы что хотите чтобы я вам полный скрипт всего и вся написал? Я не буду. Ищите здесь, в сети подобные вопросы, скрипты, изучайте и применяйте у себя познанное. Это не раздел РНР, серверным скриптам на этом форуме посвящен другой раздел и писать тут много о проблемах на сервере не стоит. В данном разделе можно было бы вести диалог о клиентской части вашего кода. А она никуда не годится - много лишнего. |
:lol:
Я привел к integer, подставил id в запрос и получил...снова число)) Может что-то не так с самим запросом? Потому что таблица имеет вид : city_id region_id name |
Dan922,
Как и говорил laimas Цитата:
Цитата:
|
да удалил уже, ересь написал :(
вроде понимаю что к чему, а как правильно записать хз. |
if($city_id = (int)$_POST['city_id']) { $city = mysql_query("SELECT name FROM city WHERE city_id=city_id" . $post['city_id']); } |
Цитата:
Считаем, что города всех регионов и содержатся в этой таблице, а значит city_id, это уникальное значение принадлежащее только одному городу. Следовательно, если запросить значение поля name для city_id равное 200, то вернется название именно этого города, а не другого, но с условием, что в этой таблице город с идентификатором 200 есть. В противном случае запрос вернет NULL. Будем считать, что входные данные обработаны и их можно подставлять в запрос, условно назовем эту обработанную переменную ID города полученную из формы как $id (ID региона в запросе указывать не надо, потому, что все города в этой таблице, читайте выше), тогда нужно выполнить такие действие: $q = mysql_query('SELECT `name` FROM `city` WHERE `city_id` = ' . $id); //проверяем вернул ли что-то запрос, если вернул, значит такой город в базе есть if(mysql_num_rows($q)) { //получить название города $name = mysql_fetch_row($q); //в тело почты подставляем "..... \nИз города: $name[0] ....."; } else { //запрос ничего не вернул, значит, хотя данные это число, но под таким идентификатором в базе города нет //а это означает, что подстава, принять действия } |
Все круто:)
Только почему он мне первую букву города вернул? :D |
Я слишком тупой, чтобы достать название города самостоятельно. :(
Да и вообще , скорее всего, изначально неправильно привел к integer , возможно ошибки в запросе. |
Смотрю в учебнике работу с формами.
Там приводится к integer. Написал примерно так же у себя. Но я так и не понял как вытащить строки из дскриптора. |
Цитата:
|
Часовой пояс GMT +3, время: 15:04. |