я тоже очень долго ломал, то что получилось смотри ниже. это код вывода сообщений в моей гостевой книге постраницам. скрипт очень объемный, но если сесть с целью, разобраться можно. вообще вот:
| Код | <?php // Если сообщений нет вообще if($num_rows == 0) {$messages = "<div align='center'><font color=#CC3333><b>Сообщений нет</b></font></div>";} // Если есть else { // Реализуем постраничную прокрутку
$num_posts = 10; // Количество постов на страницу $num_pages = ceil($num_rows / $num_posts); // Количество страниц
$num_links = 2; //Колчеиство ссылок рядом с выделенной
$error_with_p = false; //Если не указана страница if(empty($_GET['p'])){ $error_width_p = true; $_GET['p'] = $num_pages; $apage = $num_pages; } else { // Если указана страница, большая чем существующее количество if($_GET['p'] > $num_pages) { $url_error = "<div align='center'><font color=#CC3333>Ручное изменение URL не желательно.</font></div>"; $error_width_p = true; $_GET['p'] = $num_pages; $apage = $num_pages; } // Если указана меньшая страница, чем стартовая if($_GET['p'] < 1 or $_GET['p'] == 0) { $url_error = "<div align='center'><font color=#CC3333>Ручное изменение URL не желательно.</font></div>"; $error_width_p = true; $_GET['p'] = 1; $apage = 1; } } // Если нет ошибок то присваиваем значение if($error_with_p==false){ $apage = $_GET['p']; } unset($error_with_p); $end_num_link = $apage + $num_links; $start_num_link = $apage - $num_links; if($end_num_link > $num_pages){ $snl_minus = $end_num_link - $num_pages; $end_num_link = $num_pages; $start_num_link = $start_num_link - $snl_minus; } if($start_num_link < 1){ $end_num_link = $end_num_link - $start_num_link + 1; $start_num_link = 1; }
$start_num_post = ($apage * $num_posts) - $num_posts; //Начинать вывод с: $end_num_post = $apage * $num_posts; //Продолжать вывод до: // Если окончательный пост больше чем количество постов, то урезаем if($end_num_post > $num_rows){ $end_num_post = $num_rows; }
$p_links = ""; // Создаем переменную с ссылками $p_minus = $apage - 1; $p_plus = $apage + 1; if(!empty($url_error)){ $messages = "<div align='center'><b>".$url_error."</b></div><Br>"; } if($apage != 1){ $p_links = $p_links." [<a href=index.php?p=1 class=p>Первая</a>]"; } elseif($apage = 1) { $p_links = $p_links." <font class='gray'>[<b><u>Первая</u></b>]</font>"; }
if($apage > 1){ $p_links = $p_links." [<a href=index.php?p=".$p_minus." class=p>«</a>]"; } else { $p_links = $p_links." <font class='gray'>[<u>«</u>]</font>"; }
for($i = 1; $i <= $num_pages; $i++){ if($i >= $start_num_link and $i <= $end_num_link){ if($i == $_GET['p']){ $p_links = $p_links." [<a href=index.php?p=".$i." class=pb>".$i."</a>]"; } else { $p_links = $p_links." [<a href=index.php?p=".$i." class=p>".$i."</a>]"; } } elseif($i > $end_num_link){ break; }
} if($apage < $num_pages){ $p_links = $p_links." [<a href=index.php?p=".$p_plus." class=p>»</a>]"; } else { $p_links = $p_links." <font class='gray'>[<u>»</u>]</font>"; }
if($apage != $num_pages){ $p_links = $p_links." [<a href=index.php?p=".$num_pages." class=p>Последняя</a>]"; } elseif($apage = $num_pages) { $p_links = $p_links." <font class='gray'>[<b><u>Последняя</u></b>]</font>"; }
$messages = $messages."Страницы: ".$p_links." <br><br>";
mysql_connect($h, $user, $pass) or die(mysql_error()); mysql_select_db($dbname) or die(mysql_error()); $sql = "SELECT * FROM `qb_messages` ORDER BY `number` ASC LIMIT 0 , 30"; $result = mysql_query($sql) or die(mysql_error()); $j = 0;
while($row = mysql_fetch_array($result)) { $j++;
if($j > $start_num_post and $j <= $end_num_post){ $mail_link_open = ""; $mail_link_close = ""; $city_string = ""; $icq_string = ""; if(!empty($row['email'])){ $mail_link_open = "<a href=mailto:".$row['email'].">"; $mail_link_close = "</a>"; } if(!empty($row['city'])){ $city_string = "из города ".$row['city']; } if(!empty($row['icq'])){ $icq_string = "(".$row['icq'].")"; } $row['name'] = str_replace("[ap]","'",$row['name']); $row['name'] = str_replace("[sl]","\r",$row['name']);
$row['city'] = str_replace("[ap]","'",$row['city']); $row['city'] = str_replace("[sl]","\r",$row['city']);
$row['message'] = str_replace("[ap]","'",$row['message']); $row['message'] = str_replace("[sl]","\r",$row['message']);
$messages = $messages." <table width=100% cellspacing=0 cellpadding=0 border=0> <tr><td valign=bottom><font style='font-size: 1pt;'><img src='images/line.gif' width='100%' height='1'></font></td></tr> <tr><td class='msg_title'> От ".$mail_link_open."<b>".$row['name']."</b>".$mail_link_close." ".$icq_string." ".$city_string." </td></tr> <tr><td valign=bottom><font style='font-size: 1pt;'><img src='images/line.gif' width='100%' height='1'></font></td></tr> <tr><td class='msg_msg'><div align='justify'>".$row['message']."<br>"; if(!empty($row['answer'])) { $messages = $messages."<br><table width=100%><tr> <td width=100% class='answer'><div align='justify'>".$row['answer']."</div> </td></tr></table>"; } $messages = $messages."</div></td></tr> <tr><td> <div align='right'> <table cellspacing=0 cellpadding=0 border=0> <tr><td> <table cellspacing=0 cellpadding=0 border=0><tr> <td class='msg_date_romb' width=15 ></td> <td class='msg_date' > ".$row['date']."</td></tr></table> </td> <td> <table cellspacing=0 cellpadding=0 border=0><tr> <td class='msg_date_romb' width=15 ></td> <td class='msg_date' > №".$j."</td></tr></table> </td> </tr></table></div> </td></tr> </table><br>"; } elseif($j > $end_num_post){ break; }
}
mysql_close();
$start_num_post = $start_num_post + 1; $messages = $messages."<img src='images/line.gif' width='100%' height='1'> Страницы: ".$p_links."<br> Cообщения с <b>".$start_num_post."</b> по <b>".$end_num_post."</b>. Кол-во сообщений: <b>".$num_rows."</b>.<br> <a href='admin/login.php'>Вход в админ-центр</a><br><br>"; } ?>
| Добавлено @ 22:15 but if читать не хочется, то скажу... в цикле, который, выводит у тебя элементы массива, как я понял, сделай $j, который будет отсчитывать. поставь условия, что если оно больше, чем количество за страницу, то прекращать... ну я думаю... идею понял удачи! |