[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Добавление текста в txt.файл
Doctor_Holly
Я новичок в php, поэтому тут все очень запущено)

В общем, суть такова, нужно добавить текст в файл, что бы потом его оттуда извлекать на другой странице. С этим проблем нету, сделал вот так вот:

<?php
date_default_timezone_set('Europe/Kiev');
$br = "<br/>";
$newtext = $br . date(' d.m.y | h:i:s') . ":" . $br . $_POST['add'] . $br;

$changelog = fopen('changelog.txt', 'a+');
fwrite($changelog, ($newtext));
fclose($changelog);

?>

Уверен можно намного проще, например с переносом строк :D
Это все работает, но есть одна проблема. Последующие тексты записываются вниз от предыдущих, а мне нужно что бы новые были сверху. Как так сделать, помогите, очень прошу

С уважением, мистер нуп.
Игорь_Vasinsky
считай в массив file()
потом array_reverse()

я бы сделал так, т.е. - писал бы последовательно, а при чтении инвертировал.

а запись (если не очень тяжёлые файлы) то
 file_put_contents($file, $data.PHP_EOL, FILE_APPEND)


если is_writible() и file_exists()

т.е. наоборот) :P

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
sergeiss
Цитата (Doctor_Holly @ 28.02.2014 - 21:06)
В общем, суть такова, нужно добавить текст в файл, что бы потом его оттуда извлекать на другой странице.

Мне так кажется, надо забыть про файлы и в данном случае использовать сессию. Там храни данные в массивах.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Doctor_Holly
А может кто-то переписать мой код? А то я вообще не понял что делать sad.gif
Doctor_Holly
Цитата
Мне так кажется, надо забыть про файлы и в данном случае использовать сессию. Там храни данные в массивах.

Мне нужно периодически добавлять новый текст. Ну, в данном случае у меня это через форму. Я отправляю ее, текст формы добавляется в файл и потом читается на другой странице. Как-то так.
sergeiss
Doctor_Holly, то, что ты описал, делается именно через сессию. Она для того и создана, вобщем-то.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Doctor_Holly
В общем я сделал попроще код, но вопрос остается тот же, как сделать что бы файл читался снизу вверх.

Читаю вот так:

<?php
$f = fopen("changelog.txt", "r");
while(!feof($f)) {
echo fgets($f) . "<br />";
}
fclose($f);
?>

Добавляю вот так:

<?php
date_default_timezone_set('Europe/Kiev');
$newtext = date(' d.m.y | h:i:s') . ": <br />" . $_POST['add'];

$changelog = fopen('changelog.txt', 'a+');
fwrite($changelog, ($newtext) . "\r\n");
fclose($changelog);

?>
Doctor_Holly
Цитата (sergeiss @ 28.02.2014 - 22:37)
Doctor_Holly, то, что ты описал, делается именно через сессию. Она для того и создана, вобщем-то.

Для меня использование сессий немного сложновато сейчас, хотелось бы для начала реализовать через файл.
dr.nomore
Цитата (Doctor_Holly @ 1.03.2014 - 01:00)
Цитата (sergeiss @ 28.02.2014 - 22:37)
Doctor_Holly, то, что ты описал, делается именно через сессию. Она для того и создана, вобщем-то.

Для меня использование сессий немного сложновато сейчас, хотелось бы для начала реализовать через файл.

Сессия это интерфейс записи/чтения особого, но файла, натурально, его даже посмотреть можно в папке где хранятся файлы сессий.

Пага 1

session_start();


// создается тот самый файл, юзеру идет заголовок про куки, браузер сохраняет в куки значение переменной PHPSESSIONID, или типа того, значение которой одновременно записывается в тот самый файл, с которым ясень пень уже установлена связь согласно настройкам - где лежит, как называется и все такое.

В скрипте интерфейс этого файла - обычная переменная типа массив, $_SESSION. В которую как обычно можно напихать что хочешь, в том числе и массивы, объекты (stdClass как два пальца, другие классы как три), например

$_SESSION['this_page_name']="Это пага номер 1";


Пага 2

session_start(); 


// все то же самое начиная с проверки наличия у юзера куков с PHPSESSIONID, которую сервер если получает, то получает ИД, по нему читает определенный файл и заполняет массив данными из этого файла.

echo 'previous page number is: '. $_SESSION['this_page_number'];
// previous page number is Это пага номер 1


Думать как оно и где и как - вообще не надо. Запускай и юзай.

Похвалиться большим опытом программирования не могу, но ни разу еще ничего не записал в файл. Сложновато это для меня.

Я даже не помню как называется эта самая кука - с ИД, потому что один раз где надо было ее проверить проверял через session_id(); а само имя можно получить/задать через session_name();
dr.nomore
В прошлом, да, не попадались примеры, были какие-то замороченные методы обращения с сессией, сейчас все очень гладко да сладко.

Если какая-то запись в сессии больше не нужна то

unset($_SESSION['this_is_page']);

Разумеется файл сессии будет удален после завершения сессии, но вы ж сохраните полезные данные в куках юзера. Или в бд. В общем по-моему с файлами как в локале обычно не работают без особой нужды.

Цитата
Это все работает, но есть одна проблема.


Проблема в том что один файл у вас на всех юзеров. Если вы там будете читать-то то, кому-то, то увидят все.
Guest
biggrin.gif Да!!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.