Постраничный переход (кривой)

EKCTPEMICT
На сайте с 13.07.2007
Offline
112
690

Добрый день!

Есть ситуация: в БД около 100 записей в опредленной категории. Есть желание разбить весь список блоками по 10-15 элементов. Для этого предполагается постраничная навигация

В итоге напрограмил. Но данная структура подсчитывает к-во товаров в категории верно, НО выводит только товар с id=1 столько раз, сколько товаров в категории :(

Помогите изменить так, что б выводило перечень товаров из данной категории.

Заранее благодарю.



<?php
/* подключение базы ответственной за наполнение тукущей страницы*/

$db = mysql_connect("localhost","client","client");
mysql_select_db("totalprint",$db);
$result = mysql_query("SELECT * FROM pages WHERE id='6'",$db); /* замени ID страницы на нужную (см базу)*/
$myrow = mysql_fetch_array ($result);

/* подключение базы ответственной за шаблон страниц*/
$db2 = mysql_connect("localhost","client","client");
mysql_select_db("totalprint",$db2);
$result2 = mysql_query("SELECT * FROM settings",$db2);
$myrow2 = mysql_fetch_array ($result2);


/* подключение базы ответственной за выведения товаров опреденной категории */
$db5 = mysql_connect("localhost","client","client");
mysql_select_db("totalprint",$db5);
if (!isset($id)) {$id = 1;}

$result5 = mysql_query("SELECT * FROM category WHERE id='$id'",$db5);
$myrow5 = mysql_fetch_array ($result5);

/* подключение базы ответственной за шаблон страниц продукта */
$db3 = mysql_connect("localhost","client","client");
mysql_select_db("totalprint",$db3);
$result3 = mysql_query("SELECT * FROM products WHERE category_multi='$id'",$db3);
$myrow3 = mysql_fetch_array ($result3);


?>

<h1><? printf("%s",$myrow5['name']); ?></h1>
<!-- вывод в цикле товаров -->

<?php $nums = 10;

if (isset($_GET['page']))
{
$page = intval($_GET['page']);
}
else
{
$page = 1;
}

$query = "SELECT COUNT(*) AS 'counter' FROM products WHERE category_multi='$id'";
$sql = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($sql);

$elements = $row['counter'];

$pages = ceil($elements/$nums);


if ($page < 1)
{
$page = 1;
}
elseif ($page > $pages)
{
$page = $pages;
}


$start = ($page-1)*$nums;

// когда у нас в таблице нет записей
if ($start < 0) $start = 0;

$query = "SELECT * FROM `products` WHERE category_multi='$id' LIMIT {$start}, {$nums}";
$sql = mysql_query($query) or die(mysql_error());

while ($row = mysql_fetch_assoc($sql))
{
// здесь выводим наши записи из базы

echo("
<div class='product'>
<table width='100%' border='0' cellpadding='10' cellspacing='0' bgcolor='#FFFFFF'>
<tr><td width='160' rowspan='2' align='center' valign='middle class='image_preview''> ");
/* изображение товара*/
printf("<a href='products_description?id=%s'><img src='",$myrow3['id']);
printf("products/%s",$myrow3['small_image']);
echo("' border='0' width='146' alt='");
printf("Купить %s %s %s и почитать описание и технические характеристики на %s этого типа",$myrow3['category_single'],$myrow3['producer'],$myrow3['tovar'],$myrow3['category_multi']);
echo("' title='");
printf("Купить %s %s %s и почитать описание и технические характеристики на %s этого типа",$myrow3['category_single'],$myrow3['producer'],$myrow3['tovar'],$myrow3['category_multi']);
echo("' /></a></td><td rowspan='2' align='center' valign='middle'><img src='images/product-divider.png' /></td>
<td colspan='2' align='left' valign='top'>");
printf("<a style='red' href='products_description?id=%s'>",$myrow3['id']);
printf("<h3 title='Узнайте как купить %s %s %s'>",$myrow3['category_single'],$myrow3['producer'],$myrow3['tovar']);
printf("%s %s %s",$myrow3['category_single'],$myrow3['producer'],$myrow3['tovar']);
echo("</h3></a><ul>");
printf("%s",$myrow3['short_text']);
echo("</ul></td></tr><tr><td width='50%' align='center' valign='top'><strong>Цена: ");
printf("%s гривен </strong></td>",$myrow3['price']);
echo("<td width='50%' align='center' valign='top' bgcolor='#CCCCCC'>");
printf("<a href='products_description?id=%s' title='Подробное описание и характеристики на %s %s %s",$myrow3['id'],$myrow3['category_single'],$myrow3['producer'],$myrow3['tovar']);
echo("' href='/product_id=150' class='more'>Подробное описание</a> <img src='images/cur_more.gif' /></td></tr></table></div>");

}


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

$neighbours = 6;
$left_neighbour = $page - $neighbours;
if ($left_neighbour < 1) $left_neighbour = 1;

$right_neighbour = $page + $neighbours;
if ($right_neighbour > $pages) $right_neighbour = $pages;

if ($page > 1)
{
print ' <a href="?page=1">начало</a> ... <a href="?page=' . ($page-1) . '">&#8592;сюда</a> ';
}

for ($i=$left_neighbour; $i<=$right_neighbour; $i++)
{
if ($i != $page)
{
print ' <a href="?page=' . $i . '">' . $i . '</a> ';
}
else
{
// выбранная страница
print ' <b>' . $i . '</b> ';
}
}

if ($page < $pages)
{
print ' <a href="?page=' . ($page+1) . '">туда&#8594;</a> ... <a href="?page=' . $pages . '">конец</a> ';
}
?>

tommy-gung
На сайте с 22.11.2006
Offline
304
#1

во первых, не нужно перед каждым запросом создавать новое соединение с бд

причина скорее всего тут

if (!isset($id)) {$id = 1;}

ps: код в теги

 вставляйте. Невозможно читать
Здесь не могла быть ваша реклама

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий