Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > не работает поиск по базе


Автор: kshyms 17.5.2010, 17:32
Код

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
</head>

<body>
<?
error_reporting(E_ALL & ~E_NOTICE);
ini_set('session.use_trans_sid',0);
session_register('sid');

require 'config.php';
require 'lang/'.$LANGFILE;

$pp=10;
$start=intval($start);
$o=intval($o);

$q=mhtml($q);
$title=$q;
include "_top.php";

function hl($str) {
        GLOBAL $lq;
        $str=" ".$str;

        $ph=explode(" ",$lq);
        $lstr=mysql_result(mysql_query("SELECT lower('$str')"),0,0);

        for ($i=0;$i<count($ph);$i++) {
                $lstr=eregi_replace($ph[$i],"<b><font color=red>".$ph[$i]."</font></b>",$lstr);
                }

        $p1=1;$p2=1;
        while ($p1!=0 && $p2!=0) {
                if (($p1=strpos($lstr,"<b><font color=red>"))!=0) {
                        $lstr[$p1]="|";
                        $str=substr($str,0,$p1)."<b><font color=red>".substr($str,$p1);

                        if (($p2=strpos($lstr,"</font></b>"))!=0) {
                                $lstr[$p2]="|";
                                $str=substr($str,0,$p2)."</font></b>".substr($str,$p2);
                                }
                        }
                }

        $str=substr($str,1);
        return($str);
        }

$template=$TMPL["brokenscript"];
$template=str_replace("%YESTEXT",$LANG["yes"],$template);
$template=str_replace("%NOTEXT",$LANG["no"],$template);
$template=str_replace("%BROKENSURETEXT",$LANG["brokensure"],$template);
print $template;

$template=$TMPL["bmenu"];
$template=str_replace("%MODERATORSTEXT",$LANG["moderators"],$template);
$template=str_replace("%ADDLINKTEXT",$LANG["addlink"],$template);
$template=str_replace("%MAINTEXT",$LANG["main"],$template);
print $template;

$sform=$TMPL["searchform"];
$sform=str_replace("%SEARCHTEXT",$LANG["search"],$sform);
$sform=str_replace("%QUERYTEXT",$q,$sform);

print $sform;

$q=trim($q);
if (empty($q)) {
        print "<P><font color=red>".$LANG["emptyquery"]."</font></P>";
        $total=0;
        }
else {
        $order="ORDER BY gin DESC,gout DESC";
        if ($o==1) $order="ORDER BY title";
        if ($o==2) $order="ORDER BY moder_vote DESC";

        $lq=mysql_result(mysql_query("SELECT lower('$q');"),0,0);

        $uq=mysql_result(mysql_query("SELECT upper('$q');"),0,0);

        $likes="";
        $ph=explode(" ",$uq);
        for ($i=0;$i<count($ph);$i++) {
                $pq="%".$ph[$i]."%";
                $likes.=" OR UPPER(description) like '$pq'";
                $likes.=" OR UPPER(title) like '$pq'";
                $likes.=" OR UPPER(url) like '$pq'";
                }
        $likes=substr($likes,4);

        $rr=mysql_query("SELECT count(*) FROM main WHERE type=1 AND ($likes)") or die(mysql_error());
        $total=mysql_result($rr,0,0);
        $r=mysql_query("SELECT * FROM main WHERE type=1 AND ($likes) $order LIMIT $start,10") or die(mysql_error());

        $c=mysql_num_rows($r);

        $template=$TMPL["searchtop"];
        $template=str_replace("%STARTNUM",$start+1,$template);
        print $template;

        while ($ar=mysql_fetch_array($r)) {
                $admin="";
                if (isset($sid)) {
                        $admin.="<font color=gray size=-3> [<a href=admin/edit.php?lid=".$ar["lid"]."&type=255 class=slink>".$LANG["edit"]."</a>] [";
                        for ($j=1;$j<11;$j++) {
                                if ($j==$ar["moder_vote"]) $admin.="<B>".$j."</B> ";
                                else $admin.="<a href=admin/vote.php?lid=".$ar["lid"]."&vote=$j&type=255 class=slink>".$j."</a> ";
                                }
                        $admin.="]</font>";
                        }

                $template=$TMPL["linksbit"];
                $template=str_replace("%ID",$ar["lid"],$template);
                $template=str_replace("%TITLE",hl($ar["title"]),$template);
                $template=str_replace("%GIN",$ar["gin"],$template);
                $template=str_replace("%GOUT",$ar["gout"],$template);
                $template=str_replace("%MODERVOTE",$ar["moder_vote"],$template);
                $template=str_replace("%DESC",hl($ar["description"]),$template);
                $template=str_replace("%URL",hl($ar["url"]),$template);
                     $text=$ar[url];
                $text  = trim($text, " http://"); // "Лишь несколько слов :)"
                print "<a href='http://www.мой сайт/search/$text.html'>кэшированная страница</a></a>";
                $template=str_replace("%BEST","<img src=./cat/star.gif width=15 height=16 hspace=3>",$template);
                $template=str_replace("%BOROKENTEXT",$LANG["broken"],$template);
                $template=str_replace("%ADMINIFACE",$admin,$template);
                print $template;
                }

        $template=$TMPL["searchbottom"];
        }
