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

Форум PHP

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

 

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

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

тема: постраничная навигация-доработка
 
 автор: m@rchello   (16.12.2005 в 09:19)   письмо автору
 
 

У меня на сайте вот такая постраничная навигация в гостевой книге!
<?php
$base
="guest_db.txt"// Файл где находиться инфа
$general=file($base);  //Заносим весь наш файл в массив
$lines_file=file($base); //Еще разочек занесем наш файли в массив 
$lines=count($lines_file); //Считаем общее количество записей в файле, ну т.е. строк.
$pmessages file("$base");
$onlyg=$p_n_msg//Сколько записей выводить на страницу
/*
Тут начинаеться самая главная часть нашего файла
Просчитываем странички :-)
*/
if (@$page == "" or $page 0//Если переменная $page равна пустоте, или она меньше 0
{
$page "1";   //Тогда переменнная $page=1
}
$first count($pmessages) - ($onlyg * ($page 1));
$second count($pmessages) - ($onlyg $page) + 1;
if (
$second 1)
{
$second 1;
}
$pages = (int) ((count($pmessages) + $onlyg) / $onlyg);
for (
$onlyg 1$onlyg <= $pages$onlyg++)
{
if (
$onlyg != $page)
{
@
$line .= " [ <a href=\"guest.php?page=$onlyg\">$onlyg</a> ]";
}
if (
$onlyg == $page)
{
//То такой
@$line .= "[ $onlyg ]";
}
}
$guestfile fopen("guest_db.txt","a");
     if(@
strlen($msg)>=46)
        {
        
$prob=0;
        
$strok=strlen($msg)/45;
        
$strok=floor($strok);
               for(
$s=$strok$s>=1$s--)
                  {
                  
$sim=45*$s;
                       for(
$a=$sim-1$a>=($sim-45); $a--)
                           if(
$msg[$a]==" ")
                              
$prob++;
                           if(
$prob==0)
                           
$msg wordwrap($msg,45," ",1);
                  }
        }
for ( 
$a $first-1$a >= $second-1$a--)
{
@list(
$nick,$date,$msg,$mail,$url)=explode("||"$general[$a]);
$ad $a;
$ad++;
if(
strlen($msg)>=46)
        {
        
$prob=0;
        
$strok=strlen($msg)/45;
        
$strok=floor($strok);
               for(
$s=$strok$s>=1$s--)
                  {
                  
$sim=45*$s;
                       for(
$m=$sim-1$m>=($sim-45); $m--)
                           if(
$msg[$m]==" ")
                              
$prob++;
                           if(
$prob==0)
                           
$msg wordwrap($msg,45," ",1);
                  }
        }
$msg=str_replace(":))","<img src='1).gif'>","$msg");
$msg=str_replace("((:","<img src='1).gif'>","$msg");
$msg=str_replace(":)","<img src='1.gif'>","$msg");
$msg=str_replace("(:","<img src='1.gif'>","$msg");
$msg=str_replace(":(","<img src='2.gif'>","$msg");
$msg=str_replace("):","<img src='2.gif'>","$msg");
$msg=str_replace("*чмок","<img src='chmok.gif'>","$msg");
$msg=str_replace("*лол","<img src='lol.gif'>","$msg");
$msg=str_replace("*lol","<img src='lol.gif'>","$msg");
print 
"<table width='100%' border='2' cellpadding='0' cellspacing='0' bgcolor='$bgcolor_table' bordercolor='$bordercolor' align='center'>
   <tr>
      <td>
         <table width='100%' border='1' cellpadding='0' cellspacing='0' bgcolor='
$bgcolor_zag_table' bordercolor='$$bordercolor'>
            <tr>
               <td width='50%'><font color='
$zag_msg' size='3'><b><center>$nick</center></b></font>
            </td>
               <td width='50%'><font color='
$zag_msg' size='2'><b><center>$date</center></b></font>
            </td>
         </tr>
      </table>
         <table width='100%' border='0' cellpadding='3' cellspacing='3' summary=''>
            <tr>
               <td><font color='
$msg_color' size='2'><i>$msg</i></font>
            </td>
         </tr>
            <tr>
               <td>
                  <table width='100%' border='0' cellspacing='1' summary=''>
                     <tr>
                        <td width='40%'>
                     </td>
                        <td width='60%'><font color='
$zag_msg' size='2'><b>Email:&nbsp;<a href='mailto:$mail'>$mail</a></b></font>
                     </td>
                  </tr>
                     <tr>
                        <td width='40%'>
                     </td>
                        <td width='60%'><font color='
$zag_msg' size='2'><b>URL:&nbsp;<a href='http://$url'>$url</a></b></font>
                     </td>
                  </tr>
               </table>
            </td>
         </tr>
      </table>
   </td>
</tr>
</table><br>"
;
}
echo 
"<table width='100%' border='1' cellpadding='0' cellspacing='0' summary='' bordercolor='$bordercolor' bgcolor='$bgcolor_zag_table'>
    <tr>"
;
if (
$pages!=1)
echo
"
        <td><center><b><font color='
$msg_color' size='2'>$line</b></CENTER></td>";
echo
"        <td width='200'><i><font color='$zag_msg'><center>Всего сообщений: <font color='$text_zagolov'><b>$lines</b></font></center></font></i></td>
    </tr>
</table>"
;
?>

Работает она конечно отлично, но столкнулся я с другой проблемой. В гостевой у меня сейчас больше 200 сообщений а на страницу выводится лишь по 10 и в итоге получайтся что у меня страниц выводится выше крыши, что смотрится прогсто ужасно! Помогите пожалуйста сделать так чтоб выводилось первые десять страниц а далее следовало многоточие и последняя страница! А при нажатии на многоточие появлялись остальные десять страниц, но ещё первая и последняя, а если 10 последующих нет то (допустим если всего 15 страниц), то после нажатия на многоточие высвечивалясь первая и оставшиеся страницы!
ну примерно так:

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... [30]

[1]  ...  [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... [30]

[1]  ...  [11] [12] [13] [14] [15

Короче это примерно как у вас на форуме!!!
Если меня ктонибудь понял то помогите пожалуйста!

   
 
 автор: cheops   (16.12.2005 в 14:13)   письмо автору
 
   для: m@rchello   (16.12.2005 в 09:19)
 

Посмотрите тему по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5805

PS Такой большой код лучше прикреплять в виде файла, так как тема быстро набирает вес и выгружать её хоят всё меньше и меньше народу.

   
 
 автор: m@rchello   (17.12.2005 в 09:54)   письмо автору
 
   для: cheops   (16.12.2005 в 14:13)
 

Я так и не понял что нужно сделать! Немогли бы вы хотябы просто обьяснить без примеров как это осуществляется???

   
 
 автор: cheops   (17.12.2005 в 13:12)   письмо автору
 
   для: m@rchello   (17.12.2005 в 09:54)
 

Прикрепите, если вам не сложно файл guest_db.txt, чтобы я мог отладить скрипт у себя на локальной машине.

   
 
 автор: m@rchello   (17.12.2005 в 13:18)   письмо автору
 
   для: cheops   (17.12.2005 в 13:12)
 

вот пожалуйста!!!

   
 
 автор: cheops   (17.12.2005 в 13:24)   письмо автору
 
   для: m@rchello   (17.12.2005 в 13:18)
 

Я сейчас убегаю, если забуду ответить - поднимите эту тему вечером.

   
 
 автор: m@rchello   (17.12.2005 в 15:55)   письмо автору
 
   для: cheops   (17.12.2005 в 13:24)
 

хорошо!!! Спасяб что помогаете!!!

   
 
 автор: cheops   (18.12.2005 в 13:50)   письмо автору
 
   для: m@rchello   (17.12.2005 в 13:18)
 

Сел разрбираться - не могу понять в каком цикле осуществляется вывод постраничной навигации - не могли бы вы указать номер строки, где осуществляется вывод?

   
 
 автор: m@rchello   (18.12.2005 в 18:36)   письмо автору
 
   для: cheops   (18.12.2005 в 13:50)
 

Если вы имеете виду в каком месте уже выводятся страницы то это 172 строка $line

   
 
 автор: cheops   (18.12.2005 в 21:10)   письмо автору
 
   для: m@rchello   (18.12.2005 в 18:36)
 

Хм... а в приведённом в первом посте файле только 27 строк...

   
 
 автор: m@rchello   (19.12.2005 в 04:04)   письмо автору
 
   для: cheops   (18.12.2005 в 21:10)
 

Всмыле только 27 строк????

   
 
 автор: cheops   (19.12.2005 в 15:05)   письмо автору
 
   для: m@rchello   (19.12.2005 в 04:04)
 

Я ошибся :))) 127 в коде, который приведён в первом посте только 127 строк, я не очень понимаю где выводится и главное, где формируется строка $line?

   
 
 автор: m@rchello   (19.12.2005 в 15:46)   письмо автору
 
   для: cheops   (19.12.2005 в 15:05)
 

cheops - Посмотрите в прикреплённом файле я вырезал только саму постраничную навигацию без всяких примочек!

   
 
 автор: cheops   (19.12.2005 в 16:07)   письмо автору
 
   для: m@rchello   (19.12.2005 в 15:46)
 

Всё, понял, ближе к ночи сделаю.

   
 
 автор: m@rchello   (19.12.2005 в 17:59)   письмо автору
 
   для: cheops   (19.12.2005 в 16:07)
 

Спасибочки!!

   
 
 автор: cheops   (19.12.2005 в 20:04)   письмо автору
 
   для: m@rchello   (19.12.2005 в 17:59)
 

Посмотрите вот этот вариант...

   
 
 автор: m@rchello   (20.12.2005 в 06:40)   письмо автору
 
   для: cheops   (19.12.2005 в 20:04)
 

Огромнейшее спасибо!!!:)) То что нужно!!!:))

   
Rambler's Top100
вверх

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