За последние 24 часа нас посетили 22729 программистов и 1012 роботов. Сейчас ищут 806 программистов ...

$_GET / Определение что извлекать из БД по URL

Тема в разделе "PHP для новичков", создана пользователем q0b3rMAN, 6 дек 2012.

  1. q0b3rMAN

    q0b3rMAN Активный пользователь

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    Вот такая вот проблема, помогите кто чем может :)
    Есть код:
    Код (Text):
    1.  
    2. if (mysql_connect($mysql['host'], $mysql['name'], $mysql['password'])) {
    3.             if (mysql_select_db($mysql['base'])) {
    4.    
    5.                 $query = "  SELECT `id_object`
    6.                             FROM `photos` as `P`, `objects` as `O`
    7.                             WHERE `O`.`category` = 1
    8.                             AND   `O`.`id` = `P`.`id_object`";
    9.                 $items = mysql_query($query);
    10.                 while ($items_res = mysql_fetch_array($items)) {
    11.                     $photos[$items_res[0]] = $items_res[0];
    12.                 }
    13.                
    14.                 $city_url = $_GET['city'];
    15.                
    16.                 if ($city_url == "")
    17.                 {
    18.                 $query = "  SELECT `id`, `type`, `rooms`, `city`, `address`, `mycity`, `floor`, `number_of_storeys`, `type_of_house`,
    19.                                     `gross_area`, `living_space`, `kitchen_area`, `loggia_balcony`, `cost`
    20.                             FROM `objects`
    21.                             WHERE `category` = 1 and `status` = 1 and 3";
    22.                 }  
    23.  
    24.                 if ($city_url)
    25.                 {
    26.                 $query = "  SELECT `id`, `type`, `rooms`, `city`, `address`, `mycity`, `floor`, `number_of_storeys`, `type_of_house`,
    27.                                     `gross_area`, `living_space`, `kitchen_area`, `loggia_balcony`, `cost`
    28.                             FROM `objects`
    29.                             WHERE `category` = 1 and `mycity` = '$city_url' and `status` = 1 and 3";
    30.                             echo "$city_url";
    31.                 }  
    32.                
    33.  
    34. .................................................
    В общем смысл в том что нужно выводить делать MySQL запрос по определенному запросу URL.
    К примеру если у меня в адресной строке так: page?city=Владивосток, то выводятся обьявления по Владивостоку.

    Если page?city=Москва , то по Москве. Тоесть обрабатывает:
    Код (Text):
    1.  
    2.  
    3. if ($city_url)
    4.                 {
    5.                 $query = "  SELECT `id`, `type`, `rooms`, `city`, `address`, `mycity`, `floor`, `number_of_storeys`, `type_of_house`,
    6.                                     `gross_area`, `living_space`, `kitchen_area`, `loggia_balcony`, `cost`
    7.                             FROM `objects`
    8.                             WHERE `category` = 1 and `mycity` = '$city_url' and `status` = 1 and 3";
    9.                             echo "$city_url";
    10.                 }  
    Конкретней определение города идет тут:
    Код (Text):
    1.  
    2. WHERE `category` = 1 and `mycity` = '$city_url' and `status` = 1 and 3";
    Тоесть выбирается только города с названием полученного из URL.
    Но почему то, они не выводятся.

    Данные передаются успешно, все проходит. Обьявления есть с такими городами.
    Что это может быть? Может это как то связанно с кодировкой? Из за того что города Русские?

    Заранее спасибо за ответы.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    С кодировкой тоже может быть связано, но для начала надо отбросить соменения в правильности кода:
    Для начала надо включить вывод всех ошибок и предупреждений.
    Код (PHP):
    1. ini_set('display_errors', 'on');
    2.  
    Запрос выдает пустой результат или обламывается по ошибке? Это надо знать наверняка.
    Код (PHP):
    1. if (!$items) {
    2.     die('Неверный запрос: ' . mysql_error());
    3. }
    4.  
    Временно вставь вывод текста готового запроса, скопируй и попробуй его выполнить в phpmyadmin. Каков результат?
     
  3. q0b3rMAN

    q0b3rMAN Активный пользователь

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    Код (Text):
    1. error_reporting(-1);
    2. ini_set('display_errors', 'on');
    Говорит что:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /hsphere/local/home/deffa/allter.leader-host.ru/sale_vtor.php on line 227

    Но там на 227 идет уже вывод всей таблицы.
    Код (Text):
    1.  
    2.  
    3. $items = mysql_query($query);
    4.                 while ($items_res = mysql_fetch_array($items)) {
    5.                     $html = '<tr>';
    6.                         $html .= '<td class="td_10">'. $items_res['id'] .'</a></td>';
    7.                         if (isset($photos[ $items_res['id'] ])) {
    8.                             $html .= '<td class="td_10"> <span class="hotspot" onmouseover="tooltip.show('; $html .= " '<strong>У обьекта есть фотографии</strong><br>Щелкните по адресу что-бы посмотреть профиль.' "; $html .= ');" onmouseout="tooltip.hide();"> <img src="images/foto_camera.png" width="18" height="17"></span></td>';
    9.                         } else {
    10.                             $html .= '<td class="td_10">&nbsp;</td>';
    11.                         }
    12.                         $html .= '<td class="td_10">'. $items_res['type'] .'</td>';
    13.                         $html .= '<td class="td_10">'. $items_res['rooms'] .'</td>';
    14.  
    15. // и т.д.
    Код (Text):
    1. if (!$items) {
    2.     die('Неверный запрос: ' . mysql_error());
    3. }
    Ничего не отобразил

    Запрос в PhpMyADMIN
    Код (Text):
    1.  
    2. SELECT `id`, `type`, `rooms`, `city`, `address`, `mycity`, `floor`, `number_of_storeys`, `type_of_house`,
    3.                                     `gross_area`, `living_space`, `kitchen_area`, `loggia_balcony`, `cost`
    4.                             FROM `objects`
    5.                             WHERE `category` = 1 and `mycity` = 'Владивосток' and `status` = 1 and 3
    Отабразил данные без проблем.

    Фишка в том, что был до этого выпадающий HTML список с кнопочкой, и он работал без проблем. Тоесть передавались данные в запрос и все отображалось. Теперь нужна перейти в ?city=город...
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    supplied argument is not a valid MySQL result resource
    значит query не выполнился из-за ошибки.
    это не очень сочетается с тем, что ты пишел дальше. здесь конечно не видно именно у тебя строка 227 ))) видимо if (!$items) стоит совсем в другом месте, иначе было бы описание проблемы