[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблема при записи в текстовый файл
gletscherl
index.php
Код
<form action="action.php" method="post">
<p>Ваше имя<br>
<input name="name" type="text" class="lnews_data" size="30">
</p>
<p>Ваше e-mail<br>
<input name="email" type="text" class="lnews_data" size="40">
</p>
<p>текст<br>
<textarea name="mes" cols="50" rows="5" class="lnews_data"></textarea>
</p>
<p>
<label>
<input type="submit" name="submit" id="submit" value="отправить">
</label>
</p>
</form>


action.php
Код
<?php
if ($_POST['']);
$file=fopen('news.txt ','a+');
fputs($file,$_POST['name']);
fputs($file,$_POST['email']);
fputs($file,$_POST['mes']);
fclose($file);
echo 'Данные записаны в файл!';
?>

Человек вводит текст в формы, затем нажатием на кнопку Отправить записывает введённый текст в файл
Скрипт работает, но возникла вот такая проблема:
Каждый новый текст дописывается в конец текстового файла, а мне нужно, чтобы он дописывался в начало
Мучаюсь уже неделю, ничего не могу сделать.
сразу говорю, режим чтения пробовал изменять на все возможные:

a - дописывает в конец
a+ - дописывает в конец
r - вообще не пишет
r+ - дописывает в начало, но заменяет более ранний текст
w - обнуляет файл и дописывает
w+ - обнуляет файл и дописывает с заменой более раннего текста
x - не работает, выдаёт
Код
Warning: fopen(news.txt ) [function.fopen]: failed to open stream: File exists in C:\xampp\htdocs\action.php on line 3

Warning: fputs(): supplied argument is not a valid stream resource in C:\xampp\htdocs\action.php on line 4

Warning: fputs(): supplied argument is not a valid stream resource in C:\xampp\htdocs\action.php on line 5

Warning: fputs(): supplied argument is not a valid stream resource in C:\xampp\htdocs\action.php on line 6

Warning: fclose(): supplied argument is not a valid stream resource in C:\xampp\htdocs\action.php on line 7
Данные записаны в файл!

x+ - аналогично x

Если кто нибудь знает, как помочь или если у вас есть идеи, как лучше переписать скрипт (без потери функций) отпишитесь пожалуйста.




Спустя 6 минут, 58 секунд (24.02.2009 - 16:17) gletscherl написал(а):
и ещё, если кто нибудь знает, как прочитать txt файл с конца, тоже отпишитесь

Спустя 8 минут, 31 секунда (24.02.2009 - 16:26) Viking написал(а):
ну дык считай файл, добавь нужные данные в начало его содержимого, и запиши все обратно
а читать с конца можно например через rsort() и file()

Спустя 1 минута, 55 секунд (24.02.2009 - 16:27) gletscherl написал(а):
приведите пожвлуйста пример, а то я "на слух" не очень воспринимаю) и в php пока что только начинаю разбираться

Спустя 1 минута, 44 секунды (24.02.2009 - 16:29) lawbreaker написал(а):
я совсем недавно тоже работал только с фацлами. советую тебе завязать. с етим всегда геморои. пользуйся мускулём

что ето такое?
PHP
<?php
if ($_POST['']);
???

попробуй так
PHP
<?php

$file
=fopen('news.txt ','r+');
fwrite($file,$_POST['name']);
fwrite($file,$_POST['email']);
fwrite($file,$_POST['mes']);
fclose($file);
echo 
'Данные записаны в файл!';


хотя я сомнваюсь что чтото извенится

Спустя 5 минут (24.02.2009 - 16:34) gletscherl написал(а):
lawbreaker
спасибо ОГРОМНОЕ


P.S Форум однозначно в избранное, т.к на других форумах никто так и не смог дать дельных советов, хотя ждал несколько дней, а тут прям оперативно))) сразу видно, что публика - профессиональная!

Спустя 2 минуты, 27 секунд (24.02.2009 - 16:37) lawbreaker написал(а):
уря. наконецто я комуто помог biggrin.gif
АДМИН теперь я получу 6-ой квадратик? tongue.gif

Спустя 1 минута, 15 секунд (24.02.2009 - 16:38) lawbreaker написал(а):
gletscherl
хочеш меня отблагодарить? зарегись плиз тут

и если найдёш чтото плезное для себя TyT

