Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: постраничная навигация
 
 автор: Oligarx   (17.04.2006 в 00:30)   письмо автору
 
 

вот такой скрипт

<?
 
require("mysql.class");

 
$my=new class_mysql;
 
$my->sql_connect();

///////////////////////////////////////////////////////////////////////
/// Начинаем мутить постраничную навигацию
///////////////////////////////////////////////////////////////////////

$num_post=3;
@
$page $_GET['page']; // Определяем текущую страницу

//// Определяем общее число сообщений в базе
$result=mysql_query("SELECT COUNT(*) FROM $my->sql_tbname");
$posts mysql_result($result,0);

//Находим общее число страниц
$total intval(($posts 1) / $num_post) + 1;

// Определяем начало сообщений для текущей страницы
$page intval($page);

// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page 0$page 1;
  if(
$page $total$page $total;

//Вычисляем начиная с какого номера следует выводить сообщения
$start $page $num_post $num_post;

//////////////////////////////////////////////////////////////////$XRENb=$posts - ($num_post * $total);

// Выбираем $num_page сообщений начиная с номера $start
$result mysql_query("SELECT * FROM tb_gvest LIMIT $start$num_post");

// В цикле переносим результаты запроса в массив $postrow
while($postrow[] = mysql_fetch_array($result))


/////////////////////////////////////////////////////////////////////////
// Тут уже непосредственный вывод сообщений
/////////////////////////////////////////////////////////////////////////
    
// Определяем таблицу и заголовок
      
echo "<html>
                <head>
                  <title>Клёвая штука</title>
                </head>
               <body>"
;
      echo 
"<table border=1 width=100%>";
      echo 
"<tr bgcolor=#eeeeee><td>имя</td><td>сообщение</td><td>e-mail</td><td>icq</td></tr>";

for(
$i=0$i $num_post$i++)
 {
 echo 
"<tr>
            <td>"
.@$postrow[$i]['name']."</td>
            <td>"
.@$postrow[$i]['msg']."</td>
            <td>"
.@$postrow[$i]['mail']."</td>
            <td>"
.@$postrow[$i]['icq']."</td>
           </tr>"
;
 }

echo 
"</table>";


/////////////////////////////////////////////////////////////////////////////////////////
// Теперь выводим ссылки навигации
/////////////////////////////////////////////////////////////////////////////////////////

// Проверяем нужны ли стрелки назад
if ($page != 1$pervpage '<a href= ./index.php?page=1><<</a>
                               <a href= ./index.php?page='
. ($page 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total$nextpage ' <a href= ./index.php?page='. ($page 1) .'>></a>
                                   <a href= ./index.php?page=' 
.$total'>>></a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page 0$page2left ' <a href= ./index.php?page='. ($page 2) .'>'. ($page 2) .'</a> | ';
if(
$page 0$page1left '<a href= ./index.php?page='. ($page 1) .'>'. ($page 1) .'</a> | ';
if(
$page <= $total$page2right ' | <a href= ./index.php?page='. ($page 2) .'>'. ($page 2) .'</a>';
if(
$page <= $total$page1right ' | <a href= ./index.php?page='. ($page 1) .'>'. ($page 1) .'</a>';

// Вывод меню
echo @$pervpage.@$page2left.@$page1left.'<b>'.@$page.'</b>'.@$page1right.@$page2right.@$nextpage;



echo 
"</body></html>";

// Освобождаем оперативку ...


сообщения выводятся по 3 штуки на странице ... и фишка в том, что если например в базе 4 сообщения, то на второй странице будет одно сообщение и 2 <tr> .... которые некрасиво выглядят и ваще раздражают ... а если в базе ваще нет сообщений, то на первый странице ваще выводятся 3 <tr> ...
и былоб ваще замечательно, еслиб вы помогли модифицировать её в вид как на вашем форуме ...

Заранее спасибо.

   
 
 автор: _Robot   (17.04.2006 в 02:34)   письмо автору
 
   для: Oligarx   (17.04.2006 в 00:30)
 

попробуй так

<? 
require("mysql.class"); 

$my=new class_mysql
$my->sql_connect(); 


/////  выводим html
      
echo "<html> 
                <head> 
                  <title>Клёвая штука</title> 
                </head> 
               <body>"

///
/////////////////////////////////////////////////////////////////////// 
/// Начинаем мутить постраничную навигацию 
/////////////////////////////////////////////////////////////////////// 

$num_post=3
@
$page $_GET['page']; // Определяем текущую страницу 

//// Определяем общее число сообщений в базе 
$result=mysql_query("SELECT COUNT(*) FROM $my->sql_tbname"); 
$posts mysql_result($result,0); 

//Находим общее число страниц 
$total intval(($posts 1) / $num_post) + 1

// Определяем начало сообщений для текущей страницы 
$page intval($page); 

// Если значение $page меньше единицы или отрицательно 
// переходим на первую страницу 
// А если слишком большое, то переходим на последнюю 
if(empty($page) or $page 0$page 1
  if(
$page $total$page $total

//Вычисляем начиная с какого номера следует выводить сообщения 
$start $page $num_post $num_post

// Выбираем $num_page сообщений начиная с номера $start 
$result2mysql_query("SELECT * FROM tb_gvest LIMIT $start$num_post"); 

 if(
$posts == 0){
         echo 
"<br><center><font color=red>По вашему запросу ничего не найдено!</font></center>";
        }
        else{
//////////////////////////////////////////////////////////////////////////////////////////////////
while($postrow mysql_fetch_array($result2)) {

    echo 
"<table border=1 width=100%>"
    echo 
"<tr bgcolor=#eeeeee><td>имя</td><td>сообщение</td><td>email</td><td>icq</td></tr>"
    echo 
"<tr> 
            <td>"
.@$postrow['name']."</td> 
            <td>"
.@$postrow['msg']."</td> 
            <td>"
.@$postrow['mail']."</td> 
            <td>"
.@$postrow['icq']."</td> 
           </tr>"

 echo 
"</table>"
}
///////////////////////////////////////////////////////////////////////////////////////// 
}
// Теперь выводим ссылки навигации 
///////////////////////////////////////////////////////////////////////////////////////// 

// Проверяем нужны ли стрелки назад 
if ($page != 1$pervpage '<a href= ./index.php?page=1><<</a> 
                               <a href= ./index.php?page='
. ($page 1) .'><</a> '
// Проверяем нужны ли стрелки вперед 
if ($page != $total$nextpage ' <a href= ./index.php?page='. ($page 1) .'>></a> 
                                   <a href= ./index.php?page=' 
.$total'>>></a>'

// Находим две ближайшие станицы с обоих краев, если они есть 
if($page 0$page2left ' <a href= ./index.php?page='. ($page 2) .'>'. ($page 2) .'</a> | '
if(
$page 0$page1left '<a href= ./index.php?page='. ($page 1) .'>'. ($page 1) .'</a> | '
if(
$page <= $total$page2right ' | <a href= ./index.php?page='. ($page 2) .'>'. ($page 2) .'</a>'
if(
$page <= $total$page1right ' | <a href= ./index.php?page='. ($page 1) .'>'. ($page 1) .'</a>'

// Вывод меню 
echo @$pervpage.@$page2left.@$page1left.'<b>'.@$page.'</b>'.@$page1right.@$page2right.@$nextpage



echo 
"</body></html>"

// Освобождаем оперативку ... 

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования