Разделение на страницы

Maloy

Новичок
Разделение на страницы

Необходимо разделить отображаемый файл на части, любым способом:
-размер
-количество символов
-вручную
Подкиньте скриптик, плиз
(а то с этой сессией мозги вообще не соображают :))
:eek:
 

Фанат

oncle terrible
Команда форума
Да, говорить о чтении правил студенту с кипящими мозгами и вовсе смешно...
 

Maloy

Новичок
Фанат
Ну честное слово времени в обрез, ну покопался я где мог. Ну пожаааааалуйста!!!!

-~{}~ 10.01.05 19:21:

Мне кажется я уже все факи облазил, язнаю оно где-нибудь есть, ну подскажитесь, сжальтесь над бедным студентом!
 

Фанат

oncle terrible
Команда форума
конкретно файла - врядли ты найдешь.
тем более, что там кодадве строчки.
считать файл либо в массив построчно (file) либо куском (file_get_contents) и делить на куски по размеру . дльше делить, как захочешь и выводить любую часть.
Остается строка навигации, которая есть во всех факах
 

Maloy

Новичок
Вот не понял, как считать файл в массив построчно и как делить куски по размеру.
Говорю же мозги не варят, ну если не сложно......плиииииз!
 

SiMM

Новичок
Если мозги не варят - не парь их другим, иди, проспись.
[m]file[/m]
PS: и вообще, есть такая штука, как поиск по форуму - примеров - туева хуча.
 

Maloy

Новичок
Я уже час наверное в этом форуме роюсь, так ниче и не понял, а мозги не варят, а надо срочно и спать нельзя, а надо срочно!!!!!
 

Нечто

Психолог РНРClub
Навалял из студенческой солидарности:
PHP:
function paginate_file($howmuch, $filename) {
    $out = array();
    $strings = file($filename);
    $page_num = @$_GET['page'];

    $total_pages = ceil(count($strings) / $howmuch);
    if($page_num<1 || $page_num>$total_pages) $page_num = 1;
    $offset = ($page_num-1) * $howmuch;
    for($i=$offset; $i<($offset+$howmuch)&&isset($strings[$i]); $i++) {
        $out[]=$strings[$i];
    }
    $pages = range(1, $total_pages);
    return array($out, $pages);
}

list($items, $pages) = paginate_file(2, "readme.txt");

foreach($items as $item) echo $item."<br />\n";
echo '| ';
foreach($pages as $number) echo '<a href="'.$_SERVER["PHP_SELF"].'?page='.$number.'">'.$number.'</a> | ';
Разбивает файл построчно, результат - список из двух массивов: то, что выводить и список номеров страниц. Реагирует на параметр page в урле. Пример использования после функции.
 

Maloy

Новичок
SiMM
Э вредина
vladax
Ням :)
Нечто
Спасибо приогромнейшее, я думаю этого им не понять!

-~{}~ 10.01.05 21:55:

Еще один ньюанс
У меня не выполняется функция заключенная в читаемый файл, он выводит ввиде текста в коде документа!
 

Нечто

Психолог РНРClub
Maloy
Я дал функцию чтения файла, а не выполнения. Чувствуешь разницу? Чтобы сделать постраничный вывод материала, в котором есть функции php нужно сначала их обработать (выполнить), а потом записать в файл и прочитать его.
Или пересмотреть всю технологию того, что ты пытаешься сделать. Так как ты не рубишь в php вообще, тебе сложно представить, как что можно реализовать, поэтому может расскажешь, что конкретно нужно? Возможно, я смогу тебе помочь.
 

Maloy

Новичок
короче, есть файл index.php(впринципе это xml но суть не в этом):
<?php
function img()
{
global $f, $f1, $f2;
static $nimg=1;
print ("<a href=\"img$f$f1$f2$nimg.png\"><img src=\"img$f$f1$f2$nimg.png\"></a>");
$nimg++;
}

?>
<?xml?>
<wml>
<card>
<?php
function paginate_file($howmuch, $filename) {
$out = array();
$strings = file($filename);
$page_num = @$_GET['page'];

$total_pages = ceil(count($strings) / $howmuch);
if($page_num<1 || $page_num>$total_pages) $page_num = 1;
$offset = ($page_num-1) * $howmuch;
for($i=$offset; $i<($offset+$howmuch)&&isset($strings[$i]); $i++) {
$out[]=$strings[$i];
}
$pages = range(1, $total_pages);
return array($out, $pages);
}
// Кусок выше я вообще честно говоря не понял!
list($items, $pages) = paginate_file(20, "$f$f1$f2.txt");
$npages = count($pages);
if ($npages > 1)
{
echo '| ';
foreach($pages as $number) echo '<a href="'.$_SERVER["PHP_SELF"].'?page='.$number.'&f='.$f.'&f1='.$f1.'&f2='.$f2.'">'.$number.'</a> | ';
echo '<br>';
}
foreach($items as $item) print ($item."<br />\n");
/*
Твое в немного переработанном виде
*/
?>
</p>
</card>
</wml>


