Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Поиск по сайту. Проблема с выводом результатов.

#1 erafia

erafia
  • Пользователь
  • 38 сообщений
  • Репутация: 0
0

Отправлено 08 Февраль 2010 - 11:40

День добрый. Решил установить на сайте поиск, чтобы результаты выводились на странице сайта. Код кнопки поиска установил, но с выводом результатов беда: либо не выводятся, либо выводятся не в дизайне сайта. Страница выводов результатов должна быть на PHP, но его я не знаю, и прошу умных помочь:

Сам скрипт вывода результатов:

		<?php
$result_search=file_get_contents("http://www.best-fast.ru/main_service.php?dpserver=".urlencode(serialize($_SERVER))."&dpquery=".urlencode(serialize($_REQUEST))) or die("<br><br><a href='http://www.dplspider.ru/faq/'>Возможная причина ошибки</a><br>Поддержка <a href='mailto:search@dplspider.ru'>search@dplspider.ru</a>");
echo($result_search);
?>


Что еще дописать, чтобы выводилось в дизайне сайта www.avktea.ru?

Есть еще старый php скрипт не рабочего поиска по этому сайту, но может там где-то есть блоки отвечающие за дизайн. На всякий выложу:

<?php
require_once ( "neox.php" );

function myErrorHandler ($errno, $errstr, $errfile, $errline)
{
global $global_error;
$global_error .= "<p>Ошибка [$errno] <b>$errstr</b>, в строке ".$errline." файла ".$errfile."</p>";
}

$old_error_handler = set_error_handler("myErrorHandler");

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// подключаем модуль формирования страницы
require_once ( "tpl/site.php" );
$site = new n_site();
$zerror = "";

$site->init( "ns_main", "/zzz", "/" ); // инициализируем свойства страницы

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// подключаем и активируем магазин
require_once ( "tpl/shop.php" );
$site->shop = new n_shop();
$site->shop->init();


if ( !isset( $_GET["n"] ) ) { $_GET["n"] = 1; }

if ( isset( $_GET["q"] ) ) { $q = $site->util->parse_webstr($_GET["q"]); } else { $q = ""; }

$txt = "";
$site->header( "", "index.tpl" );
$site->hdr->set_var( "QUEST", $q );


//считываем список товаров этой марки
$_sql = "SELECT g.*, c.cap as category, c.url as cat_url, c.ID as cat_id, c.cid as cat_cid, c.lvl as cat_lvl, s.cap as brand, CONCAT(s.cap,' ',g.cap) as fullname
FROM ns_good as g, ns_spravs as s, ns_part_9 as c
WHERE g.is_visible=1 and g.brand=s.ID and g.part_id=c.ID
HAVING g.content LIKE '%".$q."%' or fullname LIKE '%".$q."%'
ORDER BY g.date_create DESC";


$goods = $site->db->full_query ( $_sql );

$split = 10;
$n = $_GET["n"];
if ( $n < 1 ) { $n = 1; }
$ends = $n + $split - 1; $end = $n; $numpg = ""; $sep = ""; $i = 1;

foreach ( $goods as $k => $v )
{
//print "i=".$i." n=".$n." ends=".$ends;
if ( $i >= $n and $i <= $ends )
{
$site->tpl->set_var( "LCAT", $v["category"] );
$site->tpl->set_var( "LCAP", $v["cap"] );
$site->tpl->set_var( "LINFO", mb_substr($v["content"],0,200) );
if ( $v["img"] == "" ) { $v["img"] = "/imgs/1.gif"; }
$site->tpl->set_var( "LIMG", $v["img"] );
$site->tpl->set_var( "LBRAND", $v["brand"] );

$v["cat_url"] = "/catalog/".$v["cat_url"];
if ( $v["cat_lvl"] != 1 )
{
$prt = array();
$prt["p_tb"] = "ns_part_9";
$prt["p_id"] = 9;
$prt["cid"] = $v["cat_cid"];
$prt["ID"] = $v["cat_id"];
$prt["lvl"] = $v["cat_lvl"];
$site->set_inpath_from_obj( $prt );
$v["cat_url"] = "";
foreach ( $site->inpath as $iv ) {
$v["cat_url"] .= "/".$iv["url"];
}

}
$site->tpl->set_var( "LURL", $v["cat_url"]."/".$v["url"].".html" );
$site->tpl->set_var( "LPRICE", number_format( $v["price"]/100*$sys["kurs"], 0, ".", " " ) );

$sep = "";
if ( (($k+1) % 2) == 0 ) { $sep = "</tr><tr>"; }
$site->tpl->set_var( "LSEPARATOR", $sep );

$site->tpl->parse("pgoods_el","goods_el",true);
$end++;
}
$i++;
}
$site->tpl->parse("pgoods","goods");

