Как сделать поиск по клубам?

ЗАКРЫТО

Поиск по клубам?!

#1 13 июля 2012 в 23:43
Где включается поиск по клубам? Или в cms нет такой функции? Если нет- как сделать???
#2 14 июля 2012 в 11:28
да, и вправду нет поиска по клубам
#3 14 июля 2012 в 11:50
нету, но нужен ли? контент в клубах — блоги и фотогалерея штатные, по ним поиск есть
#4 14 июля 2012 в 12:07
По названиям клубов нужен
#5 14 июля 2012 в 14:49
В com_clubs_view.tpl
после {if $total>0} т.е в стр.14 вставляем поле для ввода названия (или части названия) клуба:

<form enctype="multipart/form-data" action="" method="POST" name="nameclub" id="nameclub">
<input name="name" type="text" class="name" id="name" style="width:200px" value=""/>
</td><td>
<input name="clubname" type="submit" id="clubname" value="Искать"/>
</form>

А в
\components\clubs\frontend.php
добавляем запрос к БД. Для этого блок

////////// VIEW ALL CLUBS /////////////////////////////////////////////////////

ПОЛНОСТЬЮ меняем на:

////////// VIEW ALL CLUBS ////////////////////////////////////////////////////////////////////////////////////////
if ($do=='view'){

$clubname=$_POST['name'];
if($clubname>''){
$sql = "SELECT c.*, (COUNT(uc.user_id)+1) as members, c.pubdate as pubdate
FROM cms_clubs c
LEFT JOIN cms_user_clubs uc ON uc.club_id = c.id
WHERE c.published = 1 AND c.title LIKE '%$clubname%'
GROUP BY c.id
ORDER BY is_vip DESC, members DESC";

$rs = $inDB->query($sql) or die(mysql_error());
$total = $inDB->num_rows($rs);
if ($total>0){
while ($club = $inDB->fetch_assoc($rs)){
if (!$club['imageurl']) { $club['imageurl'] = 'nopic.jpg'; } else {
if (!file_exists(PATH.'/images/clubs/small/'.$club['imageurl'])){
$club['imageurl'] = 'nopic.jpg';
}
}
$clubs[] = $club;
}
}
}else{
$perpage = isset($cfg['perpage'])? $cfg['perpage']: 10;
$page = $inCore->request('page', 'int', 1);

$clubs = array();
$clubs_list = $model->getClubs($page, $perpage);

$total = 0;

if ($clubs_list){
foreach ($clubs_list as $club){
if (!$club['imageurl']) { $club['imageurl'] = 'nopic.jpg'; } else {
if (!file_exists(PATH.'/images/clubs/small/'.$club['imageurl'])){
$club['imageurl'] = 'nopic.jpg';
}
}
$clubs[] = $club;
}
$total = $model->getClubsCount();
$pagination = cmsPage::getPagebar($total, $page, $perpage, '/clubs/page-%page%', array());
}
}
$smarty = $inCore->initSmarty('components', 'com_clubs_view.tpl');
$smarty->assign('pagetitle', $pagetitle);
$smarty->assign('clubid', $id);
// Ссылку на создание клуба показываем всем авторизованным, если включено создание клуба
$smarty->assign('can_create', ($inUser->id && $cfg['cancreate'] || $inUser->is_admin));
$smarty->assign('clubs', $clubs);
$smarty->assign('total', $total);
$smarty->assign('pagination', $pagination);
$smarty->display('com_clubs_view.tpl');
}
#6 14 июля 2012 в 16:41
отлично работает. musicспасибо за доработку, надеюсь ее включат в сборку

еще бы показывал надпись, что найдено: 10 клубов

или бы чтото вроде живого поиска, кака сейчас многие поисковики сделали
#8 14 июля 2012 в 17:13
Переменная {$total} содержит количество найденных клубов. Используйте её в tplнике где угодно
#9 14 июля 2012 в 17:46

$clubname=$_POST['name'];

Ленивый
Так делать не нужно. Данный код уязвим критически. sql инъекция в чистом виде.
Не рекомендую использовать.
Ленивый, вы бы по изучали темы про безопасность входных данных.
#10 14 июля 2012 в 17:57

Так делать не нужно. Данный код уязвим критически. sql инъекция в чистом виде.
Не рекомендую использовать.
Ленивый, вы бы по изучали темы про безопасность входных данных.

Fuze
Прошу прошения! А как нужно делать??? Правда не хватает поиска по клубам, пользователи создадут клубов 1000 например, и как там найти нужный ????
#11 14 июля 2012 в 18:31
если не забуду, сделаю поддержку поиска по клубам в релизе 1.9.1
#13 14 июля 2012 в 18:44
Fuze,

Так делать не нужно.

Fuze
Чем заменить?
Что почитать?
#15 15 июля 2012 в 10:30
Должно быть так: $clubname=$inCore->request('name', 'str');
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.