Вывод строк из файла TXT
Нужно сделать так, чтобы при нажатии на кнопку скрипт каждый раз выдавал новую строку из файла TXT. Сначала первую, потом вторую, потом третью и так до последней
Пока допер как вывести первую. А дальше затупил, хотя понимаю, что должно быть легко
<?php
function stroka($i){
$f = file ('file.txt');
$cnt = count ($f);
$str = '';
if ($i < $cnt and $i>=0) {
$str = trim ($f[$i]);
echo $str;
}
}
echo stroka(0);
?>
Ответы (3 шт):
В документации есть пример
// Получает содержимое файла в виде массива. В данном примере мы используем
// обращение по протоколу HTTP для получения HTML-кода с удаленного сервера.
$lines = file('http://www.example.com/');
// Осуществим проход массива и выведем содержимое в виде HTML-кода вместе с номерами строк.
foreach ($lines as $line_num => $line) {
echo "Строка #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
Вот по аналогии и сделайте
Для решения задачи можно использовать либо форму и каждый раз страницу перегружать, либо использовать javascript и подгружать через ajax данные.
В первом варианте можно каждый раз при загрузке страницу в форму добавлять скрытый инпут со значением равным текущей строке. При нажатии кнопки форма отправляется на этот же файл и показывает следующую строку относительно индекса в скрытом инпуте и в новой форме указывает текущую строку.
Во втором варианте, можно сказать, что возможности практически безграничны. Тут лишь фантазия может подвести. Например вы загружаете новую строку через ajax, старая строка медленно исчезает и появляется только что загруженная, которая разлетается взрывом и на ее месте появляется третья. Это лишь пример, можно и просто через каждую секунду новую строку добавлять в dom html страницы ))
Можно таким образом решить:
<?php
function stroka($i){
$f = file ('text.txt');
$cnt = count ($f);
$str = '';
if ($i < $cnt and $i>=0) {
$str = trim ($f[$i]);
echo $str;
}
}
$z = 0;
if(isset($_POST['next'])){
$z = $_POST['z'] + 1;
}
echo stroka($z);
?>
<form method="post">
<input name="z" value="<?php echo $z;?>" hidden>
<button name="next">Следующая строка</button>
</form>