if ($c==0) {
        print "<P>".$LANG["notfound"]."</P>\n";
        }

print "<table cellspacing=0 cellpadding=0 border=0 width=100% bgcolor=#E0E0E0><tr><td><img src=/images/none.gif width=1 height=1></td></tr></table>";
print "<P>".$LANG["pagesfound"].": <B>".$total."</B>";

if ($total>$pp) {
        print "<center><br>";
        if ($start!=0) print "<a href=.search.php?o=$o&start=0&q=".urlencode($q).">&lt;&lt;</a> | ";
        else print "&lt;&lt; | ";
        $sstart=$start-60; if ($sstart<0) $sstart=0;
        $send=$start+60;if ($send>$total) $send=$total;
        for ($i=$sstart;$i<$send;$i+=$pp) {
                if ($start==$i)
                        print "<b>".($i+1)."</b>";
                else
                        print "<a href=./search.php?o=$o&start=$i&q=".urlencode($q).">".($i+1)."</a>";
                print " | ";
                }
        if ($start==$total-$pp)
                print "&gt;&gt;";
        else
                print "<a href=./search.php?o=$o&start=".($i-$pp)."&q=".urlencode($q).">&gt;&gt;</a>";
        print "</center>";
        }
print "<br>";

$template=$TMPL["bmenu"];
$template=str_replace("%MODERATORSTEXT",$LANG["moderators"],$template);
$template=str_replace("%ADDLINKTEXT",$LANG["addlink"],$template);
$template=str_replace("%MAINTEXT",$LANG["main"],$template);
print $template;
print base64_decode($COPY);

include "_bottom.php";
?>
</body>

</html>


Выдает ошибку Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent (output started at /home/мой сайт/wfsearch.08/search.php:9) in /home/kshyms/public_html/wfsearch.08/search.php on line 12
 и кроме того Задан пустой поисковый запрос
Сейчас версия php 5.2 месяц как не работает на этой версии а раньше работало. Сейчас даже header('Refresh: 30;URL=http://www.мой сайт.php3'); не работает
А может организовать поиск по базе и по сайту в папке c кэшированными страницами одновременно?

Автор: Fortop 17.5.2010, 18:40
Цитата(kshyms @  17.5.2010,  17:32 Найти цитируемый пост)
А может организовать поиск по базе и по сайту в папке c кэшированными страницами одновременно?

А может заняться поиском по форуму и чтением мануалов?

Ошибка типичнейшая.

Автор: bars80080 17.5.2010, 19:08
Цитата(Fortop @  17.5.2010,  18:40 Найти цитируемый пост)
Ошибка типичнейшая. 

интересно было бы послушать, а то я аж прямо теряюсь в загадках, что искать

Автор: kshyms 18.5.2010, 10:18
Цитата

А может заняться поиском по форуму и чтением мануалов?

http://www.php.su/

Автор: нуп 18.5.2010, 11:26
Сначало php код сделай, а потом выводи html  smile 

Автор: ksnk 18.5.2010, 11:34
Видимо, раньше стоял параметр http://ru.php.net/manual/en/session.configuration.php#ini.session.auto-start
Если знаний php настолько мало - проще поставить этот параметр обратно...

Автор: kshyms 18.5.2010, 13:16
Пример 1. Регистрация переменной c $_SESSION.
Код


session.auto_start = 1
session_register('sid');


Цитата

 Видимо, раньше стоял параметр session.auto_start
Если знаний php настолько мало - проще поставить этот параметр обратно... 

А может так  ?
ksnk,

Добавлено @ 13:22
Код

error_reporting(E_ALL & ~E_NOTICE);
ini_set('session.auto_start',0);
session_register('sid');

 а может так?
Код

error_reporting(E_ALL & ~E_NOTICE);
ini_set('session.auto_start',1);
session_register('sid');




