Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите прикрутить поиск
 
 автор: qazxsw   (04.01.2008 в 00:40)   письмо автору
 
 

очень понравился ваш скрипт ленты новостей http://softtime.ru/info/news.php , но к сожалению в нем нет поиска... очень хотелось бы его туда прикрутить, пробывал разобраться самостоятельно, но не получилось...

если есть кто кто поможет это сделать, буду очень благодарен

   
 
 автор: MIchail1982   (04.01.2008 в 17:12)   письмо автору
 
   для: 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 
"&nbsp;<a href=$_SERVER[PHP_SELF]?page=$i>$i</a>&nbsp;";
        else
            echo 
"&nbsp;$i&nbsp;";
        }
    }
?>
<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>

   
 
 автор: qazxsw   (06.01.2008 в 02:33)   письмо автору
 
   для: MIchail1982   (04.01.2008 в 17:12)
 

спасибо... работает... огромное спасибо!

   
 
 автор: MIchail1982   (08.01.2008 в 10:18)   письмо автору
 
   для: qazxsw   (06.01.2008 в 02:33)
 

незачто, только надо ещё обезолпасить себя от иньекций(забыл :0) )

$subgect = $_POST[subgect]; 
изменить на 
$subgect = htmlspecialchars(trim($_POST[subgect])); 

ну или по другому както

   
 
 автор: Trianon   (08.01.2008 в 10:51)   письмо автору
 
   для: MIchail1982   (08.01.2008 в 10:18)
 

$subgect = htmlspecialchars(trim($_POST[subgect]));

За такие решения в приличном обществе получают канделябром по генератору.

   
 
 автор: moonfox   (11.01.2008 в 09:38)   письмо автору
 
   для: Trianon   (08.01.2008 в 10:51)
 

Trianon поясните пожалуйста

   
 
 автор: Faraon   (12.01.2008 в 19:15)   письмо автору
 
   для: moonfox   (11.01.2008 в 09:38)
 

Например применить mysql_escape_string
И зачем здесь htmlspecialchars ?

   
 
 автор: qazxsw   (12.01.2008 в 18:58)   письмо автору
 
   для: Trianon   (08.01.2008 в 10:51)
 

действительно а в чем проблема?

   
 
 автор: Trianon   (12.01.2008 в 22:50)   письмо автору
 
   для: qazxsw   (12.01.2008 в 18:58)
 

Читаем назначение функций htmlspecialchars() и mysql_escape_string()

   
 
 автор: qazxsw   (20.01.2008 в 05:19)   письмо автору
 
   для: MIchail1982   (08.01.2008 в 10:18)
 

вот еще вопросик...
а как нибудь можно его переделать чтоб искал не по одной таблице а по нескольким, точно с такой же структурой

   
 
 автор: MIchail1982   (21.01.2008 в 16:26)   письмо автору
 
   для: qazxsw   (20.01.2008 в 05:19)
 

тут юнион нужен, но тогда статьи сложнее выводить

   
 
 автор: qazxsw   (24.01.2008 в 00:07)   письмо автору
 
   для: MIchail1982   (21.01.2008 в 16:26)
 

то есть получится путаница, или придется до фига условий нагородить...

   
 
 автор: MIchail1982   (24.01.2008 в 13:33)   письмо автору
 
   для: qazxsw   (24.01.2008 в 00:07)
 

Проще слить одинековые таблички в одну, добавить к таблице столбец ("some_name"), в котором будет что-то типа идентификатора старых таблиц, а в скуєль , при поиске (по одной из старіх таблиц) добавить
AND some_name = '1' 

кста, при выводе новостей тож такое нуна будет сделать

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования