Странициране на търсачката

ghostbg

Registered
значи имам проблем със страницирането на резултатите от търсачката използвам урока на jooorooo за странициране и вижте какво сътворих след като слях скрипта на търсачката и страницирането

Код:
<?php
$tarsene = $_GET['search'];
/* Връзка с БД */
$db=mysql_connect ($host,$user,$password) or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ($database);

mysql_query ('SET NAMES CP1251');
/* Отбележете по колко резултата да се показват на страница */
$pp = "2";

/* изберета таблиза която искате да покажете */
$table = "receptite";

$total = mysql_result(mysql_query("SELECT COUNT(id_rec) FROM $table"),0);
$numofpages = $total / $pp;
if (!isset($_GET['page'])) {
$page = 1;
}
else {
$page = $_GET['page'];
}
$limitvalue = $page * $pp - ($pp);

/* покажете записите, в този случай аз показвам само [username] */
$query = "SELECT * FROM $table WHERE `recepti_name` LIKE '%$tarsene%' OR `recepti_text` LIKE '%$tarsene%' LIMIT $limitvalue, $pp";
$result = mysql_query($query);
$row = mysql_numrows($result);

echo "Намерени резултати за: <b><i>$tarsene</i></b>";
echo "<br /><br />";
while($row=mysql_fetch_array($result))
{
$recepti_name=$row[recepti_name];
$recepti_text=$row[recepti_text];
$count_rec=$row[count_rec];

echo "<span id=\"linkt\"><img src=\"../../images/arrow2.gif\" alt=\"\">"."<a href=\"../../recipe.php?id_rec=".$row['id_rec']."&idcat_rec=".$row['idcat_rec']."\">".$row['recepti_name']."</a></span>"."<span class=\"visits\">($count_rec)</span><br />"; 
}

function per_page($link, $offset) {
global $numofpages, $page;
$numofpages = round($numofpages);

$pagesstart = round($page-$offset);
$pagesend = round($page+$offset);

/* показване на стрелки « за предишна страница */
if ($page != "1" && round($numofpages) != "0") {
echo str_replace("%page", round($page-1), '<a href="'.$link.'"><font face="Trebuchet MS">«</font></a> ');
}

for($i = 1; $i <= $numofpages; $i++) {
if ($pagesstart <= $i && $pagesend >= $i) {
if ($i == $page) {
echo "<b>[$i]</b> ";
}
else {
echo str_replace("%page", "$i", '<a href="'.$link.'">'.$i.'</a> '); //номерация на страниците
}
}
}
if (round($numofpages) == "0") {
echo "[$i]";
}
/* показване на стрелки » за следваща страница */
if ($page != round($numofpages) && round($numofpages) != "0") {
echo str_replace("%page", round($page+1), '<a href="'.$link.'"><font face="Trebuchet MS">»</font></a>');
}
}

/* показване на общия брой страници и избор на страница */
echo '<br>';
echo 'Общо страници: '.round($numofpages).'<br>';

per_page("?page=%page", "5");

?>

Защо когато намерените резултати са да кажем 10 от долу винаги страницира всичките рецепти. Дано ме разбрахте какво имам предвид :)
 
Код:
 <?php
$tarsene = $_GET['search'];

mysql_connect($host,$user,$password)or die("Сайтът не може да се свърже към базата данни");
@mysql_select_db($database) or die("Грешна база данни");

mysql_query ('SET NAMES CP1251');

$query = " SELECT * FROM `receptite` WHERE `recepti_name` LIKE '%$tarsene%' OR `recepti_text` LIKE '%$tarsene%'";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_numrows($result);

echo "Намерени резултати за: <b><i>$tarsene</i></b>";
echo "<br /><br />";
while($row = mysql_fetch_array($result))
{
$recepti_name=$row[recepti_name];
$recepti_text=$row[recepti_text];
$count_rec=$row[count_rec];

echo "<span id=\"linkt\"><img src=\"../../images/arrow2.gif\" alt=\"\">"."<a href=\"../../recipe.php?id_rec=".$row['id_rec']."&idcat_rec=".$row['idcat_rec']."\">".$row['recepti_name']."</a></span>"."<span class=\"visits\">($count_rec)</span><br />"; 
}
?>
 
Пробвай така:

Код:
<?php
$numrows = 10;
$num = mysql_num_rows($result);

$min = $page * $numrows;
$max = $min + $numrows;

$maxpage = $num / $numrows;

$tarsene = $_GET['search'];

mysql_connect($host,$user,$password)or die("Сайтът не може да се свърже към базата данни");
@mysql_select_db($database) or die("Грешна база данни");

mysql_query ('SET NAMES CP1251');

$query = " SELECT * FROM `receptite` WHERE `recepti_name` LIKE '%$tarsene%' OR `recepti_text` LIKE '%$tarsene%'";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_numrows($result);

echo "Намерени резултати за: <b><i>$tarsene</i></b>";
echo "<br /><br />";



for ($i = $min + 1; $i <= $max && $i <= $num; $i++)
{
$row = mysql_fetch_array($result)

$recepti_name=$row[recepti_name];
$recepti_text=$row[recepti_text];
$count_rec=$row[count_rec];

echo "<span id=\"linkt\"><img src=\"../../images/arrow2.gif\" alt=\"\">"."<a href=\"../../recipe.php?id_rec=".$row['id_rec']."&idcat_rec=".$row['idcat_rec']."\">".$row['recepti_name']."</a></span>"."<span class=\"visits\">($count_rec)</span><br />";
}

//////

if (!($page <= 0)){
	echo "<a href=\"?page=news&newspage=".$minus."\"><< предишна | </a>";
}


$b = 1;
for ($a = 0; $a < $page; $a++){
	if ($a == $page)
	echo "<a href=\"?page=news&newspage=".$a."\"><b> ".$b." </b></a>";
	
	else
	echo "<a href=\"?page=news&newspage=".$a."\"> ".$b." </a>";
	$b++;
}

if (($page + 1) < $maxpage)
	echo "<a href=\"?page=news&newspage=".$plus."\"> | следваща >></a>";

}
?>
 
дава този еррор

Parse error: parse error, unexpected T_VARIABLE in /home/www/lubang.freehostia.com/includes/srch/srch.php on line 159


159 -> ред --> $recepti_name=$row[recepti_name];

хмм аз не виждам такава грешка на този ред явно е некуде по нагоре в кода но нз къде
 
А така?

Код:
<?php
$numrows = 10;

$tarsene = $_GET['search'];

$page = $_GET['page'];

if (empty($page))
$page = 0;

mysql_connect($host,$user,$password)or die("Сайтът не може да се свърже към базата данни");
@mysql_select_db($database) or die("Грешна база данни");

mysql_query ('SET NAMES CP1251');

$query = " SELECT * FROM `receptite` WHERE `recepti_name` LIKE '%$tarsene%' OR `recepti_text` LIKE '%$tarsene%'";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_numrows($result);

echo "Намерени резултати за: <b><i>$tarsene</i></b>";
echo "<br /><br />";

$num = mysql_num_rows($result);

$min = $page * $numrows;
$max = $min + $numrows;

$maxpage = $num / $numrows;


for ($i = $min + 1; $i <= $max && $i <= $num; $i++)
{
$row = mysql_fetch_array($result);

$recepti_name=$row[recepti_name];
$recepti_text=$row[recepti_text];
$count_rec=$row[count_rec];

echo "<span id=\"linkt\"><img src=\"../../images/arrow2.gif\" alt=\"\">"."<a href=\"../../recipe.php?id_rec=".$row['id_rec']."&idcat_rec=".$row['idcat_rec']."\">".$row['recepti_name']."</a></span>"."<span class=\"visits\">($count_rec)</span><br />";
}

//////

if (!($page <= 0)){
	echo "<a href=\"?search=".$tarsene."&page=".$minus."\"><< предишна | </a>";
}