Автор: ksnk 18.5.2010, 14:25
kshyms, этот параметр - PHP_INI_ALL, то есть в скрипте его менять нет никакого смысла, что, впрочем, и так очевидно.

Если по каким-то причинам стартовать сессию автоматически окажется невозможно:
Код

<?php
session_start();
?>

вставить в начало самого скрипта, самыми первыми строчками файла.

Хотя, конечно, правильный ответ - все переписать, автоматический старт сессии - признак ошибок проектирования...  smile 

Автор: kshyms 18.5.2010, 14:56
ksnk, А сейчас ошибок не показывает, но и нет поиска по базе!!!

Автор: ksnk 18.5.2010, 15:08
http://phpfaq.ru/debug

Автор: Fortop 18.5.2010, 20:11
Цитата(bars80080 @  17.5.2010,  19:08 Найти цитируемый пост)
интересно было бы послушать, а то я аж прямо теряюсь в загадках, что искать 

Что именно послушать?

О том, почему пишет headers already sent?

Вам это
Цитата(kshyms @  17.5.2010,  17:32 Найти цитируемый пост)
output started at /home/мой сайт/wfsearch.08/search.php:9

рассказать?

Автор: bars80080 19.5.2010, 00:14
Цитата(Fortop @  18.5.2010,  20:11 Найти цитируемый пост)
О том, почему пишет headers already sent?

дааа, а медведя то и не приметил

Автор: kshyms 19.5.2010, 09:21
Ошибка http://wp-skins.info/2009/06/08/oshibka-cannot-modify-header-information-headers-already-sent.html - headers already sent (08.06.2009)
Автор: Admin | Рубрика: Прочее · Статьи

Довольно часто встречающаяся ошибка при установке, переносе или правке конфигурации в Wordpress блоге. Я сам сталкивался с ней неоднократно при переносе блога на другой хостинг или изменении каких нибудь параметров в wp-config.php.

И вот я наткнулся на ответ, что же делать с ошибкой Wordpress “Cannot modify header information - headers already sent “.

Ошибка «Невозможно изменить информацию заголовка» означает, что вы правили файлы (скорее всего, wp-config.php) вручную. И правили некорректно. Убедитесь, что перед первой строкой нет пустых строк. Избегайте также править файлы в Блокноте. Используйте «программистские» редакторы вроде PSpad, Notepad++ и им подобные, в которых работа с UTF-8 настраивается - в частности, отключается обязательная маркировка BOM (byte order mark), из-за которой и происходит эта ошибка.

Fortop, 
Я что-то не совсем догоняю смысл... 

Автор: Fortop 19.5.2010, 09:32
kshyms, а если поискать более общее описание? smile

Вкратце - суть в том, что "до" старта сессии не должно быть никакого вывода. А у Вас идет голый html, который выводится автоматически "до" вашего кода.

Или разбирайтесь с этой ошибкой, или последуйте совету ksnk

Автор: kshyms 19.5.2010, 09:44
А может так начать переписывать код? Parse error: syntax error, unexpected $end in /home/kshyms/public_html/wfsearch.08/search3.php on line 17
Код

<?
ini_set('display_errors',1);
error_reporting(E_ALL);
require 'config.php';
$q="сайт";   //ищем в базе слово сайт
$q=htmlspecialchars($q);
$title1 = mysql_query ("SELECT * FROM main WHERE title='.$q.'");
// Выводим таблицу:
for ($c=0; $c<mysql_num_rows($q);     $c++)
{
echo "<tr>";

$f = mysql_fetch_array($q);
if ($f[title1] == "$q") {print "$f[title1]</p>"; exit;}
    echo mysql_error();
?>

bars80080, 
Fortop, 
ksnk, 

Автор: ksnk 19.5.2010, 09:53
скобки исправлять, чтоли? нужно пользоваться редактором с подсветкой синтаксиса. Так хоть часть проблем будет решаться сразу, а не на сервере...

Автор: bars80080 19.5.2010, 13:28
Цитата(ksnk @  19.5.2010,  09:53 Найти цитируемый пост)
скобки исправлять, чтоли?

ага, в 17 строчке, которой как раз нет

Добавлено через 25 секунд
если это весь файл, то там просто цикл не закрыт

Автор: kshyms 3.3.2011, 11:49
lда лучше session_start(); 
Я все понял. 
PHP5 код нужно переделать, но лучше оказывается переделать по технологии ASP с использованием С++. Хотя оказывается есть варианты отладить код PHP перекодировать на CPP, а затем в ассемблер
ksnk, 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)