$count = $i;
if ( $n > 1 ) { $site->tpl->set_var("BID", $n - $split); $site->tpl->parse("pback","back", true);} else { $site->tpl->set_var("pback",""); }
if ( $end < $count ) { $site->tpl->set_var("FID", $end); $site->tpl->parse("pforward","forward", true); } else { $site->tpl->set_var("pforward",""); }

//построение списка страниц
$i--;
$site->tpl->set_var ( "NUM", $i ); $p = 1; $h = 1;
if ( $i > $split ) {
while ( $h <= $i ) {
$site->tpl->set_var ( "NL_HREF", "href='?n=".$h."'" );
if ( $h == $n ) $site->tpl->set_var ( "NL_HREF", "" );
$site->tpl->set_var ( "NL_LIST", $p );
$site->tpl->parse("pnlist","nlist",true);
$p++; $h += $split;
}
$site->tpl->parse("plistalka","listalka",true);
}
else {
$site->tpl->set_var( 'pnlist', "" );
}

$txt = "<h1>Результаты поиска: ".$q."</h1>";


$site->tpl->set_var( "TEXT", $txt );


$site->ftr->set_block("PFOOTER", "index", "pindex");
$site->ftr->set_var( "pindex", "" );

// Вывод информации на экран
$site->show();



//print $global_error;
?>

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 08 Февраль 2010 - 15:52

erafia, конечно из ваших слов не очень понятно что и как.
Разбираться в старом коде, который вы предоставили, это так сказать, копаться в буреломе.

Вообщем если уж так, то:
1) Форму, содержащую поле для ввода запроса и кнопку надо направить на прошлый файл, куда направлял нас предыдущий, не рабочий поиск.
<form action="прошлый обработчик поиска(файл)">
...
</form>

2) Мне бы хотелось узнать как у вас организована структура файлов. Какой шаблонизатор используется, или вообще без него. Так сказать трудно.
Я конечно могу написать код по старому поисковику, но я не уверен, что этот поиск коим-то образом относится к вашему сайту. Напишу а работать не будет, потому что код просто откуда-то скопирован, и кто-то пытался его встроить в этот движок. Всё будет насмарку.
  • 0

#3 erafia

erafia
    Topic Starter
  • Пользователь
  • 38 сообщений
  • Репутация: 0

Отправлено 08 Февраль 2010 - 17:58

Этот поиск от этого сайта, но сама форма поиска по сайту утеряна и не мной. Я пробывала сам сделать поиск на основе 2х этих скриптов и добилась такого эффекта: он работает но русский, отображает иероглифами. К примеру наберите здесь слово "кофе":

http://avktea.ru/poisk.html (в ТЕСТОВЫЙ)

Может вы поймете, что блокирует русский? Немного переделал один момент - его выделю. Вот скрипт данного кода:

<?php
require_once ( "neox.php" );

function myErrorHandler ($errno, $errstr, $errfile, $errline)
{
global $global_error;
$global_error .= "<p>Ошибка [$errno] <b>$errstr</b>, в строке ".$errline." файла ".$errfile."</p>";
}

