X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> нашел, и ограничил разделом
Salikhoff_hb
Salikhoff_hb
Topic Starter сообщение 20.2.2011, 15:24; Ответить: Salikhoff_hb
Сообщение #1


есть файл отвечает за поиск по БД и вывод из нее сайтов подходящих по названию, при регистрации человек заносит сайт в БД при этом он выбирает раздел куда его сайт относится, так вот я сделать хочу чтобы результаты были наиболее точными, я хочу сделать возможность ограничить одним разделом, т.е. нашел много результатов, все в них ковырять не охота ограничил размером получил результат вот код отвечающий за вывод
[PHP]<?php
include_once ('main/config.php');
if (isset($_GET['amiso'])){
$request = $_GET['amiso'];
$request = trim($request);
$request = strip_tags($request);
$request = stripslashes($request);
$request = str_replace("'","&quot;",$request);
$request = ereg_replace(" +"," ",$request);
$request = strtolower($request);
$request = trim($request);
if ($request!='' && strlen($request)>2){
@$list = (int)$_GET['list'];
$counter = mysql_query("SELECT COUNT(*) FROM `catalog` WHERE `info` LIKE '%$request%' OR `title` LIKE '%$request%' OR `keywords` LIKE '%$request%' OR `url` LIKE '%$request%'", $db);
$temp = mysql_fetch_array($counter);
$posts = $temp[0];
$total = (($posts-1)/10)+1;
$total = intval($total);
$list = intval($list);
if (empty($list) or $list<0) $list=1;
if ($list>$total) $list=$total;
$start = $list*10-10;
if ($start<0){$start=0;}
$result = mysql_query("SELECT * FROM `catalog` WHERE `info` LIKE '%$request%' OR `title` LIKE '%$request%' OR `keywords` LIKE '%$request%' OR `url` LIKE '%$request%' LIMIT $start, 10", $db);
if (!$result){exit(mysql_error());}
$n = 1+$start;
if (mysql_num_rows($result)>0){
echo ("<strong class='font'>Найдено <strong class='font' style='color:#7f99d2'>".$posts."</strong> ответов по вашему запросу.</strong>");
while ($row=mysql_fetch_array($result)){
echo("<p>".$n.".) <a href=".$row['url']." target='_blank' class='res' style='font-size:16px;'>".$row['title']."</a></p><p class='res' style='font-size:14px;'>".$row['info']."</p><p class='res' style='font-size:12px; color:#666666;'><u>Ключевые слова: </u>".$row['keywords']."</p><a href=".$row['url']." target='_blank'>".$row['url']."</a>");
}
while ($row=mysql_fetch_array($result));
if ($list!=1) $page1='<a href="catalog.php?amiso='.$search.'&list=1" style="color:#7f99d2">Первая</a> | <a href="catalog.php?amiso='.$search.'&list='.($list - 1).'" style="color:#7f99d2">Сюда</a> | ';
if ($list!=$total) $npage=' | <a href="catalog.php?amiso='.$search.'&list='.($list + 1).'" style="color:#7f99d2">Туда</a> | <a href="catalog.php?amiso='.$search.'&list='.$total.'" style="color:#7f99d2">Последняя</a>';
if ($list-5>0) $p5l=' <a href="catalog.php?amiso='.$search.'&list='.($page-5).'" style="color:#7f99d2">'.($page-5).'</a> | ';
if ($list-4>0) $p4l=' <a href="catalog.php?amiso='.$search.'&list='.($page-4).'" style="color:#7f99d2">'.($page-4).'</a> | ';
if ($list-3>0) $p3l=' <a href="catalog.php?amiso='.$search.'&list='.($page-3).'" style="color:#7f99d2">'.($page-3).'</a> | ';
if ($list-2>0) $p2l=' <a href="catalog.php?amiso='.$search.'&list='.($page-2).'" style="color:#7f99d2">'.($page-2).'</a> | ';
if ($list-1>0) $p1l=' <a href="catalog.php?amiso='.$search.'&list='.($page-1).'" style="color:#7f99d2">'.($page-1).'</a> | ';
if ($list+5<=$total) $p5r=' | <a href="catalog.php?amiso='.$search.'&list='.($page+5).'" style="color:#7f99d2">'.($page+5).'</a>';
if ($list+4<=$total) $p4r=' | <a href="catalog.php?amiso='.$search.'&list='.($page+4).'" style="color:#7f99d2">'.($page+4).'</a>';
if ($list+3<=$total) $p3r=' | <a href="catalog.php?amiso='.$search.'&list='.($page+3).'" style="color:#7f99d2">'.($page+3).'</a>';
if ($list+2<=$total) $p2r=' | <a href="catalog.php?amiso='.$search.'&list='.($page+2).'" style="color:#7f99d2">'.($page+2).'</a>';
if ($list+1<=$total) $p1r=' | <a href="catalog.php?amiso='.$search.'&list='.($page+1).'" style="color:#7f99d2">'.($page+1).'</a>';
if ($total > 1){Error_Reporting(E_ALL & ~E_NOTICE);
echo ("<div class='list'><br>");
echo ($page1.$p5l.$p4l.$p3l.$p2l.$p1l.'<b style="color:#95ad07">'.$page.'</b>'.$p1r.$p2r.$p3r.$p4r.$p5r.$npage);
echo ("</div>");
}
}
else {
echo ("<strong class='error'>К сожалению по вашему запросу ничего не найдено...</strong>");
}
}
else {
echo ("<strong class='error'>Задан пустой поисковый запрос или строка поиска содержит менее 3 символов...</strong>");
}
}
?>[/PHP] а вот за вывод категорий отвечает
[PHP] <?php
$query = mysql_query("SELECT * FROM `section`");
while ($row = mysql_fetch_array($query))
{
echo("<a href=/catalog.php?section=".$row['id']."&amiso=".$_GET['amiso'].">".$row['name']."</a><br>");
}
?>[/PHP] вот набросал примерно как можно сие дело реализовать только что то до меня не доходит как все правильно сделатЬ! [PHP]if (isset($_GET['section'])){
$counter = mysql_query("SELECT COUNT(*) FROM `catalog` WHERE `info` LIKE '%$request%' OR `title` LIKE '%$request%' OR `keywords` LIKE '%$request%' OR `url` LIKE '%$request%' AND `section`=".$_GET['section']."", $db);
}
else{
$counter = mysql_query("SELECT COUNT(*) FROM `catalog` WHERE `info` LIKE '%$request%' OR `title` LIKE '%$request%' OR `keywords` LIKE '%$request%' OR `url` LIKE '%$request%'", $db);
}
$temp = mysql_fetch_array($counter);
$posts = $temp[0];
$total = (($posts-1)/10)+1;
$total = intval($total);
$list = intval($list);
if (empty($list) or $list<0) $list=1;
if ($list>$total) $list=$total;
$start = $list*10-10;
if ($start<0){$start=0;}
if (isset($_GET['section'])){
$result = mysql_query("SELECT * FROM `catalog` WHERE `info` LIKE '%$request%' OR `title` LIKE '%$request%' OR `keywords` LIKE '%$request%' OR `url` LIKE '%$request%' AND `section`=".$_GET['section']." LIMIT $start, 10", $db);
}
else{
$result = mysql_query("SELECT * FROM `catalog` WHERE `info` LIKE '%$request%' OR `title` LIKE '%$request%' OR `keywords` LIKE '%$request%' OR `url` LIKE '%$request%' LIMIT $start, 10", $db);
}[/PHP] кто что думает скажите, но я так догадываюсь здесь запрос в БД не правильно построен!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Salikhoff_hb
Salikhoff_hb
Topic Starter сообщение 22.2.2011, 16:32; Ответить: Salikhoff_hb
Сообщение #2


