Проблем със скрипта за странициране на админ.

h4ckY

Registered
Здравейте,
имам малък проблем със въпрос скрипт, проблема идва след формата за търсене, избирам критерийте за търсене, изпращам резилтатите и след това севиждат само номерата на страници, и бутоните за напред и последна страница но не излизат резултатите. Проблем идва само на тоя скрипт, предполагам че съм объркал някаде, на другите места работи без проблеми.

КОД:

<?php
include "dbcon.php";
if(isset($_POST['submit']) || (isset($_GET['page'])) ){

$category = strip_tags($_POST['category']);
$offer_type = strip_tags($_POST['offer_type']);
$location = strip_tags($_POST['location']);
$results = 0 ;

mysql_connect($host,$dbuser,$dbpass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());
// определяме колко реда да ни показва. В случая 20 на страница.
$broinastranica = 5;
// от коя страница да почне да показва.Може да искаме да е от втора или от последна.
$pageNum = 1;
// ако има получени данни $_GET['page'] ще покаже страницата с номер $_GET['page']
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
//тука определяме кои редове ще се показват - примерно ако $_GET['page']=2
// ще покаже от 20 до 40-ти ред.

$redove = ($pageNum - 1) * $broinastranica;
//заявката ще върне само посочените редове - примерно от 20 до 40 в зависимост от $_GET['page']
$query = " SELECT * FROM estate WHERE category LIKE '$category' && offer_type LIKE '$offer_type' && location LIKE '$location' " . " LIMIT $redove, $broinastranica";
$result = mysql_query($query) or die('Error, query failed1');
mysql_close();

// print-ваме посочените редове в таблица.
while($row = mysql_fetch_array($result))
{
echo "
<div style=\"width:335px; height:100px;background-color: green;\" >
<div style=\"float: left; width:105px; height:100px;\">
<a href=\"index.php?offerid=$row[id]\"><img src=\"$row[pic1]\" style=\"width:100px; height:100px; border:0\" /></a>
</div>
<div class=\"showtext\" style=\"float:right;\">
<a href=\"index.php?offerid=$row[id]\" style=\"text-decoration:none; color:black;\">
<b>Оферта</b>: $row[id]</a><br />
<b>Категория</b>: $row[category] <br />
<b>Тип</b>: $row[offer_type]<br />
<b>Местонахождение</b>: $row[location] <br />
<b>Цена</b>: $row[price]лв. <br />
</div>
</div>
<hr width=\"100px\" style=\"border: 2px; color: black;\">
";
$results = 1;
}

// проверяваме таблицата колко редове има
mysql_connect($host,$dbuser,$dbpass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());
$query = "SELECT COUNT(id) AS numrows FROM estate";
$result = mysql_query($query) or die('Error, query failed2');
mysql_close();
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];


$maxPage = ceil($numrows/$broinastranica);

$self = $_SERVER['PHP_SELF'];
$nomeranastranici = '';

for($page = 1; $page <= $maxPage; $page++){
if ($page == $pageNum)
{
$nomeranastranici .= " $page ";
}else{
$nomeranastranici .= " <a href=\"$self?p=4&page=$page\">$page</a> ";
}
}

// създаване на ликовете [предишна] [следваща]
// както и линковете [първа] и [последна]
if ($pageNum > 1){
$page = $pageNum - 1;
$predishna = " <a href=\"$self?p=4&page=$page\"> [<<<] </a> ";
$parva = " <a href=\"$self?p=4&page=1\">[първа]</a> ";
}else{
$predishna = ' ';
$parva = ' ';
}

if ($pageNum < $maxPage){
$page = $pageNum + 1;
$sledvashta = " <a href=\"$self?p=4&page=$page\"> [>>>] </a> ";
$posledna = " <a href=\"$self?p=4&page=$maxPage\">[последна]</a> ";
}else{
$sledvashta = ' ';
$posledna = ' ';
}

// показваме
echo $parva . $predishna . $nomeranastranici . $sledvashta . $posledna;
}else{
echo "
<div style=\"text-align: right; float: left;\">
<form action=\"index.php?p=4\" method=\"post\">
Категория на имота:
<select name=\"category\">
<option value=\"0\">Моля изберете</option>
<option value=\"1\">Къща</option>
<option value=\"2\">Апартамент</option>
<option value=\"3\">Вила</option>
<option value=\"4\">Земеделски Имот</option>
<option value=\"5\">Горски Имот</option>
<option value=\"6\">Парцел в населено място</option>
</select><br />

Тип на офертата:
<select name=\"offer_type\">
<option value=\"0\">Моля изберете</option>
<option value=\"1\">Купувам</option>
<option value=\"2\">Продавам</option>
<option value=\"3\">Под наем</option>
</select><br />

Местонахождение:
<select name=\"location\">
<option value=\"0\">Моля изберете</option>
<option value=\"1\">Монтана</option>
<option value=\"2\">Обл. Монтана</option>
<option value=\"3\">Друго </option>
</select><br /><br />
<input type=\"submit\" name=\"submit\" value=\"Търси\" />
</form>
</div>
";
}
?>
 
Break4y каза:
Дай кода на страницата на която искаш да сложиш странициране :)

това е кода на цялата страница, и тази страница ще инклудва във индекса кадето е само темплайта, и кода за менюто :)
 
незнам защо ти е но ето:

<?php

if(isset($_POST['submit']))
{
$category = strip_tags($_POST[category]);
$offer_type = strip_tags($_POST[offer_type]);
$location = strip_tags($_POST[location]);
$results = 0 ;

include ('switchers.php');
include ('dbcon.php');

$connect = mysql_pconnect($host,$dbuser,$dbpass) or die('Unable to connect to database');
mysql_select_db($db) or die('Unable to select database');

$query = "SELECT * FROM estate WHERE category LIKE '$category' && offer_type LIKE '$offer_type' && location LIKE '$location'";
$result = mysql_query($query);

$num = mysql_num_rows($result);{
for ($i=0; $i<$num; $i++) {
$row = mysql_fetch_array($result);

echo "
<div style=\"width:335px; height:100px;background-color: green;\" >
<div style=\"float: left; width:105px; height:100px;\">
<a href=\"index.php?offerid=$row[id]\">
<img src=\"$row[pic1]\" style=\"width:100px; height:100px; border:0\" /></a>
</div>
<div class=\"showtext\" style=\"float:right;\">
<a href=\"index.php?offerid=$row[id]\" style=\"text-decoration:none; color:black;\">
<b>Оферта</b>: $row[id]</a><br />
<b>Категория</b>: $row[category] <br />
<b>Тип</b>: $row[offer_type]<br />
<b>Местонахождение</b>: $row[location] <br />
<b>Цена</b>: $row[price]лв. <br />
</div>
</div>
<hr width=\"100px\" style=\"border: 2px; color: black;\">
";
$results = 1;
}
}
mysql_close();

if($results == 0){
echo "Няма намерени резултати!";
}
} else {
echo "
<div style=\"text-align: right; float: left;\">
<form action=\"index.php?page=4\" method=\"post\">
Категория на имота:
<select name=\"category\">
<option value=\"0\">Моля изберете</option>
<option value=\"1\">Къща</option>
<option value=\"2\">Апартамент</option>
<option value=\"3\">Вила</option>
<option value=\"4\">Земеделски Имот</option>
<option value=\"5\">Горски Имот</option>
<option value=\"6\">Парцел в населено място</option>
</select><br />

Тип на офертата:
<select name=\"offer_type\">
<option value=\"0\">Моля изберете</option>
<option value=\"1\">Купувам</option>
<option value=\"2\">Продавам</option>
<option value=\"3\">Под наем</option>
</select><br />

Местонахождение:
<select name=\"location\">
<option value=\"0\">Моля изберете</option>
<option value=\"1\">Монтана</option>
<option value=\"2\">Обл. Монтана</option>
<option value=\"3\">Друго </option>
</select><br /><br />
<input type=\"submit\" name=\"submit\" value=\"Търси\" />
</form>
</div>
";
}
?>
 
Код:
<?php
   include("news/config.php");
   
$broinastranica = 20;

// от коя страница да почне да показва.Може да искаме да е от втора или от последна.

$pageNum = 1;

// ако има получени данни $_GET['page'] ще покаже страницата с номер $_GET['page']

if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}

//тука определяме кои редове ще се показват - примерно ако $_GET['page']=2
// ще покаже от 20 до 40-ти ред.
$redove = ($pageNum - 1) * $broinastranica;
//заявката ще върне само посочените редове - примерно от 20 до 40 в зависимост от $_GET['page']
$query = " SELECT * FROM news ORDER by newsid DESC " .
" LIMIT $redove, $broinastranica";
$result = mysql_query($query) or die('Error, query failed');

 while($row = mysql_fetch_array($result))
   {
if(isset($_POST['submit']))
{
$category = strip_tags($_POST[category]);
$offer_type = strip_tags($_POST[offer_type]);
$location = strip_tags($_POST[location]);
$results = 0 ;

include ('switchers.php');
include ('dbcon.php');

$connect = mysql_pconnect($host,$dbuser,$dbpass) or die('Unable to connect to database');
mysql_select_db($db) or die('Unable to select database');

$query = "SELECT * FROM estate WHERE category LIKE '$category' && offer_type LIKE '$offer_type' && location LIKE '$location'";
$result = mysql_query($query);

$num = mysql_num_rows($result);{
for ($i=0; $i<$num; $i++) {
$row = mysql_fetch_array($result);

echo "
<div style=\"width:335px; height:100px;background-color: green;\" >
<div style=\"float: left; width:105px; height:100px;\">
<a href=\"index.php?offerid=$row[id]\">
<img src=\"$row[pic1]\" style=\"width:100px; height:100px; border:0\" /></a>
</div>
<div class=\"showtext\" style=\"float:right;\">
<a href=\"index.php?offerid=$row[id]\" style=\"text-decoration:none; color:black;\">
<b>Оферта</b>: $row[id]</a><br />
<b>Категория</b>: $row[category] <br />
<b>Тип</b>: $row[offer_type]<br />
<b>Местонахождение</b>: $row[location] <br />
<b>Цена</b>: $row[price]лв. <br />
</div>
</div>
<hr width=\"100px\" style=\"border: 2px; color: black;\">
";
$results = 1;
}
}
mysql_close();

if($results == 0){
echo "Няма намерени резултати!";
}
} else {
echo "
<div style=\"text-align: right; float: left;\">
<form action=\"index.php?page=4\" method=\"post\">
Категория на имота:
<select name=\"category\">
<option value=\"0\">Моля изберете</option>
<option value=\"1\">Къща</option>
<option value=\"2\">Апартамент</option>
<option value=\"3\">Вила</option>
<option value=\"4\">Земеделски Имот</option>
<option value=\"5\">Горски Имот</option>
<option value=\"6\">Парцел в населено място</option>
</select><br />

Тип на офертата:
<select name=\"offer_type\">
<option value=\"0\">Моля изберете</option>
<option value=\"1\">Купувам</option>
<option value=\"2\">Продавам</option>
<option value=\"3\">Под наем</option>
</select><br />

Местонахождение:
<select name=\"location\">
<option value=\"0\">Моля изберете</option>
<option value=\"1\">Монтана</option>
<option value=\"2\">Обл. Монтана</option>
<option value=\"3\">Друго </option>
</select><br /><br />
<input type=\"submit\" name=\"submit\" value=\"Търси\" />
</form>
</div>
";
}


// проверяваме таблицата колко редове има
$query = "SELECT COUNT(newsid) AS numrows FROM news";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];


$maxPage = ceil($numrows/$broinastranica);

$self = $_SERVER['PHP_SELF'];
$nomeranastranici = '';

for($page = 1; $page <= $maxPage; $page++)
{
if ($page == $pageNum)
{
$nomeranastranici .= " $page ";
}
else
{
$nomeranastranici .= " <a href=\"$self?page=$page\">$page</a> ";
}
}



// създаване на ликовете [предишна] [следваща]
// както и линковете [първа] и [последна]


if ($pageNum > 1)
{
$page = $pageNum - 1;
$predishna = " <a href=\"$self?page=$page\"> [<<<<<] </a> ";

$parva = " <a href=\"$self?page=1\">[първа]</a> ";
}
else
{
$predishna = ' ';
$parva = ' ';
}

if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$sledvashta = " <a href=\"$self?page=$page\"> [>>>>>] </a> ";

$posledna = " <a href=\"$self?page=$maxPage\">[последна]</a> ";
}
else
{
$sledvashta = ' ';
$posledna = ' ';
}

// показваме
echo $parva . $predishna . $nomeranastranici . $sledvashta . $posledna;





?>


Пробвай така но несам сигурен.
 
Код:
$query = "SELECT * FROM estate WHERE category LIKE '$category' && offer_type LIKE '$offer_type' && location LIKE '$location'";
$result = mysql_query($query);

$num = mysql_num_rows($result);

echo $num;

първо: колко резултата връща, понеже ако не си избрал категория или тип или локация в заявката ще ти влезе '0' -> пък

category LIKE '0' && offer_type LIKE '0' && location LIKE '0', вярвам че нямаш такива id-та :)

и второ

Код:
 $query = "SELECT COUNT(id) AS numrows FROM estate";

за страницирането трябва и в тази заявка да включиш where клаузата за да ти бачка правилно. Защото така винаги ще ти вади общия брой. Пък според критериите, ако излезнат 20, винаги ще ти дава всичките, заради заявката SELECT COUNT(id) AS numrows FROM estate (например 200), и ще страницираш 200 парчета, пък реално имаш 20 :)
 
Хм оправих го показва резултатите :) обаче възникна друг проблем който ще трябва да отстваня :)
 
Когато НЕ си избрал критерии НЕ трябва да влизат в заявката (where клаузата), тези които не си избрал!
 
Ми аз си написах скриптче така че, въобще не може да се изпълни заявката ако не са избрани критерий, така че до where никогато не стигат променливи със стойност 0.
 

Back
Горе