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

efrdimitrov

Registered
Гледах всички теми, който са има ли проблем с търсачка и странициране, но не можах да разбера как да направя моя код.Когато търся по даден критерии ми показва в зависимост от това колко резултата имам една или повече страници.Тоест аз имам 10 на страница резултата, изчислява ги и ми показва ако 25 например 3 страници.До тук всичко е наред, проблема идва когато отворя друга страница различна от 1-та.Тогава ми изкарва всички заявки и ако в първата ми е показвало:http://localhost/search.php?kategoriq=&grad=%D1%EE%F4%E8%FF&text=
то в 2-та ми показва:http://localhost/search.php?page=2
ето го и кода:
PHP:
<?php include "tarsene.php"; ?>

<?php

$kategoriq    = (isset($_GET['kategoriq']) ? $_GET['kategoriq'] : "");
$grad         = (isset($_GET['grad']) ? $_GET['grad'] : "");
$text         = (isset($_GET['text']) ? $_GET['text'] : "");
$server       = "localhost"; 
$dbusername   = "root"; 
$dbpassword   = "***"; 
$db_name      = "obqvi";


mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни"); 
mysql_select_db($db_name) or die("Грешна база данни"); 
mysql_query("SET names cp1251");

$pp = "10";
$page = 1;

if(isset($_GET['page'])) 
{ 
$page = (int)$_GET['page']; 
} 
$redove = ($page - 1) * $pp; 

function cutes($post_text, $simvola_text) {
if (strlen($post_text)>$simvola_text)
{$totchkit='...';}
else
{$totchkit='';}
return substr($post_text,0 , $simvola_text).$totchkit;
}

$query = "SELECT * FROM `publikuvai` WHERE `text` LIKE '%$text%' AND `kategoriq` LIKE '%$kategoriq%' AND `grad` LIKE '%$grad%'" .
 "LIMIT $redove, $pp";
$result = mysql_query($query) or die('Error, query failed 1');

while($row = mysql_fetch_array($result)) 
{
$row['text'] = cutes($row['text'], 90);
echo "<a href='pregled.php?id=$row[id]' data-tooltip='sticky1'>";

echo "<div id='mystickytooltip' class='stickytooltip'>
<div style='padding:5px'>

<div id='sticky1' class='atip'>

<img src='upload/$row[rand_file_name1]' width='100px'></div>

</div></div>";

echo "<table style='background-color: cdcdcd; border-color: 000; width: 712px;' class='rounded' border='4' bgcolor='cdcdcd' align='center'>"; 

include "table.php";

echo"</table></a><br />";
}

$query = "SELECT COUNT(id) AS max FROM publikuvai WHERE `text` LIKE '%$text%' AND `kategoriq` LIKE '%$kategoriq%' 
AND `grad` LIKE '%$grad%'";
$result = mysql_query($query) or die('Error, query failed 2'); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 
$max = $row['max'];
$total= ceil($max/$pp);

$self = $_SERVER['PHP_SELF'];
if($max > 0) {
echo "<center><p aling='top'><b>Намерени обяви: $max</b.</p></center>";
}
else{
echo "<center><font size='5' color='8a1717'><b>Няма намерени резултати,<br>опитай други критерии!</b></font></center>";
}
 
echo "<center>";
if ($page > 1) { 
$prev = ($page - 1); 
echo "<a href=\"?page=$prev\" class='pagestrelki'><b> <<< </b></a> "; 
} 
else echo "<b class='pagestrelki'> <<< </b> "; 

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

if ($total < 10) { 
for($i=1 ; $i<=$total ; $i++) { 
if ( ($page)==$i ) { 
echo "<b class='pagepasiv'>[$i]</b> "; 
} 
else { 
echo "<a href=\"?page=".$i."\" class='pageact'>".$i."</a> "; 
} 
} 
} 
else { 
for($i=1 ; $i<=3 ; $i++) { 
if ( ($page)==$i ) { 
echo "<b class='pagepasiv'>[$i]</b> "; 
} 
else { 
echo "<a href=\"?page=".$i."\" class='pageact'>".$i."</a> "; 
} 
} 

if ($page <= 3) { 
if ($page == 3) echo "<a href=\"?page=4\" class='pageact'>4</a> "; 
echo "<b>  ...   </b>"; 
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=\"?page=".$i."\" class='pageact'>".$i."</a> "; 
}

if ($page == 5) echo "<a href=\"?page=4\" class='pageact'>4</a>";

if ( ($page == 4) or ($page == 5) ) { 
for ($i=$page; $i<=$page+1; $i++) { 
if ($page == $i) echo "<b class=\"pagepasiv\">[$i]</b> "; 
else echo "<a href=\"?page=".$i."\" class='pageact'>".$i."</a> "; 
} 
echo "<b>  ...  </b>";
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=\"?page=".$i."\" class='pageact'>".$i."</a> "; 
} 

if ( ($page > 5) and ($page < ($total - 4)) ) { 
echo "<b>  ...  </b>";
for ($i=$page-1; $i<=$page+1; $i++) { 
if ($page == $i) echo "<b class=\"pagepasiv\">[$i]</b> "; 
else echo "<a href=\"?page=".$i."\" class='pageact'>".$i."</a> "; 
} 
echo "<b>   ...  </b>"; 
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=\"?page=".$i."\" class='pageact'>".$i."</a> "; 
} 

if ( $page > ($total - 5) ) { /* KRAINITE */
echo "<b>  ...  </b>"; 
for ($i=$total-5; $i<=$total; $i++) { 
if ($page == $i) echo "<b class='pagepasiv'>[$i]</b> "; 
else echo "<a href=\"?page=".$i."\" class='pageact'>".$i."</a> "; 
} 
} 
} 

if ($page < $total) { 
$next = ($page + 1); 
echo "<a href=\"?page=$next\" class='pagestrelki'><b> >>> </b></a> "; 
} 
else  { echo "<b class='pagestrelki'> >>> </b>"; }
echo "</center>";
?>
благодаря на всички който помогнат
 

nom3r1

Registered
Защо пускаш една и съща тема.. бях ти отговорил в предишната:
http://web-tourist.net/forum/viewtopic.php?t=117350
 

efrdimitrov

Registered
Да така, но ако ти бях писал там сигурно нямаше да го видиш и понеже не мога да се справя с проблема реших пак да пиша и ако никой не ми отговори щях да я изтрия
 

nom3r1

Registered
Хаха, к'во оправдание само :)) Нали, ако беше писал темата щеше да се ъпдейтне.. както и да е.

Пробвай така:

PHP:
$url = "http://site.com/?kategoriq={$kategoriq}&grad={$grad}&text={$text}";

Само смени: site.com със сайта ти и файла с които търсиш , тоест;
Ако сайта ти е: blabla.com и файла за търсене е: search.php, го правиш така:

PHP:
$url = "http://blabla.com/search.php?kategoriq={$kategoriq}&grad={$grad}&text={$text}";

Ето ти целия код ;-)

PHP:
<?php include "tarsene.php"; ?>

<?php
$kategoriq    = (isset($_GET['kategoriq']) ? $_GET['kategoriq'] : "");
$grad         = (isset($_GET['grad']) ? $_GET['grad'] : "");
$text         = (isset($_GET['text']) ? $_GET['text'] : "");
$server       = "localhost"; 
$dbusername   = "root"; 
$dbpassword   = "***"; 
$db_name      = "obqvi";

mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни"); 
mysql_select_db($db_name) or die("Грешна база данни"); 
mysql_query("SET names cp1251");

$pp = "10";
$page = 1;

if(isset($_GET['page'])) { 
	$page = (int)$_GET['page']; 
} 
$redove = ($page - 1) * $pp; 

function cutes($post_text, $simvola_text) {
	if (strlen($post_text)>$simvola_text) {
		$totchkit='...';
	} else {
		$totchkit='';
	}
	return substr($post_text,0 , $simvola_text).$totchkit;
}
$url = "http://site.com/?kategoriq={$kategoriq}&grad={$grad}&text={$text}";
$query = "SELECT * FROM `publikuvai` WHERE `text` LIKE '%$text%' AND `kategoriq` LIKE '%$kategoriq%' AND `grad` LIKE '%$grad%' LIMIT $redove, $pp";
$result = mysql_query($query) or die('Error, query failed 1');

while($row = mysql_fetch_array($result)) {
$row['text'] = cutes($row['text'], 90);
echo "<a href='pregled.php?id=$row[id]' data-tooltip='sticky1'>";

echo "<div id='mystickytooltip' class='stickytooltip'>
<div style='padding:5px'>

<div id='sticky1' class='atip'>

<img src='upload/$row[rand_file_name1]' width='100px'></div>

</div></div>";

echo "<table style='background-color: cdcdcd; border-color: 000; width: 712px;' class='rounded' border='4' bgcolor='cdcdcd' align='center'>"; 

include "table.php";

echo"</table></a><br />";
}

$query = "SELECT COUNT(id) AS max FROM publikuvai WHERE `text` LIKE '%$text%' AND `kategoriq` LIKE '%$kategoriq%' 
AND `grad` LIKE '%$grad%'";
$result = mysql_query($query) or die('Error, query failed 2'); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 
$max = $row['max'];
$total= ceil($max/$pp);

$self = $_SERVER['PHP_SELF'];
if($max > 0) {
echo "<center><p aling='top'><b>Намерени обяви: $max</b.</p></center>";
}
else{
echo "<center><font size='5' color='8a1717'><b>Няма намерени резултати,<br>опитай други критерии!</b></font></center>";
}
 
echo "<center>";
if ($page > 1) { 
$prev = ($page - 1); 
echo "<a href=\"{$url}&page=$prev\" class='pagestrelki'><b> <<< </b></a> "; 
} 
else echo "<b class='pagestrelki'> <<< </b> "; 

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

if ($total < 10) { 
for($i=1 ; $i<=$total ; $i++) { 
if ( ($page)==$i ) { 
echo "<b class='pagepasiv'>[$i]</b> "; 
} 
else { 
echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 
} 
} 
else { 
for($i=1 ; $i<=3 ; $i++) { 
if ( ($page)==$i ) { 
echo "<b class='pagepasiv'>[$i]</b> "; 
} 
else { 
echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 
} 

if ($page <= 3) { 
if ($page == 3) echo "<a href=\"{$url}&page=4\" class='pageact'>4</a> "; 
echo "<b>  ...   </b>"; 
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
}

if ($page == 5) echo "<a href=\"{$url}&page=4\" class='pageact'>4</a>";

if ( ($page == 4) or ($page == 5) ) { 
for ($i=$page; $i<=$page+1; $i++) { 
if ($page == $i) echo "<b class=\"pagepasiv\">[$i]</b> "; 
else echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 
echo "<b>  ...  </b>";
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 

if ( ($page > 5) and ($page < ($total - 4)) ) { 
echo "<b>  ...  </b>";
for ($i=$page-1; $i<=$page+1; $i++) { 
if ($page == $i) echo "<b class=\"pagepasiv\">[$i]</b> "; 
else echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 
echo "<b>   ...  </b>"; 
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 

if ( $page > ($total - 5) ) { /* KRAINITE */
echo "<b>  ...  </b>"; 
for ($i=$total-5; $i<=$total; $i++) { 
if ($page == $i) echo "<b class='pagepasiv'>[$i]</b> "; 
else echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 
} 
} 

if ($page < $total) { 
$next = ($page + 1); 
echo "<a href=\"{$url}&page=$next\" class='pagestrelki'><b> >>> </b></a> "; 
} 
else  { echo "<b class='pagestrelki'> >>> </b>"; }
echo "</center>";
?>

ЕДИТ: Я си представи, че някоя от "критериите" е празна? Тогава сещаш ли се к'во ще стане със заявката ти?

[sql]SELECT * FROM `publikuvai` WHERE `text` LIKE '%ТЕКСТ%' AND `kategoriq` LIKE '%%' AND `grad` LIKE '%%'[/sql]

Което не е много добре :) Прави си проверка дали е избрана някоя критерия, ако е избрана да може да се търси в нея, ако не е избрана до заявката да не стига . Давам пример:

PHP:
if(empty($kategoriq)) {
$cat = "";
} else {
$cat = "AND kategoriq LIKE '%$kategoriq%'";
}
if(empty($grad)) {
$city = "";
} else {
$city = "AND `grad` LIKE '%$grad%'";
}
$query = "SELECT * FROM `publikuvai` WHERE `text` LIKE '%$text%' $cat $city LIMIT $redove, $pp";

Като се замисля и това не е най-добрия вариант, но донякъде е и решение.

LAST EDIT:
PHP:
<?php include "tarsene.php"; 
$kategoriq    = (isset($_GET['kategoriq']) ? $_GET['kategoriq'] : "");
$grad         = (isset($_GET['grad']) ? $_GET['grad'] : "");
$text         = (isset($_GET['text']) ? $_GET['text'] : "");
$server       = "localhost"; 
$dbusername   = "root"; 
$dbpassword   = "***"; 
$db_name      = "obqvi";

mysql_connect($server, $dbusername, $dbpassword)or die("Сайтът не може да се свърже към базата данни"); 
mysql_select_db($db_name) or die("Грешна база данни"); 
mysql_query("SET names cp1251");

$pp = "10";
$page = 1;

if(isset($_GET['page'])) { 
	$page = (int)$_GET['page']; 
} 
$redove = ($page - 1) * $pp; 

function cutes($post_text, $simvola_text) {
	if (strlen($post_text)>$simvola_text) {
		$totchkit='...';
	} else {
		$totchkit='';
	}
	return substr($post_text,0 , $simvola_text).$totchkit;
}
$text = urlencode($text);
$url = "http://site.com/?kategoriq={$kategoriq}&grad={$grad}&text={$text}";

$query = "SELECT * FROM `publikuvai` WHERE `text` LIKE '%$text%' AND `kategoriq` LIKE '%$kategoriq%' AND `grad` LIKE '%$grad%' LIMIT $redove, $pp";
$result = mysql_query($query) or die('Error, query failed 1');

while($row = mysql_fetch_array($result)) {
$row['text'] = cutes($row['text'], 90);
echo "<a href='pregled.php?id=$row[id]' data-tooltip='sticky1'>";

echo "<div id='mystickytooltip' class='stickytooltip'>
<div style='padding:5px'>

<div id='sticky1' class='atip'>

<img src='upload/$row[rand_file_name1]' width='100px'></div>

</div></div>";

echo "<table style='background-color: cdcdcd; border-color: 000; width: 712px;' class='rounded' border='4' bgcolor='cdcdcd' align='center'>"; 

include "table.php";

echo"</table></a><br />";
}

$query = "SELECT COUNT(id) AS max FROM publikuvai WHERE `text` LIKE '%$text%' AND `kategoriq` LIKE '%$kategoriq%' 
AND `grad` LIKE '%$grad%'";
$result = mysql_query($query) or die('Error, query failed 2'); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 
$max = $row['max'];
$total= ceil($max/$pp);

$self = $_SERVER['PHP_SELF'];
if($max > 0) {
echo "<center><p aling='top'><b>Намерени обяви: $max</b.</p></center>";
}
else{
echo "<center><font size='5' color='8a1717'><b>Няма намерени резултати,<br>опитай други критерии!</b></font></center>";
}
 
echo "<center>";
if ($page > 1) { 
$prev = ($page - 1); 
echo "<a href=\"{$url}&page=$prev\" class='pagestrelki'><b> <<< </b></a> "; 
} 
else echo "<b class='pagestrelki'> <<< </b> "; 

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

if ($total < 10) { 
for($i=1 ; $i<=$total ; $i++) { 
if ( ($page)==$i ) { 
echo "<b class='pagepasiv'>[$i]</b> "; 
} 
else { 
echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 
} 
} 
else { 
for($i=1 ; $i<=3 ; $i++) { 
if ( ($page)==$i ) { 
echo "<b class='pagepasiv'>[$i]</b> "; 
} 
else { 
echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 
} 

if ($page <= 3) { 
if ($page == 3) echo "<a href=\"{$url}&page=4\" class='pageact'>4</a> "; 
echo "<b>  ...   </b>"; 
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
}

if ($page == 5) echo "<a href=\"{$url}&page=4\" class='pageact'>4</a>";

if ( ($page == 4) or ($page == 5) ) { 
for ($i=$page; $i<=$page+1; $i++) { 
if ($page == $i) echo "<b class=\"pagepasiv\">[$i]</b> "; 
else echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 
echo "<b>  ...  </b>";
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 

if ( ($page > 5) and ($page < ($total - 4)) ) { 
echo "<b>  ...  </b>";
for ($i=$page-1; $i<=$page+1; $i++) { 
if ($page == $i) echo "<b class=\"pagepasiv\">[$i]</b> "; 
else echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 
echo "<b>   ...  </b>"; 
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 

if ( $page > ($total - 5) ) { /* KRAINITE */
echo "<b>  ...  </b>"; 
for ($i=$total-5; $i<=$total; $i++) { 
if ($page == $i) echo "<b class='pagepasiv'>[$i]</b> "; 
else echo "<a href=\"{$url}&page=".$i."\" class='pageact'>".$i."</a> "; 
} 
} 
} 

if ($page < $total) { 
$next = ($page + 1); 
echo "<a href=\"{$url}&page=$next\" class='pagestrelki'><b> >>> </b></a> "; 
} 
else  { echo "<b class='pagestrelki'> >>> </b>"; }
echo "</center>";
?>
 

efrdimitrov

Registered
Ти си уникален, това ще го запомня първият човек, който ми помогна толкова много да си жив и здрав а и между другото аз ползвам това:
PHP:
f (!empty($kategoriq) && !empty($grad) && !empty($text)) {
echo "<center><font size='3' color='000'><b>Категория:</b></font><i> <font color='0e552a' size='4'><b>$kategoriq</b></font></i>
<font size='3' color='000'><b>Град:</b></font><font color='0e552a' size='4'><i> <b>$grad</b></i></b></font>
<font size='3'><b>Текст:</b></font> <font size='4'color='0e552a'>\"<i> <b>$text </b></i>\"</center>";
}
elseif (!empty($kategoriq) && !empty($grad)) {
echo "<center><font size='3' color='000'><b>Категория:</b></font><i> <font color='0e552a' size='4'><b>$kategoriq</b></font></i>
   <font size='3' color='000'><b>Град:</b></font><font color='0e552a' size='4'><i> <b>$grad</b></i></b></font></center>";
}
elseif (!empty($grad) && !empty($text)) {
echo "<center><font size='3' color='000'><b>Град:</b></font><font color='0e552a' size='4'><i> <b>$grad</b></i></b></font>
   <font size='3'><b>Текст:</b></font> <font size='4'color='0e552a'>\"<i> <b>$text </b></i>\"</center>";
}
elseif (!empty($kategoriq) && !empty($text)) {
echo "<center><font size='3' color='000'><b>Категория:</b></font><font color='0e552a' size='4'><i> <b>$kategoriq</b></i></b></font>
   <font size='3'><b>Текст:</b></font> <font size='4'color='0e552a'>\"<i> <b>$text </b></i>\"</center>";
}
elseif (!empty($kategoriq)) {
echo "<center><font size='3' color='000'><b>Категория:</b></font><i> <font color='0e552a' size='4'><b>$kategoriq</b></font></center></i>";
}
elseif (!empty($grad))  {
echo "<center><font size='3' color='000'><b>Град:</b></font><font color='0e552a' size='4'><i> <b>$grad</b></i></b></font></center>";
}
elseif (!empty($text))  {
echo "<p align='center'><font size='3'><b>Текст:</b></font> <font size='4'color='0e552a'>\"<i> <b>$text </b></i>\"";
}
Не от кратките но ми върши работа чао и успехи ако да ти дам повече но не мога +1 :D
 

Горе