$old_error_handler = set_error_handler("myErrorHandler");

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// подключаем модуль формирования страницы
require_once ( "tpl/site.php" );
$site = new n_site();
$zerror = "";

$site->init( "ns_main", "/zzz", "/" ); // инициализируем свойства страницы

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// подключаем и активируем магазин
require_once ( "tpl/shop.php" );
$site->shop = new n_shop();
$site->shop->init();


if ( !isset( $_GET["n"] ) ) { $_GET["n"] = 1; }

if ( isset( $_GET["q"] ) ) { $q = $site->util->parse_webstr($_GET["q"]); } else { $q = ""; }

$txt = "";
$site->header( "", "index.tpl" );
$site->hdr->set_var( "QUEST", $q );


//считываем список товаров этой марки
$_sql = "SELECT g.*, c.cap as category, c.url as cat_url, c.ID as cat_id, c.cid as cat_cid, c.lvl as cat_lvl, s.cap as brand, CONCAT(s.cap,' ',g.cap) as fullname
FROM ns_good as g, ns_spravs as s, ns_part_9 as c
WHERE g.is_visible=1 and g.brand=s.ID and g.part_id=c.ID
HAVING g.content LIKE '%".$q."%' or fullname LIKE '%".$q."%'
ORDER BY g.date_create DESC";


$goods = $site->db->full_query ( $_sql );

$split = 10;
$n = $_GET["n"];
if ( $n < 1 ) { $n = 1; }
$ends = $n + $split - 1; $end = $n; $numpg = ""; $sep = ""; $i = 1;

foreach ( $goods as $k => $v )
{
//print "i=".$i." n=".$n." ends=".$ends;
if ( $i >= $n and $i <= $ends )
{
$site->tpl->set_var( "LCAT", $v["category"] );
$site->tpl->set_var( "LCAP", $v["cap"] );
$site->tpl->set_var( "LINFO", mb_substr($v["content"],0,200) );
if ( $v["img"] == "" ) { $v["img"] = "/imgs/1.gif"; }
$site->tpl->set_var( "LIMG", $v["img"] );
$site->tpl->set_var( "LBRAND", $v["brand"] );

$v["cat_url"] = "/catalog/".$v["cat_url"];
if ( $v["cat_lvl"] != 1 )
{
$prt = array();
$prt["p_tb"] = "ns_part_9";
$prt["p_id"] = 9;
$prt["cid"] = $v["cat_cid"];
$prt["ID"] = $v["cat_id"];
$prt["lvl"] = $v["cat_lvl"];
$site->set_inpath_from_obj( $prt );
$v["cat_url"] = "";
foreach ( $site->inpath as $iv ) {
$v["cat_url"] .= "/".$iv["url"];
}

}
$site->tpl->set_var( "LURL", $v["cat_url"]."/".$v["url"].".html" );
$site->tpl->set_var( "LPRICE", number_format( $v["price"]/100*$sys["kurs"], 0, ".", " " ) );

$sep = "";
if ( (($k+1) % 2) == 0 ) { $sep = "</tr><tr>"; }
$site->tpl->set_var( "LSEPARATOR", $sep );

$site->tpl->parse("pgoods_el","goods_el",true);
$end++;
}
$i++;
}
$site->tpl->parse("pgoods","goods");

$count = $i;
if ( $n > 1 ) { $site->tpl->set_var("BID", $n - $split); $site->tpl->parse("pback","back", true);} else { $site->tpl->set_var("pback",""); }
if ( $end < $count ) { $site->tpl->set_var("FID", $end); $site->tpl->parse("pforward","forward", true); } else { $site->tpl->set_var("pforward",""); }

