Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как разбить текстовый файл на страницы? [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Описание: Как сделать, чтобы содержимое текстового файла (enter.txt) разбивалось на страницы (по 10 новостей)?
Vladimir Kheifets
Отправлено: 12 Августа, 2022 - 13:47:04
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Irina88 пишет:
В связи с обновлением версии PHP на сервере ho.ua, перестал работать данный скрипт. Недовольство, огорчение Помогите адаптировать его под PHP 8.0.

Добрый день!
Проверил на PHP 8.0. У меня работает.
Тестовый файл:
Спойлер (Отобразить)

Скрипт
Спойлер (Отобразить)
Покажите, пожалуйста, что не работает - сообщение об ошибке.
Удачи!
 
 Top
Irina88
Отправлено: 12 Августа, 2022 - 19:35:47
Post Id



Новичок


Покинул форум
Сообщений всего: 61
Дата рег-ции: Март 2018  
Откуда: Kyiv, Ukraine


Помог: 0 раз(а)




Vladimir Kheifets, Ваш скрипт работает. Но когда добавляю "шапку" и "ноги", выдает ERROR 500

Вот код страницы:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. include "./settings.php";
  4.  
  5.    $StartLine = 0;
  6.    $nLines = 10;
  7.    $title = "IPTV-плейлисты m3u";
  8.  
  9.    function ReadLinesFromFile($StartLine, $nLines, $file){
  10.            $EndLine=$StartLine+$nLines;
  11.            $line = $StartLine;
  12.            $news=[];
  13.            while ($line < $EndLine ) {
  14.                    $file->seek($line-1);
  15.                    $news[]=$file->current();
  16.                    $line++;
  17.            }
  18.            return $news;
  19.    }
  20.    echo <<<HTML
  21.    <html>
  22.    <head>
  23. <meta name='description' content='IPTV-плейлисты m3u'>
  24. <meta name='description' content='IPTV-плейлисты m3u Украина'>
  25. <META NAME='TITLE' CONTENT='IPTV-плейлисты m3u Украина'>  <META NAME='DESCRIPTION' CONTENT='IPTV-плейлисты m3u Украина.'>
  26.    <title> $title </title>
  27.    </head>
  28.    <body>
  29. <img src='iptv.jpg' width='100%' height='300' alt=''><br>
  30.    HTML;
  31.    $file = new SplFileObject('enter.txt');
  32.    $file->seek(PHP_INT_MAX);
  33.    $linesTotal = $file->key()+1;
  34.    $LineInPage=10;
  35.    $Pages = ceil(($linesTotal)/$LineInPage);
  36.    $page=isset($_GET['page'])?$_GET['page']:1;
  37.  
  38.    $StartLine=($page-1)*$LineInPage+1;
  39.    $news = ReadLinesFromFile($StartLine, $LineInPage, $file);
  40.    foreach ((Array)$news as $line) echo "$line<br>";
  41.    echo "<hr>";
  42.  
  43.    $previewPage=$page-1;
  44.    $nextPage=$page+1;
  45.    if($previewPage>0)
  46.    echo "<a href='?page=$previewPage'><<<</a> ";
  47.    echo " <select></select> ";
  48.    if($nextPage<=$Pages)
  49.    echo " <a href='?page=$nextPage'>>>></a>";
  50.    echo <<<HTML
  51.    </body>
  52.    <script>
  53.    page = '$page';
  54.    Pages = '$Pages';
  55.    select = document.getElementsByTagName('select')[0];
  56.    if(Pages>1)
  57.    {
  58.    optArr=Array.from({length: Pages}, (v, k) => k+1);
  59.    optArr.splice(page-1, 1);
  60.    for(i in optArr)
  61.    {
  62.            opt = document.createElement('option');
  63.            opt.innerHTML = optArr[i];
  64.            select.appendChild(opt);
  65.    }
  66.    select.addEventListener("change", function (e){
  67.            window.location.href="?page="+e.target.value;
  68.    });
  69.    }
  70.    else
  71.    select.style.display="none";
  72.    </script>
  73.  
  74. <br>
  75. <img src='iptvplayerlogo.png' alt=''>&nbsp;
  76. <a href='load.php'>СКАЧАТЬ IP-TV_player</a><br>
  77.  
  78. <img src='gbooklogo.png' alt=''>&nbsp;
  79. <a href='gbook/' target='_blank'>Гостевая книга</a><br>
  80.  
  81.  
  82. <hr>
  83. Рекомендуем:<br>
  84. <img src='radiologo.jpg' alt=''>
  85. <a href='http://radio.ho.ua'>Радио online</a><br>
  86. <hr>
  87.  
  88.  
  89. <a href='https://katstat.ru/in/1686' title='KatStat.ru - Топ рейтинг сайтов'><img src='https://katstat.ru/counter/big/1686' alt='KatStat.ru - Топ рейтинг сайтов'/></a><br>
  90.  
  91. &copy;2021-$today
  92.    </html>
  93.    HTML;
  94.    ?>
 
 Top
Vladimir Kheifets
Отправлено: 12 Августа, 2022 - 21:26:43
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Irina88 пишет:
Vladimir Kheifets, Ваш скрипт работает. Но когда добавляю "шапку" и "ноги", выдает ERROR 500

Вот код страницы:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. include "./settings.php";
  4.  
  5.    $StartLine = 0;
  6.    $nLines = 10;
  7.    $title = "IPTV-плейлисты m3u";
  8.  
  9.    function ReadLinesFromFile($StartLine, $nLines, $file){
  10.            $EndLine=$StartLine+$nLines;
  11.            $line = $StartLine;
  12.            $news=[];
  13.            while ($line < $EndLine ) {
  14.                    $file->seek($line-1);
  15.                    $news[]=$file->current();
  16.                    $line++;
  17.            }
  18.            return $news;
  19.    }
  20.    echo <<<HTML
  21.    <html>
  22.    <head>
  23. <meta name='description' content='IPTV-плейлисты m3u'>
  24. <meta name='description' content='IPTV-плейлисты m3u Украина'>
  25. <META NAME='TITLE' CONTENT='IPTV-плейлисты m3u Украина'>  <META NAME='DESCRIPTION' CONTENT='IPTV-плейлисты m3u Украина.'>
  26.    <title> $title </title>
  27.    </head>
  28.    <body>
  29. <img src='iptv.jpg' width='100%' height='300' alt=''><br>
  30.    HTML;
  31.    $file = new SplFileObject('enter.txt');
  32.    $file->seek(PHP_INT_MAX);
  33.    $linesTotal = $file->key()+1;
  34.    $LineInPage=10;
  35.    $Pages = ceil(($linesTotal)/$LineInPage);
  36.    $page=isset($_GET['page'])?$_GET['page']:1;
  37.  
  38.    $StartLine=($page-1)*$LineInPage+1;
  39.    $news = ReadLinesFromFile($StartLine, $LineInPage, $file);
  40.    foreach ((Array)$news as $line) echo "$line<br>";
  41.    echo "<hr>";
  42.  
  43.    $previewPage=$page-1;
  44.    $nextPage=$page+1;
  45.    if($previewPage>0)
  46.    echo "<a href='?page=$previewPage'><<<</a> ";
  47.    echo " <select></select> ";
  48.    if($nextPage<=$Pages)
  49.    echo " <a href='?page=$nextPage'>>>></a>";
  50.    echo <<<HTML
  51.    </body>
  52.    <script>
  53.    page = '$page';
  54.    Pages = '$Pages';
  55.    select = document.getElementsByTagName('select')[0];
  56.    if(Pages>1)
  57.    {
  58.    optArr=Array.from({length: Pages}, (v, k) => k+1);
  59.    optArr.splice(page-1, 1);
  60.    for(i in optArr)
  61.    {
  62.            opt = document.createElement('option');
  63.            opt.innerHTML = optArr[i];
  64.            select.appendChild(opt);
  65.    }
  66.    select.addEventListener("change", function (e){
  67.            window.location.href="?page="+e.target.value;
  68.    });
  69.    }
  70.    else
  71.    select.style.display="none";
  72.    </script>
  73.  
  74. <br>
  75. <img src='iptvplayerlogo.png' alt=''>&nbsp;
  76. <a href='load.php'>СКАЧАТЬ IP-TV_player</a><br>
  77.  
  78. <img src='gbooklogo.png' alt=''>&nbsp;
  79. <a href='gbook/' target='_blank'>Гостевая книга</a><br>
  80.  
  81.  
  82. <hr>
  83. Рекомендуем:<br>
  84. <img src='radiologo.jpg' alt=''>
  85. <a href='http://radio.ho.ua'>Радио online</a><br>
  86. <hr>
  87.  
  88.  
  89. <a href='https://katstat.ru/in/1686' title='KatStat.ru - Топ рейтинг сайтов'><img src='https://katstat.ru/counter/big/1686' alt='KatStat.ru - Топ рейтинг сайтов'/></a><br>
  90.  
  91. &copy;2021-$today
  92.    </html>
  93.    HTML;
  94.    ?>

Ирина!
Вы уверены в том, что в PHP выдаются сообщения об ошибках?
На всякий случай вставьте в первой строке error_reporting(E_ALL);
В Вашем коде в 51 строке закрывается </body>, затем вставлен<script>....</script> и затем опять нтмл-тэги до </html>. это не правильно.
Ваша проблема не в смене версии PHP на сервере.
 
 Top
Vladimir Kheifets
Отправлено: 13 Августа, 2022 - 06:45:48
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Ирина!
В Вашем коде была фотальная ошибка PHP
Parse error: Invalid body indentation level (expecting an indentation level of at least 7) in ........... on line 23
из-за того, что в
<<<HTML
в начале строк были символы таб и пробелы
HTML;

<body> тоже подправил
Здесь рабочий код
Спойлер (Отобразить)
Удачи!

(Отредактировано автором: 13 Августа, 2022 - 06:52:13)

 
 Top
Irina88
Отправлено: 13 Августа, 2022 - 19:32:11
Post Id



Новичок


Покинул форум
Сообщений всего: 61
Дата рег-ции: Март 2018  
Откуда: Kyiv, Ukraine


Помог: 0 раз(а)




Владимир!

Цитата:
Ваша проблема не в смене версии PHP на сервере.


Какраз там и проблема. В коде по ошибке было написано



На "семерке" этот номер проходил. А на "восьмерке" - не катит. Надо

 
 Top
Vladimir Kheifets
Отправлено: 13 Августа, 2022 - 22:12:53
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Irina88 пишет:
Владимир!

Цитата:
Ваша проблема не в смене версии PHP на сервере.


Какраз там и проблема. В коде по ошибке было написано



На "семерке" этот номер проходил. А на "восьмерке" - не катит. Надо



Ирина!
В Вашем коде $today = date(Y); Вы не показали,
но это работало где-то на "пятерки", а на "семёрке" это выдает:
Warning: Use of undefined constant Y - assumed 'Y' (this will throw an Error in a future version of PHP) in ...
Однако Вы написали про "HTML Error 500", а это наврядли с этим связано.
 
 Top
Irina88
Отправлено: 14 Августа, 2022 - 19:34:04
Post Id



Новичок


Покинул форум
Сообщений всего: 61
Дата рег-ции: Март 2018  
Откуда: Kyiv, Ukraine


Помог: 0 раз(а)




Владимир!

Ну не знаю. Я добавила кавычки, и страница загрузилась. Хотите сказать, что на сервере была "пятерка"?
 
 Top
Vladimir Kheifets
Отправлено: 14 Августа, 2022 - 21:03:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Irina88 пишет:
Владимир!
Ну не знаю. Я добавила кавычки, и страница загрузилась. Хотите сказать, что на сервере была "пятерка"?

Ирина!
Версия PHP, на которой я видел, что это работает была 5.4.
И в $_POST и $_GET это тоже проходило.
Для Вас вожно понять то, что ошибка 500, происходит из-за того,
что возникает фотальная ошибка PHP, а erro_reporting отключён.
Поэтому HTML-request, хотябы с сообщением об ошибке браузер не получает.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB