Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с передачей условия методом GET
 
 автор: Владимир22   (08.07.2006 в 23:44)   письмо автору
 
 

Есть форма поиска по базе и вывод результатов. При постраничной навигации данные, заданные пользователем передаются методом GET, например
http://site.php?page=2&city=$city.

Если запрос к базе идёт такой, как выше, то всё просто. Но как быть с таким запросом:
...where sity !=""(т.е. любой город - если ячейка не пустая, то выводить)

КАК МОЖНО ПЕРЕДАТЬ ТАКОЕ УСЛОВИЕ С ПОМОЩЬЮ GET??
http://site.ru/poisk.php?page=2&city!=""
- так не перадаётся.
Если ли какой способ через GET передать, что city=любая НЕПУСТАЯ ячейка?

   
 
 автор: cyberface   (09.07.2006 в 01:20)   письмо автору
 
   для: Владимир22   (08.07.2006 в 23:44)
 

Зачем это? Нельзя ли просто сделать так:
http://site.ru/poisk.php?page=2&city=notempty
?

   
 
 автор: Владимир22   (09.07.2006 в 03:56)   письмо автору
 
   для: cyberface   (09.07.2006 в 01:20)
 

Так почему-то не хочет: со второй страницы навигации показывает всё подряд, т.е. базе данных не передаётся нужное значение.
Пробовал также: http://site.ru/poisk.php?page=2&city=true
НЕ РАБОТАЕТ, увы.... Если чётко задать параметр, типа, city=Kursk, всё выполняется правильно...

   
 
 автор: hell_riser   (09.07.2006 в 06:13)   письмо автору
 
   для: Владимир22   (08.07.2006 в 23:44)
 

А тек не пробывали?

http://site.ru/poisk.php?page=2&city!="<?php echo"NOT NULL"?>"

   
 
 автор: Владимир22   (09.07.2006 в 14:07)   письмо автору
 
   для: hell_riser   (09.07.2006 в 06:13)
 

Всё равно не работает....
И ещё, если кто знает.
Вот запрос к базе
$sql = "SELECT * FROM table WHERE artist LIKE 'Madonna'";

Как при постраничной навигации можно указать через GET 'artist LIKE Madonna' ?

   
 
 автор: cheops   (09.07.2006 в 22:14)   письмо автору
 
   для: Владимир22   (09.07.2006 в 14:07)
 

А погодите... вы по городу ищите или по чему-то другому - какие поля у вас участвуют в поиске?

   
 
 автор: Владимир22   (10.07.2006 в 05:36)   письмо автору
 
   для: cheops   (09.07.2006 в 22:14)
 

Да нет, с Мадонной это уже второй пример, а с полями вроде всё нормально, проблема описана чуть ниже....

   
 
 автор: valenok   (09.07.2006 в 22:44)   письмо автору
 
   для: Владимир22   (09.07.2006 в 14:07)
 

/index.php?artist=madonna

index.php
--
if(!in_array($_GET['artist'],$artists)){die('ВОН!!');}

   
 
 автор: valenok   (09.07.2006 в 22:47)   письмо автору
 
   для: Владимир22   (08.07.2006 в 23:44)
 

http://site.ru/poisk.php?page=2&city=all

if($_GET['city']=='all'){$city='IS NOT NULL';}
else{$city="='".$_GET['city']."'";}
SELECT * FROM table WHERE city $city

не забывайте про безопасность

   
 
 автор: Владимир22   (10.07.2006 в 05:34)   письмо автору
 
   для: valenok   (09.07.2006 в 22:47)
 

Так всё дело в том, что данные на на основную страницу (poisk.php) попадают методом POST, а при постраничной навигации передаются методом GET.
Вот кусок кода:

<?
......... // пропущено то, что к делу не относится
if ($city == "Все города")
$poisk "where city != '*'";  $u_city ="&city=$city"; } 
else 
$poisk="where city='$city'"$u_city="&city=$city"; }

if (
$artist) {$poisk1 "&& artist='$artist'"$u_artist="&artist=$artist";} else {$poisk1=""$u_artist="";}

$result=mysql_query("select * from list $poisk $poisk2 order by 'date' desc");
...
?>

Пояснения:
$u_city и $u_artist - это то, что при постраничной навигации (там код стандартный) добавляется к Url - http://site.ru/poisk.php?page=<?=$numer?><?$=u_city?><?$u_artist?>

Т.о. получаетя, что $result при переходе на новую страницу вывода получает данные из GET и исходя из них опять строит запрос (т.е такое себе кольцо).
Всё работет нормально, если запрос простой (то-то равно тому-то), проблема в том, что я не знаю как через GET в моём случае передать, например эквивалент: artist!=''" (т.е. любая НЕПУСТАЯ ячейка) или artist LIKE "такой-то". Как это можно передать через GET?

   
 
 автор: valenok   (10.07.2006 в 10:17)   письмо автору
 
   для: Владимир22   (10.07.2006 в 05:34)
 

$u_artist="&artist=all";

if ($artist) {
if($artist=='all'){$poisk1 = "&& artist!=''";}else{$poisk1 = "&& artist='$artist'";}
$u_artist="&artist=$artist";} else {$poisk1=""; $u_artist="";}

   
 
 автор: cheops   (10.07.2006 в 11:33)   письмо автору
 
   для: Владимир22   (08.07.2006 в 23:44)
 

Хм... просто введите какое-нибудь специальное обозначаение вроде !not_empty и проверяйте каждый раз не равен ли параметр этому значению, вряд ли встретится город с таким названием...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования