|
|
|
| очень понравился ваш скрипт ленты новостей http://softtime.ru/info/news.php , но к сожалению в нем нет поиска... очень хотелось бы его туда прикрутить, пробывал разобраться самостоятельно, но не получилось...
если есть кто кто поможет это сделать, буду очень благодарен | |
|
|
|
|
|
|
|
для: qazxsw
(04.01.2008 в 00:40)
| | Мож эта сгодится
файл search.php
<?php
session_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Новости</title>
<link rel="StyleSheet" type="text/css" href="news.css">
</head>
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
require_once("config.php");
function founded($area,$subgect)
{
$sql = "SELECT COUNT(*) as
`founded` FROM `news` WHERE `hide`='show'
AND `".$area."` LIKE '%".$subgect."%';";
$result = mysql_query($sql);
$num_news_founded = mysql_result($result,0,'founded');
return $num_news_founded;
}
function show($page,
$num_news_founded,
$all_number_news,
$area,
$subgect,
$numchar)
{
$num_pages = ceil($num_news_founded/$all_number_news);
$start = ($page-1)*$all_number_news;
$sql = "SELECT `id_news`,`name`,`body`,
DATE_FORMAT(putdate,'%d.%m.%Y') as
`putdate_format` FROM `news`
WHERE `hide`='show' AND `".$area."` LIKE
'%".$subgect."%' ORDER BY `id_news` LIMIT
$start, $all_number_news;";
$result = mysql_query($sql);
echo "Найдено ",$num_news_founded," соответствий";
echo "<table><tr><th>Название</th>
<th>Отрывок</th><th>Дата</th></tr>";
while ($news = mysql_fetch_assoc($result))
{
$id = $news['id_news'];
$nazva =$news['name'];
$text = substr($news['body'],0,$numchar);
$data = $news['putdate_format'];
echo "<tr><td><a class=anewsblock href=news.php?id_news=",$id,">",
$nazva,"</a></td><td class=newsblock>",$text,
"</td><td class=datanews>",$data,"</td></tr>";
}
echo "<tr><th colspan=3>";
for($i = 1;$i<=$num_pages;$i++)
{
if(($i)!=$page)
echo " <a href=$_SERVER[PHP_SELF]?page=$i>$i</a> ";
else
echo " $i ";
}
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<body>
<p class="zagblock">ПОИСК</p>
<a href="Javascript:history.back()">Назад</a><br>
<?php
if (isset($_POST[search]))
{
$area = $_POST[area];
if ($area!='body' && $area!='name')
puterror('Попытка взлома');
else
{
$subgect = $_POST[subgect];
$_SESSION[area] = $area;
$_SESSION[subgect] = $subgect;
$page = $_POST[page];
if(!preg_match("|^[\d]*$|",$page))
puterror("Ошибка при обращении к блоку новостей");
if ($subgect=='')
puterror('Поле поискуа пустое');
else
{
$num_news_founded = founded($area,$subgect);
if($num_news_founded==0)
puterror('Соответствий не найдено');
else
show($page,$num_news_founded,$all_number_news,$area,$subgect,$numchar);
}
}
}
elseif(isset($_GET[page]))
{
if(!preg_match("|^[\d]*$|",$_GET['page']))
puterror("Ошибка при обращении к блоку новостей");
$page = $_GET[page];
$area = $_SESSION[area];
$subgect = $_SESSION[subgect];
$num_news_founded = founded($area,$subgect);
if($num_news_founded==0)
puterror('Соответствий не найдено');
else
show($page,$num_news_founded,$all_number_news,$area,$subgect,$numchar);
}
else
{
?>
<form method="post">
Что ищем <input name="subgect" type="text"><br>
Где искать <select size="1" name="area">
<option value="name">Названия</option>
<option value="body">Текст</option>
</select><br>
<input name="page" type="hidden" value="1">
<input name="search" type="hidden" value="1">
<input type="submit" value="Искать">
</form>
<?php
}
?>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: MIchail1982
(04.01.2008 в 17:12)
| | спасибо... работает... огромное спасибо! | |
|
|
|
|
|
|
|
для: qazxsw
(06.01.2008 в 02:33)
| | незачто, только надо ещё обезолпасить себя от иньекций(забыл :0) )
$subgect = $_POST[subgect];
изменить на
$subgect = htmlspecialchars(trim($_POST[subgect]));
|
ну или по другому както | |
|
|
|
|
|
|
|
для: MIchail1982
(08.01.2008 в 10:18)
| | $subgect = htmlspecialchars(trim($_POST[subgect]));
За такие решения в приличном обществе получают канделябром по генератору. | |
|
|
|
|
|
|
|
для: Trianon
(08.01.2008 в 10:51)
| | Trianon поясните пожалуйста | |
|
|
|
|
|
|
|
для: moonfox
(11.01.2008 в 09:38)
| | Например применить mysql_escape_string
И зачем здесь htmlspecialchars ? | |
|
|
|
|
|
|
|
для: Trianon
(08.01.2008 в 10:51)
| | действительно а в чем проблема? | |
|
|
|
|
|
|
|
для: qazxsw
(12.01.2008 в 18:58)
| | Читаем назначение функций htmlspecialchars() и mysql_escape_string() | |
|
|
|
|
|
|
|
для: MIchail1982
(08.01.2008 в 10:18)
| | вот еще вопросик...
а как нибудь можно его переделать чтоб искал не по одной таблице а по нескольким, точно с такой же структурой | |
|
|
|
|
|
|
|
для: qazxsw
(20.01.2008 в 05:19)
| | тут юнион нужен, но тогда статьи сложнее выводить | |
|
|
|
|
|
|
|
для: MIchail1982
(21.01.2008 в 16:26)
| | то есть получится путаница, или придется до фига условий нагородить... | |
|
|
|
|
|
|
|
для: qazxsw
(24.01.2008 в 00:07)
| | Проще слить одинековые таблички в одну, добавить к таблице столбец ("some_name"), в котором будет что-то типа идентификатора старых таблиц, а в скуєль , при поиске (по одной из старіх таблиц) добавить
кста, при выводе новостей тож такое нуна будет сделать | |
|
|
|