$b = 1;
for ($a = 0; $a < $page; $a++){
	if ($a == $page)
	echo "<a href=\"?search=".$tarsene."&page=".$a."\"><b> ".$b." </b></a>";
	
	else
	echo "<a href=\"?search=".$tarsene."&page=".$a."\"> ".$b." </a>";
	$b++;
}

if (($page + 1) < $maxpage)
	echo "<a href=\"?search=".$tarsene."&page=".$plus."\"> | следваща >></a>";
?>

EDIT:: Нали като търсиш линка ти изглижда така?

site.com/faila.php?search=dumazatarsene

EDIT:: Пак го промених. пробвай пак
 
сега работи показва 10 записа но страницирането не бачка само показва " | следваща >>" и като цъкна на него нищо не става а записите са много повече от 10


да линка е така
 
Код:
CREATE TABLE `receptite` (
  `id_rec` int(11) NOT NULL auto_increment,
  `idcat_rec` int(11) NOT NULL default '0',
  `count_rec` int(11) NOT NULL default '0',
  `rating_rec` varchar(5) collate cp1251_bulgarian_ci NOT NULL default '',
  `num_votes_rec` int(10) unsigned NOT NULL default '0',
  `recepti_name` varchar(100) collate cp1251_bulgarian_ci NOT NULL default '',
  `recepti_porcii` varchar(255) collate cp1251_bulgarian_ci NOT NULL default '',
  `recepti_prod` varchar(255) collate cp1251_bulgarian_ci NOT NULL default '',
  `recepti_text` longtext collate cp1251_bulgarian_ci NOT NULL,
  `recepti_user` varchar(100) collate cp1251_bulgarian_ci NOT NULL default '',
  `filename` varchar(255) collate cp1251_bulgarian_ci NOT NULL default '',
  PRIMARY KEY  (`id_rec`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bulgarian_ci AUTO_INCREMENT=266 ;

формата

Код:
<form method="GET" action="srch.php">
<table cellpadding="0" cellspacing="0" width="300px" align="center" >
<tr>
<td align="center" width="200px" bgcolor="#FF9302"><input type="text" name="search" size="50" class="input"></td>
<td align="center" width="100px"><input type="submit" style="border: 1px solid rgb(255, 255, 255);" value="Търси" class="input"></td>
</tr>
</table>
</form>
 
Parse error: parse error, unexpected $ in /home/www/lubang.freehostia.com/includes/srch/srch.php on line 148

148 ред ---> $redove=mysql_query("SELECT * FROM `receptite` WHERE `recepti_name` LIKE '%$tarsene%' OR `recepti_text` LIKE '%$tarsene%'");
 
Код:
 <?php
$tarsene = $_GET['search'];

//колко резултата на страница
$pp = "25"; 
//колко резултата на страница

$page=$_GET['page'];

if(!$_GET['page'])
{
$page="1";
}

$limit = ($pp*$page)-$pp;

mysql_connect($host,$user,$password)or die("Сайтът не може да се свърже към базата данни");
@mysql_select_db($database) or die("Грешна база данни");
$redove=mysql_query("SELECT * FROM `receptite` WHERE `recepti_name` LIKE '%$tarsene%' OR `recepti_text` LIKE '%$tarsene%'"); 

$max=mysql_numrows($redove);
$total=ceil($max/$pp);

mysql_connect($host,$user,$password)or die("Сайтът не може да се свърже към базата данни");
@mysql_select_db($database) or die("Грешна база данни");

mysql_query ('SET NAMES CP1251');

$query = " SELECT * FROM `receptite` WHERE `recepti_name` LIKE '%$tarsene%' OR `recepti_text` LIKE '%$tarsene%' LIMIT $limit,$pp";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_numrows($result);

echo "Намерени резултати за: <b><i>$tarsene</i></b>";
echo "<br /><br />";
while($row = mysql_fetch_array($result))
{
$recepti_name=$row[recepti_name];
$recepti_text=$row[recepti_text];
$count_rec=$row[count_rec];

echo "<span id=\"linkt\"><img src=\"../../images/arrow2.gif\" alt=\"\">"."<a href=\"../../recipe.php?id_rec=".$row['id_rec']."&idcat_rec=".$row['idcat_rec']."\">".$row['recepti_name']."</a></span>"."<span class=\"visits\">($count_rec)</span><br />";
}

//от тук започва кода за показването на страниците
$page=$_GET['page']; 

if ($page > 1) { 
   $prev = ($page - 1); 
   echo "<a href=\"?page=$prev\"><font face=\"Trebuchet MS\">Предишна страница</font></a> "; 
} 
else echo "<font face=\"Trebuchet MS\">Предишна страница</font> "; 

if (!$page or ($page > $total)) { 
   $page="1"; 
} 

if ($total < 6) { 
   for($i=1 ; $i<=$total ; $i++) { 
      if ( ($page)==$i ) { 
         echo "<b>$i</b> "; 
      } 
      else { 
         echo "<a href=\"?page=".$i."\">".$i."</a> "; 
      } 
   } 
} 
else { 
   for($i=1 ; $i<=3 ; $i++) { 
      if ( ($page)==$i ) { 
         echo "<b>$i</b> "; 
      } 
      else { 
         echo "<a href=\"?page=".$i."\">".$i."</a> "; 
      } 
   } 
    
   if ($page <= 3) { 
      if ($page == 3) echo "<a href=\"?page=4\">4</a> "; 
      echo "... "; 
      for ($i=$total-2; $i<=$total; $i++) 
         echo "<a href=\"?page=".$i."\">".$i."</a> "; 
   } 
    
   if ( ($page == 4) or ($page == 5) ) { 
      for ($i=$page; $i<=$page+1; $i++) { 
         if ($page == $i) echo "<b>$i</b> "; 
         else echo "<a href=\"?page=".$i."\">".$i."</a> "; 
      } 
      echo "... "; 
      for ($i=$total-2; $i<=$total; $i++) 
         echo "<a href=\"?page=".$i."\">".$i."</a> "; 
   } 
    
   if ( ($page > 5) and ($page < ($total - 4)) ) { 
      echo "... "; 
      for ($i=$page-1; $i<=$page+1; $i++) { 
         if ($page == $i) echo "<b>$i</b> "; 
         else echo "<a href=\"?page=".$i."\">".$i."</a> "; 
      } 
      echo "... "; 
      for ($i=$total-2; $i<=$total; $i++) 
         echo "<a href=\"?page=".$i."\">".$i."</a> "; 
   } 
    
   if ( $page > ($total - 5) ) { 
      echo "... "; 
      for ($i=$total-5; $i<=$total; $i++) { 
         if ($page == $i) echo "<b>$i</b> "; 
         else echo "<a href=\"?page=".$i."\">".$i."</a> "; 
      } 
   } 
} 

if ($page < $total) { 
   $next = ($page + 1); 
   echo "<a href=\"?page=$next\"><font face=\"Trebuchet MS\">Следваща страница</font></a> "; 
} 
else echo "<font face=\"Trebuchet MS\">Следваща страница</font>"; 
?>
 
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/www/lubang.freehostia.com/includes/srch/srch.php on line 150

150 --> $max = mysql_numrows($redove);
 
да още в началото на файла то ми изкарва резултатите но над резултатите ми дава този еррор


Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/www/lubang.freehostia.com/includes/srch/srch.php on line 150
 
провери в селектите, дали е правилно.. по точно дали са правилни клетките. може от тях да идва проблема.. там дето са LIKE
 
всичко промених смених и пак този еррор махах кавичките клетките ги написах на ново слагах кавички и пак си дава този еррор :(
 
ако махна
$row = mysql_numrows($redove);
резултатите си излиза сичко си е ок в изкарването само дето не страницира ... нз как да го оправя
 

Back
Горе