Искать  
 
   
1 из 2
1
Сложный поиск
Отправлено: 27 Апрель 2009 02:34 P.M.   [ Игнорировать ]
Member
Avatar
RankRankRank
Всего сообщений:  363
Зарегистрирован  2009-01-02

Всем привет.
У меня достаточно сложный вопрос:
Есть сайт про недвижимость, туда добавляются каталог домов. Есть несколько полей:
1). Район
2). Комплекс
3). Номер дома

Так вот, при добавлении получается страница типа такого вида:

———-
Район: Новый город
Комплекс: 26
Дом: 12
———-.

Нужно на главной странице сделать так, чтобы с помощью форм выберались уже вписанные туда комплекса, районы и т.д., и искались по “базе данных” эти самые дома.

Внимание на скриншот.

P.S. Требуется срочно! Спасибо заранее

Приложения с изображениями
search_vopr.gif
 Подпись 

Я в космосе

Профиль
 
 
Отправлено: 27 Апрель 2009 02:40 P.M.   [ Игнорировать ]   [ # 1 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

Есть решение, думаю подойдет. Если никто раньше не ответит, то отпишу вечером.

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 27 Апрель 2009 02:47 P.M.   [ Игнорировать ]   [ # 2 ]
Member
Avatar
RankRankRank
Всего сообщений:  363
Зарегистрирован  2009-01-02

Отлично smile жду вечера)

 Подпись 

Я в космосе

Профиль
 
 
Отправлено: 27 Апрель 2009 05:45 P.M.   [ Игнорировать ]   [ # 3 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

Итак, у тебя есть настраиваемые поля (custom fields)
1). Район
2). Комплекс
3). Номер дома

Все это заполняется по мере наполнения сайта.

Чтобы организовать поиск в соответствии с данными параметрами, необходимо в шаблоне организовать вывод данных. Для этого делаем следующую форму

<form action="/site/seek/" method="post">
<
p><label for="rayon">Район:</label><br/>
<
select id="rayon" name="rayon">
<
option selected="selected" value="">Любой</option>
{exp:query sql="SELECT DISTINCT(field_id_26) as 'rayon' from exp_weblog_data where weblog_id=15"}
        
<option value="{rayon}">{rayon}</option>
{/exp:query}
</select>

