|
|
|
| Суть вопроса: есть комментарии в два ряда, одни для женщин другие для мужчин и к ним две таблицы в базе MySQL. Всё бы хорошо но мне надо чтобы была постраничная навигация. Допустим чтобы было по десять комментариев на странице в каждом столбце.
Я сделал навигацию но получается только к одной таблице пробовал подсчитать общее количество записей в двух таблицах, но получается что работает не корректно. Если в таблице где есть навигация записей только 5 а в другой 25 та увидеть можно только 5 записей .
Другой вариант с общим подсчетом записей выводит другую страницу после: допустим в таблице ж 3 записи а в таблице м 2 в совокупности выходит 5 записей.Вопрос как сделать обычную навигацию чтобы выводилось 5 и 5 если больше хотя бы в одном столбце выводилась ссылка на другую страницу.
Надеюсь понятно объяснил заранее спасибо.
CREATE TABLE `comments` (
`id` int(5) NOT NULL auto_increment,
`post` varchar(5) NOT NULL,
`author` varchar(100) NOT NULL,
`text` text NOT NULL,
`date` date NOT NULL,
`email` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=71 ;
|
<?PHP
echo "<p>Кометарии<p>";
$result77 = mysql_query("SELECT str FROM options", $db);
$myrow77 = mysql_fetch_array($result77);
$num = $myrow77["str"];
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result01 = mysql_query("SELECT COUNT(c.*) AS count_c, COUNT(cs.*) AS count_cs FROM comments AS c LEFT JOIN commentsss AS cs USING (post) WHERE post='$id'");
echo mysql_error();
$temp = mysql_fetch_array($result01);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result0 = mysql_query ("SELECT * FROM comments WHERE post='$id' ORDER BY id DESC, id DESC LIMIT $start, $num",$db);
if (mysql_num_rows($result0) > 0)
{
$myrow0 = mysql_fetch_array($result0);
do
{
@printf ("<div class='post_div'><p class='post_comment_add'>Комментарий добавила: <strong>%s</strong> <br> Дата: <strong>%s</strong></p>
<p>%s</p></div>",$myrow0["author"], $myrow0["date"], $myrow0["text"]);
}
while ($myrow0 = mysql_fetch_array($result0));
// Проверяем нужны ли стрелки назад <a href=post.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a> ';
if ($page != 0) $pervpage = '<a href=post.php?post='.$cat.'&page=1><</a> ';
// Проверяем нужны ли стрелки вперед <a href=post.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';
if ($page != $total) $nextpage = ' <a href=post.php?post='.$cat.'&page='. ($page + 1) .'>></a> ';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=post.php?post='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> ';
if($page - 4 > 0) $page4left = ' <a href=post.php?post='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> ';
if($page - 3 > 0) $page3left = ' <a href=post.php?post='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> ';
if($page - 2 > 0) $page2left = ' <a href=post.php?post='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> ';
if($page - 1 > 0) $page1left = '<a href=post.php?post='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> ';
if($page + 5 <= $total) $page5right = ' <a href=post.php?post='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' <a href=post.php?post='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' <a href=post.php?post='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' <a href=post.php?post='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' <a href=post.php?post='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню если страниц больше одной
if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: zorg84
(17.07.2011 в 11:12)
| | примерно...
<?
$how = 10;
$db->query('SELECT `id`, `title_'.$lang.'`, `content_'.$lang.'`, `color_first`, `gender`, `groups` FROM `catalog`
WHERE `shop` = '.$shop.' AND `active` = 1 ORDER BY `id` DESC LIMIT '.($page * $how).', '.$how);
$a = $db->fetch(); // массив данных из нужной таблицы
$db->query('SELECT `id` FROM `catalog` WHERE `shop` = '.$shop.' AND `active` = 1'); // выбор из нужной таблицы количество всех записей
$db->pages($smarty, $how, $page);
function pages($smarty, $how, $page)
{
$count = mysql_num_rows($this->res);
//$this->requests++;
//$s = array();
$count = $count / $how;
for ($i = 0; $i < $count; $i ++)
$s[] = $i;
$max = sizeof($s);
if($page)
$one = $page - 1;
else
{
$one = 0;
unset($_SESSION['min']);
}
if(!$_SESSION['min']) $_SESSION['min'] = 0;
$step = 10 + $one;
if($step <= $max)
{
if($_SESSION['max'] && $page == $_SESSION['max'])
{
for($i = $one; $i < $step; $i ++)
$shh[] = $i;
}
else
{
for($i = $_SESSION['min']; $i < $_SESSION['min'] + 10; $i ++)
$shh[] = $i;
}
}
else
{
if($max <= 10)
{
// unset($shh);
for($i = 0; $i < $max; $i ++)
$shh[] = $i;
}
else {
// unset($shh);
for($i = $max - 10; $i < $max; $i ++)
$shh[] = $i;
}
}
if($_SESSION['min'] && $page == $_SESSION['min'])
{
unset($shh);
$st = $page - 8;
if($st <= 0)
{
for($i = 0; $i < 10; $i ++)
$shh[] = $i;
}
else
{
for($i = $st; $i < 11 + ($page - 9); $i ++)
$shh[] = $i;
}
}
if($shh)
{
$_SESSION['min'] = min($shh);
$_SESSION['max'] = max($shh);
}
$smarty->assign('total', $max - 1);
$smarty->assign('pages', $shh);
$smarty->assign('pagescount', $i);
// постраничная навигация
return;
}
?>
на сайте ссылка вида ?page=9
|
работает вот так
http://maechka.com.ua/ | |
|
|
|
|
|
|
|
для: moonfox
(18.07.2011 в 00:37)
| | О буду пробовать Спасибоо!!
Если есть ещё примеры выкладывайте | |
|
|
|