Witam, mam od pewnego czasu problem z wyszukiwarka, sprawdzałem ja na paru frazach i wydawało mi sie ze działała dobrze. Byłem w błedzie. Po wpisaniu frazy w wyszukiwarke nie szuka ona prawidlowo i jest to problem z zapytaniem do bazy danych, Zrobilem tak aby szukala po tytulach ale.... szuka dobrze tylko 1 słowo, po wpisaniu 2 szuka albo 1 slowo albo 2, prawdopodobnie szuka 1+2 ale nie jest to wyswietlone na samej gorze bo mam spora baze danych i jest zasypane przez inne rzeczy. Moze ktos mi pomoc?
Tak wyglada moj kod. Umieszczam całosc a nie tylko same zapytania bo moze w czyms innym tkwi problem
$active = ( $config['approve'] == 1 ) ? " AND active = '1'" : NULL;
$search_type = ( isset($_REQUEST['search_type']) ) ?
$_REQUEST['search_type'] : 'videos'; $sort = ( isset($_REQUEST['sort']) && strlen($_REQUEST['sort']) <= 7
) ?
$_REQUEST['sort'] : NULL; $viewtype = ( isset($_REQUEST['viewtype']) && $_REQUEST['viewtype'] == 'detailed' ) ?
'detailed' : 'basic';
switch ( $sort ) {
case 'addate':
$sortby = " ORDER BY adddate DESC";
break;
case 'viewnum':
$sortby = " ORDER BY viewnumber DESC";
break;
case 'rate':
$sortby = " ORDER BY (ratedby*rate) DESC";
break;
default:
$sortby = " ORDER BY title";
}
if ( $search_id == '' && $search_key == '' ) {
$err = $lang['search_result.query_empty'];
}
$searching = false;
$total = 0;
$start_num = NULL;
$end_num = NULL;
$ch = NULL;
if ( $err == '' ) {
if ( $search_type == 'search_users' ) {
$sql = "SELECT UID, username FROM signup WHERE username LIKE '%" .$search_id. "%' LIMIT 1";
$rs = $conn->execute($sql);
if ( $conn->Affected_Rows() ) {
$uid = $rs->fields['UID'];
$username = $rs->fields['username'];
$URL = seo_url('users/' .$username, 'uprofile.php?UID=' .$uid);
} else {
$err = $lang['search_result.nothing'];
}
} elseif ( $search_type == 'search_groups' ) {
$URL = $config['BASE_URL']. '/search_group.php?search_type=' .$search_type. '&search_id=' .$search_id;
} elseif ( $search_type == 'related' ) {
$searching = true;
$list = key_to_info($search_key);
$channel = NULL;
for ($i=1; $i<count($ch); $i++) {
}
}
$sql_count = "SELECT count(VID) AS total_videos FROM video WHERE type = 'public' AND (title LIKE '%" .mysql_real_escape_string($ch['0']). "%' " .$channel. ")"; $sql = "SELECT * FROM video WHERE type = 'public' AND (title LIKE '%" .mysql_real_escape_string($ch['0']). "%' " .$channel. ") ORDER BY VID ASC"; } else {
$searching = true;
$searches = explode(' ', $search_id); $query = "(";
$query_add = NULL;
foreach ( $searches as $item ) {
$query_add = " OR ";
}
$query .= ")";
$sql_count = "SELECT count(VID) AS total_videos FROM video WHERE type = 'public'" .$active. " AND " .$query. $sortby;
$sql = "SELECT * FROM video WHERE type = 'public'" .$active. " AND " .$query. $sortby;
}
if ( $searching ) {
$ars = $conn->execute($sql_count);
$total = $ars->fields['total_videos'];
$pagination = new Pagination($config['items_per_page']);
$limit = $pagination->getLimit($total);
$sql = $sql. " LIMIT " .$limit;
$rs = $conn->execute($sql);
$videos = $rs->getrows();
$pagination_url = $config['BASE_URL']. '/search/{#PAGE#}/?sort=' .$sort. '&search_type=' .$search_type. '&search_id=' .$search_id. '&search_key=' .$search_key;
$page_link = $pagination->getPagination($pagination_url);
$start_num = $pagination->getStartItem();
$end_num = $pagination->getEndItem();
$tags = group_tags($sql);
STemplate::assign('tags',$tags);
if ( $total == 0 ) {
$err = $lang['search_result.nothing'];
}
}
}