Проблема заключается по моему в mysql_affected_rows(), так как оно выдаёт ноль.
А началось всё с :
------
$search = str_replace(" ","|",$query);
$logic = $search==$query?'OR':'AND';
$q = 'SELECT * FROM articles WHERE text RLIKE "'.$search.'" '.$logic.' h1 RLIKE "'.$search.'" '.$logic.' author RLIKE "'.$search.'" '.$logic.' year RLIKE "'.$search.'" '.$logic.' disc RLIKE "'.$search.'" '.$logic.' meta RLIKE "'.$search.'"';
------
так как напрочь отказывается работать с RLIKE "слово|слово" OR/AND.
С LIKE еще работал, но увы мне хочется чтобы можно было много слов одновремено и одно.
Весь код(попытался привести в более менее норм. состояние):
function search ($query)
{
$query = trim($query);
$query = mysql_real_escape_string($query);
$query = htmlspecialchars($query);
if (!empty($query))
{
if(strlen($query) < 3) {$text = '<p>Слишком короткий поисковый запрос.</p>';}
else if(strlen($query) > 128){$text = '<p>Слишком длинный поисковый запрос.</p>';}
else{
$search = str_replace(" ","|",$query);
$logic = $search==$query?'OR':'AND';
echo $search." ".$logic;
$q = 'SELECT * FROM articles WHERE text RLIKE "'.$search.'" '.$logic.' h1 RLIKE "'.$search.'" '.$logic.' author RLIKE "'.$search.'" '.$logic.' year RLIKE "'.$search.'" '.$logic.' disc RLIKE "'.$search.'" '.$logic.' meta RLIKE "'.$search.'"';
$result = mysql_query($q);
if (mysql_affected_rows() > 0) {
$row = mysql_fetch_assoc($result);
$num = mysql_num_rows($result);
$text = '<p>По запросу <b>'.$query.'</b> найдено совпадений: '.$num.'</p>';
do {
// Делаем запрос, получающий ссылки на статьи
$q1 = "SELECT id FROM articles WHERE id = '$row[page_id]'";
$result1 = mysql_query($q1);
if (mysql_affected_rows() > 0) {
$row1 = mysql_fetch_assoc($result1);
}
$text .= '<p><a href="/article?p='.$row['uniq_id'].'" title="'.$row['author'].'">'.$row['h1'].'</a></p>
<p>'.$row['disc'].'</p>';
} while ($row = mysql_fetch_assoc($result));
}
else{$text='<p>По вашему запросу ничего не найдено.</p>';}
}
} else {$text='<p>Задан пустой поисковый запрос.</p>';}
return $text;
}
if (!empty($_POST['query'])) {
$search_result = search ($_POST['query']);
echo $search_result;
}
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.