и как улучшить этот код!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 22.2.2011, 17:06; Ответить: Webmaster_hb
Сообщение #3


FICO-077), много кода, а смысл вашего вопроса не понятен, поэтому никто и не отвечает
лучше набросайте пример содержимого базы (10 позиций)
и страничку клиентскую, что человек вводит, и что ему ваш скрипт должен вывести

картинки набросать - 15 минут, а пользы в понимании намного больше
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Salikhoff_hb
Salikhoff_hb
Topic Starter сообщение 22.2.2011, 17:19; Ответить: Salikhoff_hb
Сообщение #4


В общем код не реагирует, можно переключать разделы он все равно будет выводить весь результат, да еще и приплетет другие сайты которые находятся в этом разделе, разжую запрос вида catalog.php?amiso=amiso выводит результат который соответствует значению amiso, вот так выглядит уже с разделом catalog.php?section=1&amiso=amiso задумка была ограничить вывод результата находящихся только в этом разделе. Но суть в том что при добавления категории, он не только выводит результат поиска, но еще и сует туда полностью раздел. Выходит либо составить по другому запрос в БД, либо сделать поиск сперва по всей БД, а потом только вывести результат опр раздела путем соответствия(короче не могу объяснить)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 22.2.2011, 17:31; Ответить: Webmaster_hb
Сообщение #5


