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

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

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

    Brain

    Регистр.:
    29 мар 2007
    Сообщения:
    164
    Симпатии:
    36
    Отцы, такой вопрос. Как сделана выборка по метро на главной Перейти по ссылке, кликая по ней происходит выборка саун по этому метро. Вопрос такой, как сделать такую же выборку?
    Создал список названий метро (с названием "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
    Да в том то и дело, что руководство почти до дыр затер. Вот смотри Перейти по ссылке выборка по "Петровско-Разумовская". Если посмотреть результат, то значение "Петровско-Разумовская" то в первой переменной, то во второй, тоесть выборка идет сразу под двум переменным. Ведь При запросе /?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."'";
    }
    Спасибо, народ, заработало :)
     
Статус темы:
Закрыта.