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

Форум PHP

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

 

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

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

тема: постраничный вывод
 
 автор: XoLoD   (19.03.2007 в 14:00)   письмо автору
 
 

Вот тут нашол такой вывод

<? 
    
if (isset($_GET['start']) && is_numeric($_GET['start'])){ 
    
$start $_GET['start']; 
    } 
    
$file file("text.txt"); 
    
$count count($file); 
    
$file array_reverse($file); 
    if (empty(
$start) || $start 0$start 0
    for (
$i 0$i ceil($count 10); $i ++){ 
    
$num $i 10
    if (
$num != $start){ 
    echo 
"<a href=".$_SERVER['PHP_SELF']."?start=".$num."><B>".($i 1)."</B></a> "
    } else { 
    echo 
"<font size=2>".($i 1)."</font> "
    } 
    }  
    if (
$count $start 10){ 
    
$count $start 10
    } 
?> 
<br>
<? 
    
for ($i $start$i $count$i ++){ 
    echo 
$file[$i]."<BR>"
    } 

?>

Проблема в том что он выводит все ссылки на страницы так 1 2 3 4 5 6 7 8 и так далее
А можно сделать так << < 1 2 3 4 5 > >>
Вывот из текстового файла
Или дайте ссылочку на такое с понятным обьяснением

   
 
 автор: mihdan   (19.03.2007 в 14:04)   письмо автору
 
   для: XoLoD   (19.03.2007 в 14:00)
 

Поиск по форуму тебе поможет

   
 
 автор: XoLoD   (19.03.2007 в 14:50)   письмо автору
 
   для: mihdan   (19.03.2007 в 14:04)
 

В основном всё с MYSQL но мне надо вывод из файла ненашол я конкретного

   
 
 автор: mihdan   (19.03.2007 в 17:00)   письмо автору
 
   для: XoLoD   (19.03.2007 в 14:50)
 

А в чем проблема возьми из статей что тут лежат и переделай пару строк на работу с файлами или прикажешь за тебя писать???

   
 
 автор: XoLoD   (19.03.2007 в 17:16)   письмо автору
 
   для: mihdan   (19.03.2007 в 17:00)
 

Неполучается

   
 
 автор: XoLoD   (19.03.2007 в 17:19)   письмо автору
 
   для: XoLoD   (19.03.2007 в 17:16)
 


<?php  
// Устанавливаем соединение с базой данных  
include "config.php";  
// Переменная хранит число сообщений выводимых на станице  
$num 25;  
// Извлекаем из URL текущую страницу  
$page $_GET['page'];  
// Определяем общее число сообщений в базе данных  
$result mysql_query("SELECT COUNT(*) FROM post");  
$posts mysql_fetch_row($result);  
// Находим общее число страниц  
$total intval(($posts 1) / $num) + 1;  
// Определяем начало сообщений для текущей страницы  
$page intval($page);  
// Если значение $page меньше единицы или отрицательно  
// переходим на первую страницу  
// А если слишком большое, то переходим на последнюю  
if(empty($page) or $page 0$page 1;  
  if(
$page $total$page $total;  
// Вычисляем начиная к какого номера  
// следует выводить сообщения  
$start $page $num $num;  
// Выбираем $num сообщений начиная с номера $start  
$result mysql_query("SELECT * FROM post LIMIT $start$num");  
// В цикле переносим результаты запроса в массив $postrow  
while ( $postrow[] = mysql_fetch_array($result))  
?> 

На этом первая часть закончена. Двумерный массив postrow хранит все поля таблицы post, необходимые для отображения станицы. Вот пример как можно организовать вывод сообщений.

<?php  
echo "<table>";  
for(
$i 0$i $num$i++)  
{  
 echo 
"<tr> 
         <td>"
.$postrow[$i]['name']."</td> 
         <td>"
.$postrow[$i]['time']."</td></tr> 
       <tr><td colspan=\"2\">"
.$postrow[$i]['text']."</td></tr>";  
}  
echo 
"</table>";  
?> 

Теперь надо организовать навигацию. Формируем составляющие будущей навигации.
Коды стрелки «в начало» и «назад» поместим в одну переменную, также поступим и со стрелками «в конец» и «вперед».

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

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

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

?>


Вот это меня устраивает но я незнаю как мне сделать чтобы он не из базы брал
вот так у меня есть

if (empty($p))
{
$d='1';
}
else
{
$d = $p;
}
$buffer = @file_get_contents("http://www.beeonline.ru/demo/chat?chat=$chat");
$pattern = "|<P CLASS='user'>([^<]+)[^>]+>([^<]+)[^>]+>([^<]+)[^>]+>([^\r]+)|i";
preg_match_all($pattern,$buffer,$out,PREG_SET_ORDER);
$f = '15';
$obsum = $d * $f;
$nasum = $obsum - $f;
for($i=$nasum; $i< $obsum; $i++)
{
if(!isset($out[$i][1]))
{
$s=''; break;
}
else
{
$msg = str_replace("<IMG CLASS='picture' SRC=\"","<img src=\"http://www.beeonline.ru/demo/chat",$out[$i][4]);
$msg = str_replace("\n","",$msg);
$msg = str_replace("<span class='message'><i>","",$msg);
$msg = str_replace("</i></span>","",$msg);
$msg = str_replace("&#39;","'",$msg);
$msg = str_replace("&#34;","\"",$msg);
$msg = stripslashes(str_replace("&#38;","&",$msg));
$ni = str_replace("(помощник босса)",">*",$out[$i][2].">");
$ni = str_replace("(гость)",">+",$ni);
$ni = str_replace("(БОСС)",">#",$ni);
$ni = str_replace(">#>",">#",$ni);
$ni = str_replace(">+>",">+",$ni);
$ni = str_replace(">*>",">*",$ni);

print "<br><font color=blue>".$out[$i][1]."</font><br><b>CHAT-$chat-".$ni."</b><br>".$msg."";
}
}
if($d == '1')
{
}
else
{
$z = $d-1;
print "<br><a href=\"show.php?p=$z&chat=$chat\"><<Назад</a>";
}
if(isset($s))
{
print "<br><a href=\"show.php?chat=$chat\">Начало</a>";
}
else
{
$d = $d+1;
print "<br><a href=\"show.php?p=$d&chat=$chat\">Далее>></a>
<br><a href=\"show.php?chat=$chat\">Проверить новые</a>";

}

   
 
 автор: XoLoD   (20.03.2007 в 09:10)   письмо автору
 
   для: XoLoD   (19.03.2007 в 17:19)
 

непоможете? :-(

   
 
 автор: devil   (20.03.2007 в 09:41)   письмо автору
 
   для: XoLoD   (20.03.2007 в 09:10)
 

посмотри вот это
http://www.softtime.ru/info/articlephp.php?id_article=33

   
 
 автор: XoLoD   (20.03.2007 в 10:55)   письмо автору
 
   для: devil   (20.03.2007 в 09:41)
 

Я это и смотрел. Только я непойму как мне обработать получаемые данные в цикле чтобы потом посчитать строки

   
 
 автор: XoLoD   (20.03.2007 в 15:17)   письмо автору
 
   для: XoLoD   (20.03.2007 в 10:55)
 


<?php
$msg 
str_replace("<IMG CLASS='picture' SRC=\"","<img src=\"http://www.beeonline.ru/demo/chat",$out[$i][4]); 
$msg str_replace("\n","",$msg); 
$msg str_replace("<span class='message'><i>","",$msg); 
$msg str_replace("</i></span>","",$msg); 
$msg str_replace("&#39;","'",$msg); 
$msg str_replace("&#34;","\"",$msg); 
$msg stripslashes(str_replace("&#38;","&",$msg)); 
$ni str_replace("(помощник босса)",">*",$out[$i][2].">"); 
$ni str_replace("(гость)",">+",$ni); 
$ni str_replace("(БОСС)",">#",$ni); 
$ni str_replace(">#>",">#",$ni); 
$ni str_replace(">+>",">+",$ni); 
$ni str_replace(">*>",">*",$ni); 

print 
"<br><font color=blue>".$out[$i][1]."</font><br><b>CHAT-$chat-".$ni."</b><br>".$msg."";
?>

как мне это в цикле обработать и получить количество строк которые получатся после обработки???

   
 
 автор: Trianon   (20.03.2007 в 16:30)   письмо автору
 
   для: XoLoD   (20.03.2007 в 15:17)
 

видимо, самый простой способ -

for($num=0; ; $num++) 
    if(!isset($out[$i][1])) 
        break;

В $num окажется число строк.

   
 
 автор: XoLoD   (20.03.2007 в 17:52)   письмо автору
 
   для: Trianon   (20.03.2007 в 16:30)
 

И что я не так делаю?

<?php
$buffer 
= @file_get_contents("http://www.beeonline.ru/demo/chat?chat=newsboss");
$pattern "|<P CLASS='user'>([^<]+)[^>]+>([^<]+)[^>]+>([^<]+)[^>]+>([^\r]+)|i";
preg_match_all($pattern,$buffer,$out,PREG_SET_ORDER);



for(
$num=0; ; $num++)  
{
    if(!isset(
$out[$i][1]))  
{
break;
}
else
{
$msg str_replace("<IMG CLASS='picture' SRC=\"","<img src=\"http://www.beeonline.ru/demo/chat",$out[$i][4]);
$msg str_replace("\n","",$msg);
$msg str_replace("<span class='message'><i>","",$msg);
$msg str_replace("</i></span>","",$msg);
$msg str_replace("&#39;","'",$msg);
$msg str_replace("&#34;","\"",$msg);
$msg stripslashes(str_replace("&#38;","&",$msg));
$ni str_replace("(помощник босса)",">*",$out[$i][2].">");
$ni str_replace("(гость)",">+",$ni);
$ni str_replace("(БОСС)",">#",$ni);
$ni str_replace(">#>",">#",$ni);
$ni str_replace(">+>",">+",$ni);
$ni str_replace(">*>",">*",$ni);

print 
"<font color=blue>".$out[$i][1]."</font><br><b>CHAT-$chat-".$ni."</b><br>".$msg."<br>";

}
}
print 
"$num";
?>

   
 
 автор: XoLoD   (20.03.2007 в 17:56)   письмо автору
 
   для: XoLoD   (20.03.2007 в 17:52)
 

Сам туплю простите. Разобрался

   
 
 автор: XoLoD   (20.03.2007 в 18:18)   письмо автору
 
   для: XoLoD   (20.03.2007 в 17:56)
 

Что я не так сделал?

<?php
$buffer 
= @file_get_contents("http://www.beeonline.ru/demo/chat?chat=newsboss");
$pattern "|<P CLASS='user'>([^<]+)[^>]+>([^<]+)[^>]+>([^<]+)[^>]+>([^\r]+)|i";
preg_match_all($pattern,$buffer,$out,PREG_SET_ORDER);
  
$f=15;  //Сколько записей выводить на страницу
  
$plink 3// Число ссылок вокруг выбранной страницы


//------------------------------------------
if (empty($p))
{
$p='1';
}
else
{
$p $p;
}


for(
$i=0; ; $i++)  
{
    if(!isset(
$out[$i][1]))  
{
break;
}
else
{
$msg str_replace("<IMG CLASS='picture' SRC=\"","<img src=\"http://www.beeonline.ru/demo/chat",$out[$i][4]);
$msg str_replace("\n","",$msg);
$msg str_replace("<span class='message'><i>","",$msg);
$msg str_replace("</i></span>","",$msg);
$msg str_replace("&#39;","'",$msg);
$msg str_replace("&#34;","\"",$msg);
$msg stripslashes(str_replace("&#38;","&",$msg));
$ni str_replace("(помощник босса)",">*",$out[$i][2].">");
$ni str_replace("(гость)",">+",$ni);
$ni str_replace("(БОСС)",">#",$ni);
$ni str_replace(">#>",">#",$ni);
$ni str_replace(">+>",">+",$ni);
$ni str_replace(">*>",">*",$ni);

print 
"<font color=blue>".$out[$i][1]."</font><br><b>CHAT-$chat-".$ni."</b><br>".$msg."<br>";

}
}

//------------------------------------------
  
$first $i - ($f * ($p 1));
  
$second $i - ($f $p) + 1;
  if (
$second 1)
  {
    
$second 1;
  }

  
$number = (int) (($i $f) / $f); 
  
$line "";
  
// Проверяем есть ли ссылки слева
  
if($p $plink 1)
  {
    
$line .= "<a href=\"guest.php?p=1\"><<</a>";
    
// Есть
    
for($in $p $plink$in<$p$in++)
    {
      
$line .= "<a href=guest.php?p=$in>$in</a>";
    }
  }
  else
  {
    
// Нет
    
for($in 1$in<$p$in++)
    {
      
$line .= "<a href=guest.php?p=$in>$in</a>";
    }
  }
  
// Проверяем есть ли ссылки справа
  
if($p $plink $number)
  {
    
// Есть
    
for($in $p$in<=$p $plink$in++)
    {
      if(
$p == $in)
        
$line .= "$in";
      else
        
$line .= "<a href=guest.php?p=$in>$in</a>";
    }
    
$line .= "<a href=guest.php?p=$number>>></a>";
  }
  else
  {
    
// Нет
    
for($in $p$in<=$number$in++)
    {
        if(
$p == $in)
          
$line .= "$in";
        else
          
$line .= "<a href=guest.php?p=$in>$in</a>";
    }
  }
  echo 
"<br>$line";


?>

он не делит на страницы, а показывает все сообщения

   
 
 автор: XoLoD   (20.03.2007 в 19:05)   письмо автору
 
   для: XoLoD   (20.03.2007 в 18:18)
 

Самое интересное количество страниц правильное и меню навигации правильно отображает, а вот сообщения на страницы не делит

   
 
 автор: XoLoD   (21.03.2007 в 11:08)   письмо автору
 
   для: XoLoD   (20.03.2007 в 19:05)
 

Помогите ПЛЗ всю голову сломал. Где ошибка у меня? Ссылки на страници выводит правильно, а вот сообщения выводит все не делит их :-(

   
 
 автор: KPETuH   (21.03.2007 в 11:20)   письмо автору
 
   для: XoLoD   (21.03.2007 в 11:08)
 

а что у вас такое

$p


нигде не заметил

$p=$_GET['p'];


скорее всего в этом и проблема

   
 
 автор: XoLoD   (21.03.2007 в 11:58)   письмо автору
 
   для: KPETuH   (21.03.2007 в 11:20)
 

Это принимаем номер страницы

   
 
 автор: KPETuH   (21.03.2007 в 12:17)   письмо автору
 
   для: XoLoD   (21.03.2007 в 11:58)
 

Я понимаю что это номер страницы, вы мне покажите где он у вас принимается :) я этого в вашем коде не заметил.

   
 
 автор: XoLoD   (22.03.2007 в 09:55)   письмо автору
 
   для: KPETuH   (21.03.2007 в 12:17)
 

непомогло всё равно также

   
 
 автор: KPETuH   (22.03.2007 в 10:18)   письмо автору
 
   для: XoLoD   (22.03.2007 в 09:55)
 

Вот два вида постраничной навигации основаной на файлах (одна закоментирована) плешите от этого...

<?
##########################
#                        #
# Постраничная навигация #
#                        #
# Представлены два вида  #
#                        #
##########################

# Количество на одной странице
$kolvo=2;
# Читаем файл
$text=file('text.txt');
if (
$kolvo>count($text)) $kolvo=count($text);
# Определяем кол-во страниц
$nomber=(int)(count($text)/$kolvo);
if (((float)(
count($text)/$kolvo)-$nomber)!=0$nomber++;
//echo $nomber;
# Проверяем передана ли страница
if(isset($_GET['page'])) $page $_GET['page'];
  else 
$page 1;
# Определяем начало или конец
$start = ($page 1)*$kolvo 1;
$end $page*$kolvo
# Выводим содержимое страницы
for ($i=$start-1;$i<=$end-1;$i++)
{
    if (
$i>count($text)) break;
    echo 
$text[$i]."<br>";
}
# Постраничная навигация №1
if ($page>2$nazad="<a href=$_SERVER[PHP_SELF]?page=".($page-1)."><</a>&nbsp";
if (
$page<$nomber-1$dalee="&nbsp<a href=$_SERVER[PHP_SELF]?page=".($page+1).">></a>";
if (
$page-1>0$pageleft="<a href=$_SERVER[PHP_SELF]?page=".($page-1).">[".(($page-2)*$kolvo 1)."..".(($page-1)*$kolvo)."]</a>&nbsp";
if (
$page+1<$nomber$pageright="<a href=$_SERVER[PHP_SELF]?page=".($page+1).">[".(($page)*$kolvo 1)."..".(($page+1)*$kolvo)."]</a>&nbsp";
if (
$page+1==$nomber$pageright="<a href=$_SERVER[PHP_SELF]?page=".($page+1).">[".(($page)*$kolvo 1)."..".count($text)."]</a>&nbsp";
if (
$page==$nomber)
{
    
$curent="&nbsp[".(($page-1)*$kolvo 1)."..".count($text)."]&nbsp";
}
else
{
    
$curent="&nbsp[".(($page-1)*$kolvo 1)."..".(($page)*$kolvo)."]&nbsp";
}
echo 
$nazad.$pageleft.$curent.$pageright.$dalee;

# Постраничная навигация №2
/*for ($i=0;$i<$nomber;$i++)
{
    # Выделение жирным шрифтом текущей страницы
    if ($i+1==$page)
    {
         if ($i==$nomber-1 )
        {
            echo "<a href=$_SERVER[PHP_SELF]?page=".($i+1)."><b>[".($i*$kolvo + 1)."..".count($text)."]</b></a>";
        }
        else
        {
            echo "<a href=$_SERVER[PHP_SELF]?page=".($i+1)."><b>[".($i*$kolvo + 1)."..".(($i+1)*$kolvo)."]</b></a>&nbsp";
        }
    }
    else
    # Обычные страницы
    {
        if ($i==$nomber-1 )
        {
            echo "<a href=$_SERVER[PHP_SELF]?page=".($i+1).">[".($i*$kolvo + 1)."..".count($text)."]</a>";
        }
        else
        {
            echo "<a href=$_SERVER[PHP_SELF]?page=".($i+1).">[".($i*$kolvo + 1)."..".(($i+1)*$kolvo)."]</a>&nbsp";
        }
    }
} */
?>

   
 
 автор: Xolod   (24.03.2007 в 21:47)   письмо автору
 
   для: KPETuH   (22.03.2007 в 10:18)
 

блин. Это совсем не то. Неполучается у меня.

   
Rambler's Top100
вверх

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