Спустя 3 минуты, 50 секунд (24.02.2009 - 16:42) twin написал(а):
Так вряд ли получится что то путнее.
Ну вот есть листок бумаги. Как можно что то добавить в начало, если там уже все написаано? Приклеить кусочек? Только взять новый и все переписать.
Сначала считать в переменную, добавить нужный фрагмент и записать по новой. Например так:
PHP
<?
$content file_get_contents('news.txt');
file_put_contents('news.txt'$new_data."\r\n".$content);

А прочитать задом наперед данные из файла, можно перевернув массив. array_reverse();

PS Андрюха, поздравляю! и на твоей улице праздник! smile.gif

Спустя 1 час, 18 минут, 4 секунды (24.02.2009 - 18:00) gletscherl написал(а):
хм, рано радовался, новая новость всёравно записывается поверх старой!

Спустя 2 минуты, 16 секунд (24.02.2009 - 18:02) lawbreaker написал(а):
unsure.gif

Спустя 2 минуты, 26 секунд (24.02.2009 - 18:04) gletscherl написал(а):
смежет ктонибудь написать, что мне нужно вставить в тег div чтобы в нём вывелся файл news.txt с конца

Спустя 1 минута, 5 секунд (24.02.2009 - 18:06) gletscherl написал(а):
или предложить варианты решения на мой 1й пост

Спустя 1 час, 27 минут, 10 секунд (24.02.2009 - 19:33) twin написал(а):
А почитать внимательно, что советуют, не судьба значит...
Вот так в начало:
PHP
<?
$name = isset($_POST['name'])?$_POST['name']:NULL;
$email = isset($_POST['email'])?$_POST['email']:NULL;
$mes = isset($_POST['mes'])?$_POST['mes']:NULL;
$new_data $name.$email.$mes;
$content file_get_contents('news.txt');
file_put_contents('news.txt'$new_data."\r\n".$content);

А вот так с конца прочитать:
PHP
<?
$content array_reverse(file('news.txt'));
echo 
implode("<br>"$content );

Спустя 35 минут, 39 секунд (24.02.2009 - 20:08) gletscherl написал(а):
хм тоже на работает, в вашем случае при выводе каждая новая запись идёт через тег<br> и всёравно новый текст получается внизу

Спустя 14 минут, 46 секунд (24.02.2009 - 20:23) Viking написал(а):
т.е. ты сначала добавляешь новость в начало файла, а потом выводишь файл наоборот, и удивляешься, почему последняя новость внизу? smile.gif

Спустя 1 час, 1 минута, 52 секунды (24.02.2009 - 21:25) twin написал(а):
Ну тут надо уж определиться, туда или обратно... Как той женщине из анекдота. Или в начало писать или с конца читать. Это же два варианта.

Спустя 1 час, 6 минут, 47 секунд (24.02.2009 - 22:32) sergeiss написал(а):
Цитата (twin @ 24.02.2009 - 21:25)
Ну тут надо уж определиться, туда или обратно... Как той женщине из анекдота. Или в начало писать или с конца читать. Это же два варианта.

Есть еще третий вариант. Сделать всё на основе БД и пАриться smile.gif

Спустя 16 часов, 42 минуты, 37 секунд (25.02.2009 - 15:14) gletscherl написал(а):
Цитата (Viking @ 24.02.2009 - 17:23)
т.е. ты сначала добавляешь новость в начало файла, а потом выводишь файл наоборот, и удивляешься, почему последняя новость внизу? smile.gif

я чтото запутался rolleyes.gif

Спустя 4 часа, 43 минуты, 15 секунд (25.02.2009 - 19:58) gletscherl написал(а):
уже несколько примеров перепробовал, функция r+ вообще работает???

Спустя 57 минут, 16 секунд (25.02.2009 - 20:55) lawbreaker написал(а):
да.у меня она норм работает

Спустя 8 часов, 40 минут (26.02.2009 - 05:35) olgatcpip написал(а):
Ну возбми ты запиши данные в файл через какой-нибудь разделитель, типа ||| или ещё набор символов придумай. Записывай, как советуют по порядку (добавляя вниз) А когда считываешь, explode("|||", $text) и в обратном порядке выводи.


Еще вариантик: Все-таки учись БД пользоваться, проблем меньше будет.
Быстрый ответ:

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