gletscherl
24.02.2009 - 17:10
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 написал(а):
уря. наконецто я комуто помог
АДМИН теперь я получу 6-ой квадратик?
Спустя 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 Андрюха, поздравляю! и на твоей улице праздник!
Спустя 1 час, 18 минут, 4 секунды (24.02.2009 - 18:00) gletscherl написал(а):
хм, рано радовался, новая новость всёравно записывается поверх старой!
Спустя 2 минуты, 16 секунд (24.02.2009 - 18:02) lawbreaker написал(а):
Спустя 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 написал(а):
т.е. ты сначала добавляешь новость в начало файла, а потом выводишь файл наоборот, и удивляешься, почему последняя новость внизу?
Спустя 1 час, 1 минута, 52 секунды (24.02.2009 - 21:25) twin написал(а):
Ну тут надо уж определиться, туда или обратно... Как той женщине из анекдота. Или в начало писать или с конца читать. Это же два варианта.
Спустя 1 час, 6 минут, 47 секунд (24.02.2009 - 22:32) sergeiss написал(а):
Цитата (twin @ 24.02.2009 - 21:25) |
Ну тут надо уж определиться, туда или обратно... Как той женщине из анекдота. Или в начало писать или с конца читать. Это же два варианта. |
Есть еще третий вариант. Сделать всё на основе БД и пАриться
Спустя 16 часов, 42 минуты, 37 секунд (25.02.2009 - 15:14) gletscherl написал(а):
Цитата (Viking @ 24.02.2009 - 17:23) |
т.е. ты сначала добавляешь новость в начало файла, а потом выводишь файл наоборот, и удивляешься, почему последняя новость внизу? |
я чтото запутался
Спустя 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) и в обратном порядке выводи.
Еще вариантик: Все-таки учись БД пользоваться, проблем меньше будет.