Выборка по переменной (метро)

Тема в разделе "NetCat", создана пользователем Brain, 8 дек 2008.

Статус темы:
Закрыта.
  1. Brain

    Brain

    Регистр.:
    29 мар 2007
    Сообщения:
    164
    Симпатии:
    36
    Отцы, такой вопрос. Как сделана выборка по метро на главной clubsaun.ru и banisauni.ru? На главной – список саун, у каждой сауны есть поле "Метро: Метро1, Метро2", например "Метро: Савеловская , Дмитровская". Метро1 и Метро2 – ссылки вида, например, http://www.banisauni.ru/?sel_metro=130, кликая по ней происходит выборка саун по этому метро. Вопрос такой, как сделать такую же выборку?
    Создал список названий метро (с названием "metro") создал 2 переменные metro1 и metro2 тип "Список" формат "metro", а вот что прописать в самом шаблоне? :confused:
    NetCat 3.1 Corporate
     
  2. fuck0ff

    fuck0ff Постоялец

    Регистр.:
    2 сен 2007
    Сообщения:
    92
    Симпатии:
    50
    это легко делаеться через поиск в массиве srchPat[], как это делать написано в руководстве разработчика ст. 67.. и ничего другого больше не нужно
     
  3. Brain

    Brain

    Регистр.:
    29 мар 2007
    Сообщения:
    164
    Симпатии:
    36
    fuck0ff
    Тут возникает проблемка. 2 сауны, первая - "Метро: Савеловская , Дмитровская", вторая - "Метро: Менделеевская, Савеловская". В первом случае переменные metro1 = Савеловская, metro2 = Дмитровская, во вротом случае metro1 = Менделеевская, metro2 = Савеловская. А поиск в массиве srchPat[] как я понял может быть только по одной переменной, тоесть если поиск по metro1 со значением "Савеловская", то вторая сауна показываться не должна, или я чегото недосмотрел?
     
  4. fuck0ff

    fuck0ff Постоялец

    Регистр.:
    2 сен 2007
    Сообщения:
    92
    Симпатии:
    50
    Brain, да, если ты создаш два поля, т.е. метро1 и метро2, то искать можно только по одному, или по обоих сразу..

    например
    /sauny/?srchPat[1]="Савеловская"&srchPat[2]="Дмитровская"

    srchPat[1] - это поле метро1
    srchPat[2] - это поле метро2

    ну йоптить посмотри руководство, я потому и ссылаюсь на него т.к. лучше чем там врядли объясню..

    а тут некоторые еще возмущаються, вам же легче будет, йоманарод
     
  5. Brain

    Brain

    Регистр.:
    29 мар 2007
    Сообщения:
    164
    Симпатии:
    36
    fuck0ff
    Да в том то и дело, что руководство почти до дыр затер. Вот смотри http://www.clubsaun.ru/?sel_metro=106 выборка по "Петровско-Разумовская". Если посмотреть результат, то значение "Петровско-Разумовская" то в первой переменной, то во второй, тоесть выборка идет сразу под двум переменным. Ведь При запросе /?srchPat[1]="Савеловская" значение второй переменной не учитывается, тоесть если значение "Савеловская" не в метро1, а в метро2, то сауна не показывается.

    я вот вообще думаю, через списки ли там все реализовано, впринципе такое можно сделать через логические переменные, но больше 150 переменных это писец кол-во запросов к базе будет
     
  6. Levey

    Levey Постоялец

    Регистр.:
    20 мар 2007
    Сообщения:
    55
    Симпатии:
    7
    а если попробовать для поиска использавать не ?srchPat[1], а listQuery с собственным запросом?
    типа".listQuery("SELECT * FROM MessageXX WHERE metro1 = переменная1 || metro2 = переменная2", '$data[данные1] // $data[данные2]...и тд')."


    и еще...NetCat 3.1. Руководство разработчика стр. 72
    "...Кроме этого, есть возможность модифицировать основной SQL-запрос путем
    добавления в оператор SELECT собственного кода...."
     
    Brain нравится это.
  7. fuck0ff

    fuck0ff Постоялец

    Регистр.:
    2 сен 2007
    Сообщения:
    92
    Симпатии:
    50
    Brain, да там юзают списки, как делают выборку хз.. как уже говорили, вероято модифицировали запрос

    ...WHERE (metro1 = 106 || metro2 = 106)...

    потом на досуге попробую..
     
  8. fuck0ff

    fuck0ff Постоялец

    Регистр.:
    2 сен 2007
    Сообщения:
    92
    Симпатии:
    50
    таки попробовал..

    Система управления сайтами NetCat 3.2. Руководство разработчика - ст. 80 =)

    вообщем в поле системные настройки нужно записать:

    Код:
    if($id) {
     $id = (int)$id;
     $query_where = ($query_where ? " AND " : "")."(a.category = '$id')";
    }
    
    category - поле компонента..

    у вас получаеться нужно было (a.metro = '$id' || a.metro2 = '$id')

    вот так все просто..
     
    Brain нравится это.
  9. Brain

    Brain

    Регистр.:
    29 мар 2007
    Сообщения:
    164
    Симпатии:
    36
    Сделал так:
    в коде поиска
    Код:
    <select name='sel_metro'
    а в системных настройках компонента
    Код:
    if ( $sel_metro ) {
    $sel_metro=intval($sel_metro);
    $query_where = " metro1 = '".$sel_metro."' OR metro2 = '".$sel_metro."'";
    }
    Спасибо, народ, заработало :)
     
Статус темы:
Закрыта.