Forum Webscript.Ru

Программирование => PHP => Тема начата: Miller от 27 Января 2004, 05:50:23

Название: Сортировка текста
Отправлено: Miller от 27 Января 2004, 05:50:23
Фишка вот в чем: во внешенм файле хранится текст...построчно. причем php считает верхнюю строку при сортировке номер 1, а при добавлении текста из формы, тект записывается в фаил первой строкой. Очень бы хотелось обращаться к строкам по их номеру.. а не выхдит т.к. номер постоянно меняется. Я вижу 2 решения
1 или как-то научить добавлять текст с конца, или читать тект с конца.. задолбался уже...  :(
Название: Сортировка текста
Отправлено: Neter от 27 Января 2004, 06:23:06
Нисиго не понимаю, кинь сюда кусок кода..
$fp = fopen ("file.txt", "a+");
Пробывал?
Название: Сортировка текста
Отправлено: Miller от 27 Января 2004, 08:29:48
Это пишем в php скрипте
$fp=file($g_datafile); //Файлик с текстом
$total=count($fp);

if( (!isset($page)) || ($page==1) ) {

if($total>$g_onepagenews)  //g_onepagenews это кол-во строк на страницу
$showed=$g_onepagenews;

else
$showed=$total;

$lim=$total-$g_onepagenews;
if($lim<0)
$lim=0;


for($i=$total; $i>=$lim; $i--) {
list($title,$date,$text,$poster)=split(":::",$fp[$i]); //тут обьясняем скрипту какой кусок текста за какую переменную считать
if(strlen($date) > 0) {
include("format.inc"); //в format.inc лежит шаблон для вывода текста
echo($format);
}

}
[/PHP]
Ниже приведен текст подключаемого файла:

Гостевая1:::25.12.03:::Это скрипт гостевой книги, тестим... :::Miller
Гостевая2:::25.12.03:::Это скрипт гостевой книги, тестим... :::Miller
Гостевая3:::25.12.03:::Это скрипт гостевой книги, тестим... :::Miller

К любой из этих строк можно обратится посредствам $fp[$i]
Допустим, я пишу, что мне надо показать, $fp[1] и $fp[2]
Нам покажут (показываем тока титул):
Гостевая 1 и Гостевая 2, но если я с помошью формы добавляю в фаил еще одну строку
Гостевая4:::25.12.03:::Это скрипт гостевой книги, тестим... :::Miller
То нам покажут уже: Гостевая 4, Гостевая 1.
Повсторяю вопрос: Можно ли сортировать файлы с другого конца?
Название: Сортировка текста
Отправлено: Neter от 27 Января 2004, 09:56:25
Повторяю ответ, не сортировать, а добавлять.
В скрипте обработки данных из формы открываешь файл таким способом:
$fp = fopen ("file.txt", "a"); // Открывает файл на запись и перемещает указатель в конец файла.
Т.е. все добавленные строки будут добавлятся в конец.

К тому-же не удачно выбран шаблон хранения записей.
Что будет если я в текст сообщения напишу "текст:::что-то"? Начнётся новое поле. А если просто напишу в несколько строк, что, несколько записей?
Лучше будет примерно так:
Гостевая3|25.12.03|Это скрипт гостевой книги, тестим...|Miller~
А потом прочитать весь файл
$records = file_get_contents($file);
$records = explode("~", $records);
$count_records = count($records);
for($i=0; $i<=$count_records; $i++){
  $cur_record = explode("|",$records[$i]); // Всё, массив $cur_record содержит поля текущей записи.
  echo nl2br($cur_record[2])."
"; // Выводит текст всех записей.
}
При добавлении записи порежь везде символы "|" и "~".
$string = str_replace(array("|", "~"), "", $string);
Надеюсь сам допишешь постраничный вывод.
Название: Сортировка текста
Отправлено: Miller от 27 Января 2004, 10:30:08
Ок, с этим я разобрался, а можно как-нибудь еще управлять указателем, допустим писать в первую строку, или например читать фаил с последней/первой строки.
За код больше спасибо!
Но непонятны 2 команды: nl2br и explode
С меня пиво... выручил!
Название: Сортировка текста
Отправлено: Меняздесьдавнонет от 27 Января 2004, 11:23:57
управлять указателем можно - fseek
описание этой команды, точно так же, как и nl2br с explode, следует смотреть в документации.
Документацию можно найти здесь:
http://faq.phpclub.net/docs

однако применять указатель к строкам можно только если строки имеют одинаковую длину.
Название: Сортировка текста
Отправлено: Меняздесьдавнонет от 27 Января 2004, 11:27:07
Neter
при создании гостевой книги в текстовом файле, более осмысленно при добавлении заменять перевод строки на
 руками, чем извращаться со спецсимволами.
Название: Сортировка текста
Отправлено: Меняздесьдавнонет от 27 Января 2004, 11:33:13
Neter , и вообще.
Не надо его спрашивать, напишет ли он постраничку - ее за него уже написали :-)

Miller, тебя просили показать код не которым ты выводишь, а которым добавляешь.
В нем, кстати, и лежит ответ, как добавлять в первую строчку и так далии.
ибо вопросы "как добавить сверху", "как удалить строку", "как отредактировать строку" и так далее - решаются одним и тем же способом.
Название: Сортировка текста
Отправлено: Miller от 27 Января 2004, 21:21:48
Пришел RomikChef и всех опустил... опять...
Вот код... но он старый, там кой чего не совпадает, но суть не в этом, покажите мне где тут менять, чтобы добвалять в первую строку, т.к. окзалось, что скрипт читает с конца и добавляет в конец.

$kof=$page-1;
$negative=$onepagenews*$kof;
$up=$total-$negative;
$down=$up-$onepagenews;


for($i=$up-1; $i>=$down; $i--) {
list($date,$data,$poster)=split(":::",$newsfile[$i]);
if(strlen($data) > 0) {
$data=br2n($data);
echo("\\n
\\n\\n");
echo("\\n\\n");
echo("$i.

\\n\\n\\n");
echo("\\n\\n\\n\\n

\\n\\n заменять спецсимволы HTML на эквиваленты

\\n\\n\\n удалить сообщение

\\n\\n\\n\\nЛогин:
\\n\\n\\n

\\n\\n\\n\\nПароль:


");
echo("

\\n\\n

\\n\\n");
echo("\\n\\n
\\n\\n\\n");

echo("\\n\\n\\n\\n\\n");
                      }
                       }
Название: Сортировка текста
Отправлено: Neter от 27 Января 2004, 23:25:50
Нет, честное слово, это уже становится смешно.
Так, я был добр, заметь, был, мало того что ужасный РНР генерит не менее ужасный HTML, так ты ещё не понял ни слова из того что я и Ромик тебе написали. Надо вводить новое понятие "РНРтеррорист".
Название: Сортировка текста
Отправлено: Miller от 27 Января 2004, 23:53:25
Да ну вас, спрашивать что либо в этом месте себе дороже. Если вы не можете доходчиво объянить что-то то и объяснять лучше не пытаться.
Название: Сортировка текста
Отправлено: Макс от 28 Января 2004, 00:10:51
Miller
в приведенном тобой коде нет строк, которые добавляют данные в файл. Поэтому показать
Цитировать
Miller:
где тут менять, чтобы добвалять в первую строку,
не можем
Название: Сортировка текста
Отправлено: Меняздесьдавнонет от 28 Января 2004, 01:27:45
мне этот хмырь конкретно надоел.