помогите с выводом данных

gleb-khil

Полезный
Регистрация
6 Окт 2015
Сообщения
208
Реакции
18
Есть сайт speak.od.ua. На сайте пользователи создают топики и распределяют их в свой район города. На сайте есть выбор района города, соответственно при выборе определенного района города - появляются топики от людей, указавшие этот район. Как сделать что б при выборе района "все районы" показывало все сообщения. Так как при первом входе на сайт - сайт показывает все сообщения, а потом при выборе района уже это сделать не получается. Вот код модуля с выбором района:

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Frontend_Cities extends Controller_Frontend_System_Template {

public function action_form() {
$this->template = View::factory('frontend/v_cities_form');

$this->template->city_id = $this->city_id;
$this->template->cities = ORM::factory('cities')->find_all();
}

public function action_applycity() {
$new_city_id = Input:: post('city_id');
$returnUrl = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : NULL;

if(ORM::factory('cities')->where('id', '=', $new_city_id)->count_all()) {
Cookie::set('city_id', $new_city_id);
}

if(!$returnUrl) {
$returnUrl = '/';
}

$this->request->redirect($returnUrl, 301);
}

}
 
Последнее редактирование:
Не там роете. У вас тут нет Селекта топиков. Смотрите запрос на выборку топиков, и конкретно что там передается для фильтрации районов.
 
попробуйте переделать этот кусок:
PHP:
if(ORM::factory('cities')->where('id', '=', $new_city_id)->count_all()) {
  Cookie::set('city_id', $new_city_id);
}
вот таким образом:
PHP:
if (empty($new_city_id)) {
  unset($_COOKIE['city_id']);  // удаление куки с id города
} else {
  if(ORM::factory('cities')->where('id', '=', $new_city_id)->count_all()) {
    Cookie::set('city_id', $new_city_id);
  }
}
хотя я не уверен... мне тоже кажется, что это не то место, где нужно менять...
 
Последнее редактирование:
спасибо, буду дома и попробую
не поможет.
ваша структура:
id | name | bla | blabla
1 | region1 | ... | ...
2 | region2 | ... | ...
3 | region3 | ... | ...
Вы выбираете:
Код:
where('id', '=', $new_city_id)
При выборе Всех регионов id то какой?
Надо условие это отключать.
Ну или менять в зависимости от доп. условий. Например:
Код:
where('id', '!=', '0')
 
не поможет.
ваша структура:
id | name | bla | blabla
1 | region1 | ... | ...
2 | region2 | ... | ...
3 | region3 | ... | ...
Вы выбираете:
Код:
where('id', '=', $new_city_id)
При выборе Всех регионов id то какой?
Надо условие это отключать.
Ну или менять в зависимости от доп. условий. Например:
Код:
where('id', '!=', '0')
всех регионов как таковых нет, вместо них проставлено "выбрать район города" . Но в базе данных при создании темы вводится к теме id региона, в котором это создавалось
 
всех регионов как таковых нет, вместо них проставлено "выбрать район города" . Но в базе данных при создании темы вводится к теме id региона, в котором это создавалось
Я имею ввиду что при первом запросе у вам нет id района, поэтому вываливаются все топики. Потом в устанавливаете куки с id района. А потом вы пытаетесь найти в базе несуществующий id (всех районов) и после этого снова установить куки. Но этого не происходит, т.к. такого района с таким id нет. Условие
Код:
if(ORM::factory('cities')->where('id', '=', $new_city_id)->count_all())
не выполняется.
$new_city_id у вас равно "id всех районо", а его не существует.
Сделайте вот так:
PHP:
if(ORM::factory('cities')->where('id', '=', $new_city_id)->count_all()) {
Cookie::set('city_id', $new_city_id);
}
echo"<pre>";print_r('id=$new_city_id');echo"</pre>";
и увидите где затык
 
Назад
Сверху