Также проделываем с остальными полями Комплекс (допустим complexи Номер дома (допустим nomer)

<
class="bottom"><input style="height:50px" type="submit" name="submit" value="Искать!" /></p>
</
form

Как можно понять,
field_id_26 - 26 это id твоего поля Район.
weblog_id=15 - номер веблога
/site/seek/ - здесь у нас будет проводиться выборка.

Далее  создаем шаблон seek и разрешаем php на input.

В нем прописываем (я прописываю в самом верху)

<?php
$rayon
$_POST['rayon'];
$complex$_POST['complex'];
$nomer$_POST['complex'];
?>
здесь же присываю имена этим переменным
чтобы все выглядело красиво

{assign_variable
:moy_rayon="<?php print $rayon; ?>"
{assign_variable
:moy_complex="<?php print $complex; ?>"
{assign_variable
:moy_nomer="<?php print $nomer; ?>"


Далее, параметрах веблога используем параметр search:

{exp:weblog:entries weblog="weblog" search:field_rayon="{rayon}" search:field_complex="{complex}" search:field_nomer="{nomer}" limit="20" disable="member_data|trackbacks"}

....

{/exp:weblog:entries} 

где field_rayon, field_complex и field_nomer - это твои настраиваемые поля custom fields.

В общем все основное сказал, пробуйте и все получится =)

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 27 Апрель 2009 08:30 P.M.   [ Игнорировать ]   [ # 4 ]
Member
Avatar
RankRankRank
Всего сообщений:  153
Зарегистрирован  2008-08-19
mrtt - 27 Апрель 2009 05:45 P.M.
<?php
$rayon
$_POST['rayon'];
$complex$_POST['complex'];
$nomer$_POST['complex'];
?>
здесь же присываю имена этим переменным
чтобы все выглядело красиво

{assign_variable
:moy_rayon="<?php print $rayon; ?>"
{assign_variable
:moy_complex="<?php print $complex; ?>"
{assign_variable
:moy_nomer="<?php print $nomer; ?>"

а шоб еще красивее, можно так:  cheese

{assign_variable:moy_rayon="<?=$_POST['rayon']?>"
{assign_variable
:moy_complex="<?=$_POST['complex']?>"
{assign_variable
:moy_nomer="<?=$_POST['nomer']?>"

ЗЫ: зачем копировать переменные? $rayon, $complex, $nomer память только хавать будут  LOL

Профиль
 
 
Отправлено: 03 Май 2009 09:46 P.M.   [ Игнорировать ]   [ # 5 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

Кстати у данного решения замечен недостаток. В случае, если выводимых записей много, то необходимо включать нумерацию. Но при переходе на вторую и далее страницы, параметры поиска теряются и выводится обычная вторая страница, без сортировки по параметрам.

Кто сталкивался с этим, что подскажете?

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 04 Май 2009 08:43 A.M.   [ Игнорировать ]   [ # 6 ]
Member
Avatar
RankRankRank
Всего сообщений:  154
Зарегистрирован  2008-05-06

mrtt, данные из $_POST сохраняешь в сессию, и далее используешь данные $_SESSION
Кстати правильно использовать $IN->GBL(‘rayon’, ‘POST’). Помогает от инъекций wink

 Подпись 

http://www.intoEEtive.com

Профиль
 
 
Отправлено: 06 Май 2009 01:35 P.M.   [ Игнорировать ]   [ # 7 ]
Member
Avatar
RankRankRank
Всего сообщений:  363
Зарегистрирован  2009-01-02

mrtt, спасибо.
В общем сделал так:

В шаблоне с каталогом квартир ниже таблицы прописал:

<form action="{homepage}/ned/seek/" method="post">

<
p><label for="gorod">Город:</label><br/>
<
select id="gorod" name="rayon">
<
option selected="selected" value="">Любой</option>
{exp:query sql="SELECT DISTINCT(field_id_16) as 'gorod' from exp_weblog_data where weblog_id=7"}
        
<option value="{gorod}">{gorod}</option>
{/exp:query}
</select>

<
p><label for="rayon">Район:</label><br/>
<
select id="rayon" name="rayon">
<
option selected="selected" value="">Любой</option>
{exp:query sql="SELECT DISTINCT(field_id_23) as 'rayon' from exp_weblog_data where weblog_id=7"}
        
<option value="{rayon}">{rayon}</option>
{/exp:query}
</select>

<
p><label for="chislo_komnat">Кол-во комнат:</label><br/>
<
select id="chislo_komnat" name="chislo_komnat">
<
option selected="selected" value="">Любой</option>
{exp:query sql="SELECT DISTINCT(field_id_11) as 'chislo_komnat' from exp_weblog_data where weblog_id=7"}
        
<option value="{chislo_komnat}">{chislo_komnat}</option>
{/exp:query}
</select>

<
class="bottom"><input style="height:50px" type="submit" name="submit" value="Искать!" /></p>
</
form

Выборка из данных идет отлично. Вообще для наглядности: вот эта страница

Создал шаблон seek, туда прописал:

<?php
$rayon
$_POST['rayon'];
$gorod$_POST['gorod'];
$chislo_komnat$_POST['chislo_komnat'];
?>

{assign_variable
:moy_rayon="<?php print $rayon; ?>"
{assign_variable
:moy_gorod="<?php print $gorod; ?>"
{assign_variable
:moy_chislo_komnat="<?php print $chislo_komnat; ?>"}  

{exp
:search:search_results limit="1"}
{gorod}
{
/exp:search:search_results} 

Нажимаю на ИСКАТЬ-открывается сообщение, что ничего не находит. Плиз, подскажите, что нетак? Могу дать доступ к админке сайта.

 Подпись 

Я в космосе

Профиль
 
 
Отправлено: 06 Май 2009 01:54 P.M.   [ Игнорировать ]   [ # 8 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

PHP на Input?

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 06 Май 2009 02:13 P.M.   [ Игнорировать ]   [ # 9 ]
Member
Avatar
RankRankRank
Всего сообщений:  363
Зарегистрирован  2009-01-02

Да. Вот так делаю
Скрин

 Подпись 

Я в космосе

Профиль
 
 
Отправлено: 06 Май 2009 02:16 P.M.   [ Игнорировать ]   [ # 10 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

скинь доступ в личку

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 06 Май 2009 07:55 P.M.   [ Игнорировать ]   [ # 11 ]
Member
Avatar
RankRankRank
Всего сообщений:  363
Зарегистрирован  2009-01-02

Спасибо за помощь. дело было в неправильном написании переменных

 Подпись 

Я в космосе

Профиль
 
 
Отправлено: 18 Май 2010 02:33 P.M.   [ Игнорировать ]   [ # 12 ]
Новичок
Rank
Всего сообщений:  9
Зарегистрирован  2010-05-11

Что делаю не так?
есть в шаблоне форма с полем “culture”
отправляется шаблону “results” с включенным пхп и парсингом на входе.
в results пишу так:
<?php
global $IN;
$culture = $IN->GBL(‘culture’, ‘POST’);
?>
Культура: <?php $culture ?>

и выводится только “Культура:”.... вроде все правильно пишу?

Профиль
 
 
Отправлено: 24 Май 2010 09:23 P.M.   [ Игнорировать ]   [ # 13 ]
Новичок
Rank
Всего сообщений:  9
Зарегистрирован  2010-05-11

с проблемой в прошлом посте разобрался, была в форме тупейшая опечатка, и данные из-за нее передавались методом get, а не post.

Сейчас всплыла другая проблема: постраничный вывод.
При переходе на вторую страницу, все параметры из ссылки пропадают, и как их там сохранять?

Профиль
 
 
Отправлено: 24 Май 2010 09:27 P.M.   [ Игнорировать ]   [ # 14 ]
Sr. Member
RankRankRankRank
Всего сообщений:  987
Зарегистрирован  2008-09-27

Я обычно тут поступаю так. На входе получаю все данные формы. Потом запросом собируаю именно entry_id записей, которые мне подходят. Записываю из в сессию (тут кому как удобней).
И просто вывожу стандартно

weblog:entries entry_id="<?php echo $my_var_from_session;?>" 

А от туда уже испоользую стандартные средства постраничного вывода

Профиль
 
 
Отправлено: 24 Май 2010 09:39 P.M.   [ Игнорировать ]   [ # 15 ]
Новичок
Rank
Всего сообщений:  9
Зарегистрирован  2010-05-11

с помощью этого плагина? http://www.ee-addons.com/products/Session-Variables-Plugin.html
или есть встроенные функции?

Профиль
 
 
   
1 из 2
1