Добавление полей страна, регион и город в расширенный поиск в SocialEngine Excalibur

Авг 15
2009

В прошлой статье я рассказал Вам о решении проблемы с добавлением полей страна, регион и город в профиль в движок SocialEngine Excalibur, сегодня мы добавим эти поля в расширенный поиск – это тоже немало важный апгрейд. Написание этой статьи меня подтолкнул вопрос, зачем нужны поля страна, регион и город в профиле участника, если нет возможности найти участников, используя данные поля?

Для добавления данных полей необходимо выполнить пару шагов:

  1. Открыть: search_advanced.php
    Найти
    Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.

    $search_query = "SELECT se_users.user_id, se_users.user_username, se_users.user_fname, se_users.user_lname, se_users.user_photo FROM se_profilevalues LEFT JOIN se_users ON se_profilevalues.profilevalue_user_id=se_users.user_id LEFT JOIN se_levels ON se_levels.level_id=se_users.user_level_id WHERE se_users.user_profilecat_id='{$cat_selected}' AND se_users.user_verified='1' AND se_users.user_enabled='1' AND (se_users.user_search='1' OR se_levels.level_profile_search='0')";
    if($user_online == 1) { $search_query .= " AND user_lastactive>'".(time()-10*60)."' AND user_invisible=0"; }
    if($user_withphoto == 1) { $search_query .= " AND user_photo <> ''"; }
    if($field->field_query != "") { $search_query .= " AND ".$field->field_query; }

    Заменить
    Подсказка: Произведите замену ранее найденных строк.

    $search_query = "SELECT se_users.user_id, se_users.user_username, se_users.user_fname, se_users.user_lname, se_users.user_photo FROM se_profilevalues LEFT JOIN se_users ON se_profilevalues.profilevalue_user_id=se_users.user_id LEFT JOIN se_levels ON se_levels.level_id=se_users.user_level_id LEFT JOIN cites_profilevalues ON se_profilevalues.profilevalue_user_id=cites_profilevalues.profilevalue_id WHERE se_users.user_profilecat_id='{$cat_selected}' AND se_users.user_verified='1' AND se_users.user_enabled='1' AND (se_users.user_search='1' OR se_levels.level_profile_search='0')";
    if($user_online == 1) { $search_query .= " AND user_lastactive>'".(time()-10*60)."' AND user_invisible=0"; }
    if($user_withphoto == 1) { $search_query .= " AND user_photo <> ''"; }
    if($field->field_query != "") { $search_query .= " AND se_profilevalues.".$field->field_query; }
    if(isset($_POST['dhtmlgoodies_country']) && $_POST['dhtmlgoodies_country'] > 0)
    $search_query .= " AND cites_profilevalues.profilevalue_7 = '" . $_POST['dhtmlgoodies_country'] . "'";
    if(isset($_POST['dhtmlgoodies_region']) && $_POST['dhtmlgoodies_region'] > 0)
    $search_query .= " AND cites_profilevalues.profilevalue_8 = '" . $_POST['dhtmlgoodies_region'] . "'";
    if(isset($_POST['dhtmlgoodies_city']) && $_POST['dhtmlgoodies_city'] > 0)
    $search_query .= " AND cites_profilevalues.profilevalue_9 = '" . $_POST['dhtmlgoodies_city'] . "'";

    Найти
    Подсказка: Возможно, здесь приведена не вся строка, а лишь ее часть.

    // SET GLOBAL PAGE TITLE
    $global_page_title[0] = 926;
    $global_page_description[0] = 1088;
    }

    Добавить после
    Подсказка: Добавьте эти строки на новой строке после ранее найденных строк.

    // GET COUNTRY, REGION AND CITY
    $sql = $database->database_query ("SELECT * FROM country");
    while ($country_bd = $database->database_fetch_assoc ($sql))
    {
    if(isset($_POST['dhtmlgoodies_country']) && $country_bd[country_id] == $_POST['dhtmlgoodies_country'])
    $country_sel = " SELECTED";
    else
    $country_sel = "";

    $country .= «<option value=’» . $country_bd[country_id] . «‘» . $country_sel . «>» . $country_bd[name] . «</option>\n»;
    }

    if(isset($_POST['dhtmlgoodies_region']))
    {
    $region_tb = $database->database_fetch_assoc($database->database_query(«SELECT region_id, name FROM region WHERE region_id=’».$_POST['dhtmlgoodies_region'].»‘ LIMIT 1″));
    if(strlen($region_tb[name]) > 1)
    $region .= «<option value=’» . $region_tb[region_id] . «‘ SELECTED>» . $region_tb[name] . «</option>\n»;
    }

    if(isset($_POST['dhtmlgoodies_city']))
    {
    $city_tb = $database->database_fetch_assoc($database->database_query(«SELECT city_id, name FROM city WHERE city_id=’».$_POST['dhtmlgoodies_city'].»‘ LIMIT 1″));
    if(strlen($city_tb[name]) > 1)
    $city .= «<option value=’» . $city_tb[city_id] . «‘ SELECTED>» . $city_tb[name] . «</option>\n»;
    }
    $smarty->assign(‘country’, $country);
    $smarty->assign(‘region’, $region);
    $smarty->assign(‘city’, $city);
    // END GET COUNTRY, REGION AND CITY

  2. Открыть: search_advanced.tpl
    Найти

    </div>
    {/section}
    {/section}
    {/section}

    Добавить после
    Подсказка: Добавьте эти строки на новой строке после ранее найденных строк.

    <table cellpadding='0' cellspacing='0' style='padding-top: 5px;'>
    <tr><td>
    <div style='font-weight: bold; margin-top: 5px;'>Страна проживания</div>
    <select name='dhtmlgoodies_country' id='dhtmlgoodies_country' onchange="getRegionList(this.value);">
    <option id='op' value='-1'>[ Страна ]</option>
    {$country}</select>
    </div>
    <div style='font-weight: bold; margin-top: 5px;'>Регион проживания</div>
    <select name='dhtmlgoodies_region' id='dhtmlgoodies_region' onchange="getCityList(this.value);">
    <option id='op' value='-1'>[ Регион ]</option>
    {$region}</select>
    </div>
    <div style='font-weight: bold; margin-top: 5px;'>Город проживания</div>
    <select name='dhtmlgoodies_city' id='dhtmlgoodies_city'>
    <option id='op' value='-1'>[ Город ]</option>
    {$city}</select>
    </div>
    </td></tr>
    </table>

Все! Найти участников теперь можно по стране, региону и городу проживания.

Вы ожидали больше шагов? Извините, что все так просто. Если у Вас возникнут вопросы, пишите мне на мыло, разберемся.

Автор: Евтеев Евгений Александрович

Email: evteev_e2003@mail.ru

Комментарии закрыты.

Статистика