Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   запрос в MySQL из PHP с условием. что-то не так делаю (http://forum.oszone.net/showthread.php?t=69511)

koresaram 07-08-2006 13:48 469097

запрос в MySQL из PHP с условием. что-то не так делаю
 
PHP код:

$minsquare_values=$HTTP_GET_VARS['minsquare']; 

if (
$minsquare_values=="") {$square_query="WHERE field7 >= '0'";} 

else { 
$square_query="WHERE field7 >= '$minsquare_values'"


print 
"$square_query"// это для проверки чего поступает на выход 
$result mysql_query("SELECT * FROM realty $square_query") or die ("не сработало" .mysql_error()); 

при запуске скрипт выдает
WHERE field7 >= '0' (это результат строки print "$square_query"; // это для проверки чего поступает на выход )

и выводит всю таблицу базы целиком. причем независимо от того заполнено поле minsquare в форме или нет. что я не так делаю?

XCodeR 07-08-2006 14:33 469130

koresaram
1. тема создана не в том разделе форума.(см. раздел "Вебмастеру")
2.
Цитата:

$square_query="WHERE field7 >= '0'";
зачем ноль заключен в кавычки?... у field7 тип не числовой?
3. приведите код формы, которая обрабатывается этим скриптом. возможно причина в ней.
каким методом отправляются данные. Вы точно уверены, что GET?

koresaram 07-08-2006 14:52 469145

числовой вроде. там только цифры вбиты. целиком это выглядит так:

PHP код:

сама форма:
<
form name='realtyform' action='realty.php' method=get
<
table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1"
  <
tr
    <
td width="50%"
    <
select size=9 name=direction[] multiple
<
option value=Север>Север</option
<
option value=Северо-Восток>Северо-Восток</option
<
option value=Восток>Восток</option>"; 
<option value=Юго-Восток>Юго-Восток</option> 
<option value=Юг>Юг</option> 
<option value=Юго-Запад>Юго-Запад</option> 
<option value=Запад>Запад</option> 
<option value=Северо-Запад>Северо-Запад</option> 
<option value=Центр>Центр</option> 
</select> 
     </td> 
    <td width="
50%"> 
    <select name=dogovor> 
    <option value="
аренда" checked>Аренда</option> 
    <option value="
продажа">Продажа</option> 
    </select> <br> 
    Площадь: от <input type=text name=minsquare value=""> до <input type=text name="
maxsquare"><br> 
    Цена: от <input type=text name="
minprice" value=""> до <input type=text name="maxprice"> 
    </td> 
  </tr> 
  <tr> 
    <td width="
100%" colspan="2"><INPUT TYPE=Submit VALUE=Искать style=font-size: 8pt>&nbsp;<input type=reset value=Сброс style=font-size: 8pt></td> 
  </tr> 
</table>
-------- конец формы-----------
скрипт:

$direction_values=$HTTP_GET_VARS['direction']; 
$dogovor_values=$HTTP_GET_VARS['dogovor']; 
$minsquare_values=$HTTP_GET_VARS['minsquare']; 
$maxsquare_values=$HTTP_GET_VARS['maxsquare']; 
$minprice_values=$HTTP_GET_VARS['minprice']; 
$maxprice_values=$HTTP_GET_VARS['maxprice']; 
for ($i = 0; $i <= 9; $i++) { 

print "
$direction_values[$i]&nbsp;"; 
}; 

if ($minsquare_values=="") {$square_query="WHERE field7 >= '0'";} 

else { 
$square_query="
WHERE field7 >= '$minsquare_values'"; 


print "
$square_query"; 
print "
$dogovor_values $minsquare_values $maxsquare_values $minprice_values $maxprice_values"; 
print "
<table width='100%' border=1><tr><td>Лот</td><td>Направление</td><td>Договор</td><td>Мин./Максцена</td><td>Мин./Максплощадь</td></tr>"; 

$result = mysql_query("
SELECT FROM realty $square_query") or die ("не сработало" .mysql_error()); 

в итоге: если не заполнять никакие поля в форме а играть только с полем minsquare то в запрос идет WHERE field7 >= '0' и выводит всю таблицу базы целиком независимо от того заполнено поле в форме или нет.
если заполнить и другие поля в форме то тогда в запрос идет WHERE field7 >= 'значение введенное в форму' но выводит опять таки всю базу целиком не руководствуясь заданным условием.


XCodeR 07-08-2006 15:12 469157

1. если формат поля field7 числовой, то кавычки не нужны.
уберите их и ограничение должно заработать
2. я сейчас больше ошибок не вижу, может быть кто-то(кхм-кхм, Влад...)) увидит, почему если заполнить только одно поле minsquare, а остальные не трогать, то заполненное значение не передается в переменную $HTTP_GET_VARS['minsquare'];
(я правельно понял проблему?)

Vlad Drakula 07-08-2006 15:24 469160

koresaram
Цитата:

koresaram
1. тема создана не в том разделе форума.(см. раздел "Вебмастеру")
koresaram
блин... отличный скрипт для взлома базы данных вашего сервера...
вам обязательно нужно почить статьи о создании защищенных от взлома системм, а то в поле minprice_values можно записать почти любой кусок SQL кода...

koresaram 07-08-2006 15:42 469185

Цитата:

1. если формат поля field7 числовой, то кавычки не нужны.
уберите их и ограничение должно заработать
PHP код:

if ($minsquare_values=="") {$square_query="WHERE field7 >= 0";}

else {
$square_query="WHERE field7 >= $minsquare_values";


заменил блок условия. не работает. все опять так как описано :(
да, проблема понята верно - при незаполнении других полей вбитое значение не передается скрипту. дальше я так понимаю будет следующая проблема - не будет срабатывать условие. потому как если все заполнить то в запрос идет нужное, но выбирает всю базу. а в условии фигурирует только поле minsquare и больше ничего...


Цитата:

блин... отличный скрипт для взлома базы данных вашего сервера...
вам обязательно нужно почить статьи о создании защищенных от взлома системм, а то в поле minprice_values можно записать почти любой кусок SQL кода...
там ломать нечего :) там нету ничего только вот эта пробная база и все :) я б почитал только боюсь что не пойму нифига - раз и два как бы это все заставить работать а? :)

koresaram 07-08-2006 16:27 469207

тьфу (много мата) работает тама блин все. это я в другую графу смотрел и подставлял в форму числа которые были заведомо меньше значений в базе (перепутал с ценой там числа на порядок меньше) поэтому он мне и выдавал всю базу что все объекты подходили по условию :) поехал я дальше условия составлять, а про безопасность мы еще поговорим :)

archy 09-08-2006 14:49 470054

XCodeR
mysql нормализует параметры в запросе автоматически. Для него нет разницы, в кавычках или без них вы обращаетесь к числовому полю.


Время: 15:36.

Время: 15:36.
© OSzone.net 2001-