ну судя по всему у вас есть таблица в которой хранятся сайты
и там же указаны категории к которым они относятся

html.by 1
tut.by 2

тогда запрос на выборку сайтов html из категории 1 будет таким
SELECT * FROM `sites` WHERE `name` LIKE '%html%' AND `cat_id`=1
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Salikhoff_hb
Salikhoff_hb
Topic Starter сообщение 22.2.2011, 18:58; Ответить: Salikhoff_hb
Сообщение #6


Webmaster, до этого я сам додумался, мне надо чтобы он смотрел в БД только по разделу с опр идом.!!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Salikhoff_hb
Salikhoff_hb
Topic Starter сообщение 22.2.2011, 18:59; Ответить: Salikhoff_hb
Сообщение #7


CREATE TABLE `catalog` (
`id` int(11) NOT NULL auto_increment,
`section` int(11) NOT NULL,
`title` varchar(255) collate utf8_unicode_ci NOT NULL,
`info` text collate utf8_unicode_ci,
`keywords` varchar(255) collate utf8_unicode_ci NOT NULL,
`url` varchar(255) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `section` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
вот структура!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 22.2.2011, 19:01; Ответить: alexdrob
Сообщение #8


(' post='102118 @ 22.2.2011, 20:58)
только по разделу с опр идом.!!

а это вам что???
(Webmaster_hb @ 22.2.2011, 19:31) *
AND `cat_id`=1

вот какое поле у вас содержит ID каталога то и пишете `поле`=ID
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Salikhoff_hb
Salikhoff_hb
Topic Starter сообщение 22.2.2011, 19:08; Ответить: Salikhoff_hb
Сообщение #9


alexdrob,
$counter = mysql_query("SELECT COUNT(*) FROM `catalog` WHERE `info` LIKE '%$request%' OR `title` LIKE '%$request%' OR `keywords` LIKE '%$request%' OR `url` LIKE '%$request%' AND `section`=".$_GET['section']."", $db);
$result = mysql_query("SELECT * FROM `catalog` WHERE `info` LIKE '%$request%' OR `title` LIKE '%$request%' OR `keywords` LIKE '%$request%' OR `url` LIKE '%$request%' AND `section`=".$_GET['section']." LIMIT $start, 10", $db);
я же говорю все сделал, не работает так!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 22.2.2011, 19:20; Ответить: alexdrob
Сообщение #10


попробуй так
SELECT * FROM `catalog` WHERE (`info` LIKE '%$request%' OR `title` LIKE '%$request%' OR `keywords` LIKE '%$request%' OR `url` LIKE '%$request%') AND `section`=".$_GET['section']." LIMIT $start, 10
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Случайно нашел тему/нишу? (для CPA и не только)
А может и не нашел...
7 by_roXe 2724 4.6.2017, 21:01
автор: by_roXe
Открытая тема (нет новых ответов) Автоматическая синхронизация магазина на WooCommerce c разделом Товары ВКонтакте
VKMarket for WooCommerce
1 alekseysolo 3556 16.2.2016, 14:04
автор: alekseysolo
Открытая тема (нет новых ответов) Нашел классный шаблон? Надо перевести? Бегом сюда.
Перевод WordPress шаблонов
6 Qunjilmo 3556 21.12.2011, 2:58
автор: Grossir
Открытая тема (нет новых ответов) Нашел партнёрку что скажете ?
Нашел партнёрку что скажете ?
16 Solonik 5159 31.12.2009, 2:17
автор: Solonik


 



RSS Текстовая версия Сейчас: 24.4.2024, 9:16
Дизайн