//построение списка страниц
$i--;
$site->tpl->set_var ( "NUM", $i ); $p = 1; $h = 1;
if ( $i > $split ) {
while ( $h <= $i ) {
$site->tpl->set_var ( "NL_HREF", "href='?n=".$h."'" );
if ( $h == $n ) $site->tpl->set_var ( "NL_HREF", "" );
$site->tpl->set_var ( "NL_LIST", $p );
$site->tpl->parse("pnlist","nlist",true);
$p++; $h += $split;
}
$site->tpl->parse("plistalka","listalka",true);
}
else {
$site->tpl->set_var( 'pnlist', "" );
}
$result_search=file_get_contents("http://www.best-fast.ru/main_service.php?dpserver=".urlencode(serialize($_SERVER))."&dpquery=".urlencode(serialize($_REQUEST))) or die("<br><br><a href='http://www.dplspider.ru/faq/'>Возможная причина ошибки</a><br>Поддержка <a href='mailto:search@dplspider.ru'>search@dplspider.ru</a>");

$txt = "<h1>Результаты поиска: ".$result_search."</h1>";




$site->tpl->set_var( "TEXT", $txt );


$site->ftr->set_block("PFOOTER", "index", "pindex");
$site->ftr->set_var( "pindex", "" );

// Вывод информации на экран
$site->show();



//print $global_error;
?>


Но стандартно вывод результатов был предложен иной (указан выше).
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 08 Февраль 2010 - 18:37

erafia,
1) Не надо все слова жирным выделять, мы и так читать умеем. Жирным выделяют пару ключевых слов и не более.
2) Выделяйте пожалуйста код в bb-теги. Читать неоформленный код больше не буду. Уважайте других пользователей.
3) Проблема ваша во втором варианте та, что кодировка страниц вашего сайта utf-8, а сервиса поиска по вашему сайту windows-1251. Отсюда подобное отображение символов.
Вас спасет библиотека iconv, если она присутствует у хостера.
То есть вам перед выводом результатов их сначала надо преобразовать из одной кодировки в другую.
//...

$result_search = file_get_contents("http://www.best-fast.ru/main_service.php?dpserver=".urlencode(serialize($_SERVER))."&dpquery=".urlencode(serialize($_REQUEST))) or die("<br><br><a href='http://www.dplspider.ru/faq/'>Возможная причина ошибки</a><br>Поддержка <a href='mailto:search@dplspider.ru'>search@dplspider.ru</a>");

if( function_exists('iconv') )
$result_search = iconv('windows-1251', 'utf-8', $result_search); // вот она родимая;)
else
$result_search = "Формат данных не поддерживается"; // если библиотеки iconv нету, то выводим сообщение об отсутствии поддержки кодировки

$txt = "<h1>Результаты поиска: {$result_search}</h1>";

//...

Попробуйте вставить данный код и скажите или покажите результат.
  • 0

#5 erafia

erafia
    Topic Starter
  • Пользователь
  • 38 сообщений
  • Репутация: 0

Отправлено 08 Февраль 2010 - 20:22

Всё работает! Дай Вам бог здоровья - вы меня уже не 1й раз выручаете, спасибо. ;)
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 09 Февраль 2010 - 08:40

erafia, всегда пожалуйста. Конечно то, что я вам предложил - это большущий костыль ;)
  • 0

#7 kuku

kuku
  • Пользователь
  • 9 сообщений
  • Репутация: 0

Отправлено 11 Март 2010 - 03:40

Скажите, а мне не поможите дело втом, что мне нужно написать скрипт на пчп который мне определит тип и версию браузеров и операционок посетителей моего сайта и запишет данные в базу , помогите пожалуйста буду очень благодарен!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • 0

#8 eyexal

eyexal
  • Пользователь
  • 29 сообщений
  • Репутация: 0

Отправлено 11 Март 2010 - 11:49

echo $_SERVER['HTTP_USER_AGENT'];
покажет:
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)

думаю этой инфы достаточно в данной функции
а заливать в базу ну на пример так:
mysql_query("INSERT INTO `dbase` (`user`, `log`) VALUES ('$userLogin','{$_SERVER['HTTP_USER_AGENT']}')" );

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru