Поиск нумерации страниц дает мне предупреждение: деление на ноль

Я получаю это предупреждение> Предупреждение: деление на ноль в < если я наберу что-то, что не существует в базе данных.

Если я наберу что-то, что существует, все работает нормально, я не могу найти или решить проблему.

Ниже приведен скрипт, который я использую на данный момент, мои навыки php не идеальны, но я стараюсь.

<?php$button = mysql_real_escape_string($_GET ['submit']);
$search = $str = $stt = mysql_real_escape_string(strip_tags($_GET ['search']));
$str = strtoupper($str);
$stt = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");

if(strlen($search)<=2) {

echo 'Nothing found for <b>'.strip_tags($str).'</b>. Please try something else ! ';

}else{

echo 'You searched for <b>'.$stt.'</b> ';echo "";
include 'extern_/connectsearch.php';

$search_exploded = explode (" ", $search);

foreach($search_exploded as $search_each)
{
$x++;
if($x==1)
$construct .="title LIKE '%$search_each%'";
else
$construct .="AND title LIKE '%$search_each%'";
}$constructs ="SELECT * FROM table WHERE $construct";
$run = mysql_query($constructs);

$foundnum = mysql_num_rows($run);

if ($foundnum==0)

echo 'No results for <b>'.$search.'</b> ';

else
{$per_page = 36;
$id = (int)mysql_real_escape_string($_GET['page']);
$max_pages = ceil($foundnum / $per_page);
if(!$id)
$id=0;$p_num = $per_page*$id;if($id)
$p_num = ($id - 1) * $per_page;             //first item to display on this page
else
$p_num = 0;

$getquery = mysql_query("SELECT * FROM `table` WHERE $construct ORDER BY date DESC  LIMIT $p_num, $per_page");$title = $row ['title'];

$url = $row ['url'];while($row = mysql_fetch_assoc($getquery))
{echo '<div class="grid"><a href="'. $row['url'] .'"id="'. $row['id'] .'"alt="'. $row['title'] .'"title="'. $row['title'] .'"target="_blank">

<h3 class="style">'. substr($row['title'], 0, 34).' ...</h3>

</a></div>
</div>
</div>
';}}
echo '<center>';?>

<!-- pagination -->

<?php

echo '<center>';$page = $id;
$total_pages = $foundnum;
$limit = $per_page;
if ($page == 0) $page = 1;
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$lpm1 = $lastpage - 1;
$adjacents = 5;$pagination = "";
if($lastpage > 1)
{
$pagination .= "<div class=\"paginate\">";

if ($page > 1)
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$prev\">Prev</a>";if ($lastpage < 7 + ($adjacents * 2))
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<a href='".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter' class='current'>$counter</a>";
else
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter\">$counter</a>";
}
}
elseif($lastpage > 5 + ($adjacents * 2))
{

if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<a href='".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter' class='current'>$counter</a>";
else
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter\">$counter</a>";
}

}
//in middle; hide some front and some back
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{

for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<a href='".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter' class='current'>$counter</a>";
else
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter\">$counter</a>";
}

}

else
{

for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<a href='".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter' class='current'>$counter</a>";
else
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$counter\">$counter</a>";
}
}
}if ($page < $counter - 1)
$pagination.= "<a href=\"".$_SERVER['PHP_SELF']."?search=$search&submit=search&page=$next\">Next</a>";

$pagination.= "</div>\n";
}

echo $pagination;

echo '</center>';
}

?>

Предупреждение: Деление на ноль в главная / search.php онлайн 348

линия 348

$ lastpage = ceil ($ total_pages / $ limit);

И еще кое-что, что я хотел бы знать — достаточно ли безопасен этот скрипт?

Любая помощь приветствуется. заранее спасибо

0

Решение

Ваша проблема в том, что код не установлен $ per_page во всех случаях. Если вы проверите свой код, вы увидите, что единственное место, которое устанавливает эту переменную, это когда:

if ($foundnum==0)

Но код все еще выполняется и когда выполняется

$limit = $per_page;
if ($page == 0) $page = 1;
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);

Вар $ per_limit не определено и его значение ноль. Итак, когда вы делаете разделение $ Total_pages / $ предел PHP бросает ноль в 0 и это причина, по которой вы получаете эту ошибку только тогда, когда значение БД не возвращается.

Решение так же просто, как установлено во всех случаях $ per_page значение.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]