PDA

Просмотр полной версии : Сортировка данных при записи в файл


Olim
12.07.2002, 15:06
Написал скрипт добавления новостей, саму запись произвожу так:

<?php

---- some code ----

@$open_news = fopen ($site_news, "a+");
rewind ($open_news);
@fputs ($open_news, $news_ins);
@fclose ($open_news);

?>

Проблема в том, что новая запись добавляется в файл после предыдущей, а мне
нужно, чтобы новая запись записывалясь в начало файла (, а остальные, как бы смещались
на одно вниз). Пробовал использовать в качестве параметра fopen - "r+", но в этом
случае каждая новая запись просто переписывала предыдущую.
Как сделать, чтоб при записи в файл новая запись добавлялась в начало файла,
или, если это невозможно, то как сделать чтобы при выводе этого файла (я использую
include_once ('somefile.htm')) он отображался в браузере, как бы "вверх ногами"? :idontnow:

Stasik
12.07.2002, 16:14
<?
//прочитаем новые новости
$open_news = fopen ($site_news, "w");
while (!feof ($open_news)) {
$news_old .= fgets($open_news, 1024);
}
fclose ($open_news);

//очистили файл
$open_news = fopen ($site_news, "w+");
//сложим старое и новое
$news = $news_ins.$news_old;
//запишем
fputs ($open_news, $news);
fclose ($open_news);
?>


вуаля

tr1pl
13.07.2002, 16:22
ну и изврат:) не проще прочитать файл в массив фцией file() , перевернуть его array_reverse() и выводить сколько надо записей из готового массива.
А запись производить просто и незадачливо:



$fp = fopen('./chat/messages.txt',"a");
flock($fp,2);
$string = "My new news";
fputs($fp,$string);
fclose($fp);