Вот собственно и все и дается ссылка на этот файл к примеру
http://host/index.php?f=2&f1=5&f2=
Вот
Имеется текстовый файл 25.txt:
texttexttexttexttext
<?php img(); ?>
texttext
<?php img(); ?>
texttext
<?php img(); ?>

Т.е. на месте вставки функции должна вставляться картинка со ссылкой на нее же (img251.png, img252.png и т.д.
А вот эта самая функция и не выполняется (по понятной причине).
А в исходном коде так и отображается <?php img(); ?>
Ну вот и вопрос -
Как мне эту функцию внутри файла запустить при направлении на ссылку http://host/index.php?f=2&f1=5&f2=
???
 

Нечто

Психолог РНРClub
Maloy
Чтобы было прямо, как ты хочешь, можем сделать шаблонизацию небольшую... замени все свои <?php img(); ?> на `#img()#`

Замени код в цикла в моей функции на:
PHP:
for($i=$offset; $i<($offset+$howmuch)&&isset($strings[$i]); $i++) {
    if(stristr($strings[$i],'#img') { # если встречается #img - выполнять
        $strings[$i] = str_replace('#','',$strings[$i]); # убираем декорации
        $strings[$i] = eval($strings[$i].';'); # выполняем строку кода
    }
    $out[]=$strings[$i]; # добавляем в выходной массив
}
Можешь вставлять свои картинки в файле так:
Код:
#img(параметры)#
Это должно быть на отдельной строке!

-~{}~ 11.01.05 00:53:

Да, кстати, замени в функции img() print на return, а $nimg++ поставь раньше return
 

Фанат

oncle terrible
Команда форума
...вот так простые российские девелоперы пишут вап-сайты
 

Maloy

Новичок
Короче все вроди написал, но при первом же абзаце (то есть в редакторах надо боычно enter нажать) весь текст обрывается, в том числе и #img()# никакой нет.
Смотри может я где-нибудь опять лоханулся!
PHP:
<?php  function img()  
{                  
global $f, $f1, $f2;                  
static $nimg=1;                  
return ("<a href=\"img$f$f1$f2$nimg.png\"><img src=\"img$f$f1$f2$nimg.png\"></a>");                  
return $nimg++;  }    ?>
PHP:
<?php  function paginate_file($howmuch, $filename)  
{
      $out = array();
      $strings = file($filename);
      $page_num = @$_GET['page'];
        $total_pages = ceil(count($strings) / $howmuch);      if($page_num<1 || $page_num>$total_pages) 
$page_num = 1;      
$offset = ($page_num-1) * $howmuch;     
 for($i=$offset; $i<($offset+$howmuch)&&isset($strings[$i]); $i++)  
{      
if(stristr($strings[$i],'#img') )      
{          
$strings[$i] = str_replace('#','',$strings[$i]); 
          $strings[$i] = eval($strings[$i].';'); 
      }      $out[]=$strings[$i]; 
      $pages = range(1, $total_pages);   
   return array($out, $pages);  
}  
}   
 list($items, $pages) = paginate_file(20, "$f$f1$f2.txt");  
$npages = count($pages);  
if ($npages > 1)  
{ 
 echo '| '; 
 foreach($pages as $number) 
echo '<a href="'.$_SERVER["PHP_SELF"].'?page='.$number.'&f='.$f.'&f1='.$f1.'&f2='.$f2.'">'.$number.'</a> | ';  echo '<br>';  
} 
 foreach($items as $item) print ($item."<br />\n");
?>

:D
 

Фанат

oncle terrible
Команда форума
тётенька, дайте попить! А то так есть хочется, что аж переночевать негде...
 

ZPS

electronics
Забаньте его....


А потом вот такие "мозги не варят" заказы уводят и сделать не могут...
 

Нечто

Психолог РНРClub
Ну ты img() и расколбасил! :D
PHP:
function img() {                  
    global $f, $f1, $f2;                  
    static $nimg=0;
    $nimg++;                  
    return '<a href="img'.$f.$f1.$f2.$nimg.'.png"><img src="img'.$f.$f1.$f2.$nimg.'.png"></a>');                  
}
 
Сверху