PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: Как сделать, чтобы содержимое текстового файла (enter.txt) разбивалось на страницы (по 10 новостей)?
Поиск в теме | Версия для печати
Vladimir Kheifets
Отправлено: 12 Августа, 2022 - 13:47:04
Частый посетитель
Покинул форум
Сообщений всего: 872
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
Irina88 пишет: В связи с обновлением версии PHP на сервере ho.ua, перестал работать данный скрипт.
Помогите адаптировать его под PHP 8.0.
Добрый день!
Проверил на PHP 8.0. У меня работает.
Тестовый файл:
Спойлер (Отобразить ) CODE (
htmlphp ):
скопировать код в буфер обмена
МОСКВА, 25 ноя — РИА Новости.
Изолированность и отсутствие широкого разнообразия штаммов способствовали
"самоликвидация" дельта- варианта коронавируса в Японии. Об этом в интервью "Ленте.ру" рассказала
профессор Школы системной биологии американского университета Джорджа Мейсона, главный
научный сотрудник лаборатории функциональной геномики медико- генетического научного центра РАН Анча Баранова.
Баранова также отметила, что исчезновению коронавируса в Японии способствовала не только относительная
изолированность страны в отличие от Европы, но и дисциплинированное отношение граждан к ограничительным мерам.
Вместе с тем генетик считает опасным исчезновение дельта- штамма коронавируса в России по примеру Японии.
Она объяснила это его высоким уровнем инфекционности, которая позволяет сдерживать распространения
других вариантов вируса.
Ранее руководитель команды ученых из Национального института генетики и Университета Ниигаты,
профессор Ицуро Иноуэ сообщил, что циркулирующий в Японии дельта- штамм коронавируса мог накопить
слишком много мутаций в одном из неструктурных белков, что впоследствии могло лишить его способности
"исправляться" и вызвало "самоликвидацию" .
Исследователь отметил, что в начале появления варианта дельта в Японии мутации
в нем быстро накапливались, однако затем прекратились. По его словам, большая часть изменений
происходила на участке A394V неструктурного белка nsp14, отвечающего за исправление ошибок
при репликации. В итоге вирус, пытаясь исправить дефекты, потерял способность размножаться.
СкриптСпойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
//include "./settings.php";
$StartLine = 0 ;
$nLines = 10 ;
$title = $_SERVER [ 'SERVER_NAME' ] ;
function ReadLinesFromFile( $StartLine , $nLines , $file ) {
$EndLine = $StartLine + $nLines ;
$line = $StartLine ;
$news = [ ] ;
while ( $line < $EndLine ) {
$file -> seek ( $line - 1) ;
$news [ ] = $file -> current ( ) ;
$line ++;
}
return $news ;
}
echo <<< HTML
< html>
< head>
< title> $title </ title>
</ head>
< body>
HTML;
$file = new SplFileObject( 'News.txt' ) ;
$file -> seek ( PHP_INT_MAX) ;
$linesTotal = $file -> key ( ) + 1 ;
$LineInPage = 10 ;
$Pages = ceil ( ( $linesTotal ) / $LineInPage ) ; $page = isset ( $_GET [ 'page' ] ) ?
$_GET [ 'page' ] : 1 ;
$StartLine = ( $page - 1) * $LineInPage + 1 ;
$news = ReadLinesFromFile( $StartLine , $LineInPage , $file ) ;
foreach ( ( Array ) $news as $line ) echo "$line <br>" ; echo "<hr>" ;
$previewPage = $page - 1 ;
$nextPage = $page + 1 ;
if ( $previewPage > 0)
echo "<a href='?page=$previewPage '><<<</a> " ;
echo " <select></select> " ;
if ( $nextPage <= $Pages )
echo " <a href='?page=$nextPage '>>>></a>" ;
echo <<< HTML
</ body>
< script>
page = '$page' ;
Pages = '$Pages' ;
select = document. getElementsByTagName( 'select' ) [ 0] ;
if ( Pages> 1)
{
optArr
= Array . from
( { length
: Pages
} , ( v
, k
) => k
+ 1
) ; optArr. splice( page- 1, 1) ;
for ( i in optArr)
{
opt = document. createElement( 'option' ) ;
opt. innerHTML = optArr[ i] ;
select. appendChild( opt) ;
}
select. addEventListener( "change" , function ( e) {
window. location. href= "?page=" + e. target. value;
} ) ;
}
else
select. style. display= "none" ;
</script>
</ html>
HTML;
?>
Покажите, пожалуйста, что не работает - сообщение об ошибке.
Удачи!
Irina88
Отправлено: 12 Августа, 2022 - 19:35:47
Новичок
Покинул форум
Сообщений всего: 57
Дата рег-ции: Март 2018
Откуда: Kyiv, Ukraine
Помог: 0 раз(а)
Vladimir Kheifets , Ваш скрипт работает. Но когда добавляю "шапку" и "ноги", выдает ERROR 500
Вот код страницы:
CODE (
htmlphp ):
скопировать код в буфер обмена
<? PHP
include "./settings.php" ;
$StartLine = 0 ;
$nLines = 10 ;
$title = "IPTV-плейлисты m3u" ;
function ReadLinesFromFile( $StartLine , $nLines , $file ) {
$EndLine = $StartLine + $nLines ;
$line = $StartLine ;
$news = [ ] ;
while ( $line < $EndLine ) {
$file -> seek ( $line - 1) ;
$news [ ] = $file -> current ( ) ;
$line ++;
}
return $news ;
}
echo <<< HTML
< html>
< head>
< meta name= 'description' content= 'IPTV-плейлисты m3u' >
< meta name= 'description' content= 'IPTV-плейлисты m3u Украина' >
< META NAME= 'TITLE' CONTENT= 'IPTV-плейлисты m3u Украина' > < META NAME= 'DESCRIPTION' CONTENT= 'IPTV-плейлисты m3u Украина.' >
< title> $title </ title>
</ head>
< body>
< img src= 'iptv.jpg' width= '100%' height= '300' alt= '' >< br>
HTML;
$file = new SplFileObject( 'enter.txt' ) ;
$file -> seek ( PHP_INT_MAX) ;
$linesTotal = $file -> key ( ) + 1 ;
$LineInPage = 10 ;
$Pages = ceil ( ( $linesTotal ) / $LineInPage ) ; $page = isset ( $_GET [ 'page' ] ) ?$_GET [ 'page' ] : 1 ;
$StartLine = ( $page - 1) * $LineInPage + 1 ;
$news = ReadLinesFromFile( $StartLine , $LineInPage , $file ) ;
foreach ( ( Array ) $news as $line ) echo "$line <br>" ; echo "<hr>" ;
$previewPage = $page - 1 ;
$nextPage = $page + 1 ;
if ( $previewPage > 0)
echo "<a href='?page=$previewPage '><<<</a> " ;
echo " <select></select> " ;
if ( $nextPage <= $Pages )
echo " <a href='?page=$nextPage '>>>></a>" ;
echo <<< HTML
</ body>
< script>
page = '$page' ;
Pages = '$Pages' ;
select = document. getElementsByTagName( 'select' ) [ 0] ;
if ( Pages> 1)
{
optArr= Array . from( { length: Pages} , ( v, k) => k+ 1) ; optArr. splice( page- 1, 1) ;
for ( i in optArr)
{
opt = document. createElement( 'option' ) ;
opt. innerHTML = optArr[ i] ;
select. appendChild( opt) ;
}
select. addEventListener( "change" , function ( e) {
window. location. href= "?page=" + e. target. value;
} ) ;
}
else
select. style. display= "none" ;
</ script>
< br>
< img src= 'iptvplayerlogo.png' alt= '' >& nbsp;
< a href= 'load.php' > СКАЧАТЬ IP- TV_player</ a>< br>
< img src= 'gbooklogo.png' alt= '' >& nbsp;
< a href= 'gbook/' target= '_blank' > Гостевая книга</ a>< br>
< hr>
Рекомендуем:< br>
< img src= 'radiologo.jpg' alt= '' >
< a href= 'http://radio.ho.ua' > Радио online</ a>< br>
< hr>
< a href= 'https://katstat.ru/in/1686' title= 'KatStat.ru - Топ рейтинг сайтов' >< img src= 'https://katstat.ru/counter/big/1686' alt= 'KatStat.ru - Топ рейтинг сайтов' /></ a>< br>
& copy; 2021- $today
</ html>
HTML;
?>
Vladimir Kheifets
Отправлено: 12 Августа, 2022 - 21:26:43
Частый посетитель
Покинул форум
Сообщений всего: 872
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
Irina88 пишет: Vladimir Kheifets , Ваш скрипт работает. Но когда добавляю "шапку" и "ноги", выдает ERROR 500
Вот код страницы:
CODE (
htmlphp ):
скопировать код в буфер обмена
<? PHP
include "./settings.php" ;
$StartLine = 0 ;
$nLines = 10 ;
$title = "IPTV-плейлисты m3u" ;
function ReadLinesFromFile( $StartLine , $nLines , $file ) {
$EndLine = $StartLine + $nLines ;
$line = $StartLine ;
$news = [ ] ;
while ( $line < $EndLine ) {
$file -> seek ( $line - 1) ;
$news [ ] = $file -> current ( ) ;
$line ++;
}
return $news ;
}
echo <<< HTML
< html>
< head>
< meta name= 'description' content= 'IPTV-плейлисты m3u' >
< meta name= 'description' content= 'IPTV-плейлисты m3u Украина' >
< META NAME= 'TITLE' CONTENT= 'IPTV-плейлисты m3u Украина' > < META NAME= 'DESCRIPTION' CONTENT= 'IPTV-плейлисты m3u Украина.' >
< title> $title </ title>
</ head>
< body>
< img src= 'iptv.jpg' width= '100%' height= '300' alt= '' >< br>
HTML;
$file = new SplFileObject( 'enter.txt' ) ;
$file -> seek ( PHP_INT_MAX) ;
$linesTotal = $file -> key ( ) + 1 ;
$LineInPage = 10 ;
$Pages = ceil ( ( $linesTotal ) / $LineInPage ) ; $page = isset ( $_GET [ 'page' ] ) ?$_GET [ 'page' ] : 1 ;
$StartLine = ( $page - 1) * $LineInPage + 1 ;
$news = ReadLinesFromFile( $StartLine , $LineInPage , $file ) ;
foreach ( ( Array ) $news as $line ) echo "$line <br>" ; echo "<hr>" ;
$previewPage = $page - 1 ;
$nextPage = $page + 1 ;
if ( $previewPage > 0)
echo "<a href='?page=$previewPage '><<<</a> " ;
echo " <select></select> " ;
if ( $nextPage <= $Pages )
echo " <a href='?page=$nextPage '>>>></a>" ;
echo <<< HTML
</ body>
< script>
page = '$page' ;
Pages = '$Pages' ;
select = document. getElementsByTagName( 'select' ) [ 0] ;
if ( Pages> 1)
{
optArr= Array . from( { length: Pages} , ( v, k) => k+ 1) ; optArr. splice( page- 1, 1) ;
for ( i in optArr)
{
opt = document. createElement( 'option' ) ;
opt. innerHTML = optArr[ i] ;
select. appendChild( opt) ;
}
select. addEventListener( "change" , function ( e) {
window. location. href= "?page=" + e. target. value;
} ) ;
}
else
select. style. display= "none" ;
</ script>
< br>
< img src= 'iptvplayerlogo.png' alt= '' >& nbsp;
< a href= 'load.php' > СКАЧАТЬ IP- TV_player</ a>< br>
< img src= 'gbooklogo.png' alt= '' >& nbsp;
< a href= 'gbook/' target= '_blank' > Гостевая книга</ a>< br>
< hr>
Рекомендуем:< br>
< img src= 'radiologo.jpg' alt= '' >
< a href= 'http://radio.ho.ua' > Радио online</ a>< br>
< hr>
< a href= 'https://katstat.ru/in/1686' title= 'KatStat.ru - Топ рейтинг сайтов' >< img src= 'https://katstat.ru/counter/big/1686' alt= 'KatStat.ru - Топ рейтинг сайтов' /></ a>< br>
& copy; 2021- $today
</ html>
HTML;
?>
Ирина!
Вы уверены в том, что в PHP выдаются сообщения об ошибках?
На всякий случай вставьте в первой строке error_reporting(E_ALL);
В Вашем коде в 51 строке закрывается </body> , затем вставлен<script>....</script> и затем опять нтмл-тэги до </html> . это не правильно.
Ваша проблема не в смене версии PHP на сервере.
Vladimir Kheifets
Отправлено: 13 Августа, 2022 - 06:45:48
Частый посетитель
Покинул форум
Сообщений всего: 872
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
Ирина!
В Вашем коде была фотальная ошибка PHP
Parse error: Invalid body indentation level (expecting an indentation level of at least 7) in ........... on line 23
из-за того, что в
<<<HTML
в начале строк были символы таб и пробелы
HTML;
<body> тоже подправил
Здесь рабочий код
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
//include "./settings.php";
$StartLine = 0 ;
$nLines = 10 ;
$title = "IPTV-плейлисты m3u" ;
function ReadLinesFromFile( $StartLine , $nLines , $file ) {
$EndLine = $StartLine + $nLines ;
$line = $StartLine ;
$news = [ ] ;
while ( $line < $EndLine ) {
$file -> seek ( $line - 1) ;
$news [ ] = $file -> current ( ) ;
$line ++;
}
return $news ;
}
echo <<<HTML
<html>
<head>
<meta name='description' content='IPTV-плейлисты m3u'>
<meta name='description' content='IPTV-плейлисты m3u Украина'>
<META NAME='TITLE' CONTENT='IPTV-плейлисты m3u Украина'>
<META NAME='DESCRIPTION' CONTENT='IPTV-плейлисты m3u Украина.'>
<title> $title </title>
</head>
<body>
<img src='iptv.jpg' width='100%' height='300' alt=''><br>
HTML ;
$file = new SplFileObject( 'enter.txt' ) ;
$file -> seek ( PHP_INT_MAX) ;
$linesTotal = $file -> key ( ) + 1 ;
$LineInPage = 10 ;
$Pages = ceil ( ( $linesTotal ) / $LineInPage ) ; $page = isset ( $_GET [ 'page' ] ) ?
$_GET [ 'page' ] : 1 ;
$StartLine = ( $page - 1) * $LineInPage + 1 ;
$news = ReadLinesFromFile( $StartLine , $LineInPage , $file ) ;
foreach ( ( Array ) $news as $line ) echo "$line <br>" ; echo "<hr>" ;
$previewPage = $page - 1 ;
$nextPage = $page + 1 ;
if ( $previewPage > 0)
echo "<a href='?page=$previewPage '><<<</a> " ;
echo " <select></select> " ;
if ( $nextPage <= $Pages )
echo " <a href='?page=$nextPage '>>>></a>" ;
echo <<<HTML
<br>
<img src='iptvplayerlogo.png' alt=''>
<a href='load.php'>СКАЧАТЬ IP-TV_player</a><br>
<img src='gbooklogo.png' alt=''>
<a href='gbook/' target='_blank'>Гостевая книга</a><br>
<hr>
Рекомендуем:<br>
<img src='radiologo.jpg' alt=''>
<a href='http://radio.ho.ua'>Радио online</a><br>
<hr>
<a href='https://katstat.ru/in/1686' title='KatStat.ru - Топ рейтинг сайтов'><img src='https://katstat.ru/counter/big/1686' alt='KatStat.ru - Топ рейтинг сайтов'/></a><br>
©2021-$nowY
</body>
<script>
page = '$page';
Pages = '$Pages';
select = document.getElementsByTagName('select')[0];
if(Pages>1)
{
optArr=Array.from({length: Pages}, (v, k) => k+1);
optArr.splice(page-1, 1);
for(i in optArr)
{
opt = document.createElement('option');
opt.innerHTML = optArr[i];
select.appendChild(opt);
}
select.addEventListener("change", function (e){
window.location.href="?page="+e.target.value;
});
}
else
select.style.display="none";
</script>
</html>
HTML ;
?>
Удачи!(Отредактировано автором: 13 Августа, 2022 - 06:52:13)
Irina88
Отправлено: 13 Августа, 2022 - 19:32:11
Новичок
Покинул форум
Сообщений всего: 57
Дата рег-ции: Март 2018
Откуда: Kyiv, Ukraine
Помог: 0 раз(а)
Владимир!
Цитата: Ваша проблема не в смене версии PHP на сервере.
Какраз там и проблема. В коде по ошибке было написано
На "семерке" этот номер проходил. А на "восьмерке" - не катит. Надо
Vladimir Kheifets
Отправлено: 13 Августа, 2022 - 22:12:53
Частый посетитель
Покинул форум
Сообщений всего: 872
Дата рег-ции: Март 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", а это наврядли с этим связано.
Vladimir Kheifets
Отправлено: 14 Августа, 2022 - 21:03:06
Частый посетитель
Покинул форум
Сообщений всего: 872
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
Irina88 пишет: Владимир!
Ну не знаю. Я добавила кавычки, и страница загрузилась. Хотите сказать, что на сервере была "пятерка"?
Ирина!
Версия PHP, на которой я видел, что это работает была 5.4.
И в $_POST и $_GET это тоже проходило.
Для Вас вожно понять то, что ошибка 500, происходит из-за того,
что возникает фотальная ошибка PHP, а erro_reporting отключён.
Поэтому HTML-request, хотябы с сообщением об ошибке браузер не получает.
Поиск в теме | Версия для печати
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Напишите за меня, пожалуйста »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB