Автор Тема: Сортировка текста  (Прочитано 6071 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Miller

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 30
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vicecity.dtn.ru
Сортировка текста
« : 27 Января 2004, 05:50:23 »
Фишка вот в чем: во внешенм файле хранится текст...построчно. причем php считает верхнюю строку при сортировке номер 1, а при добавлении текста из формы, тект записывается в фаил первой строкой. Очень бы хотелось обращаться к строкам по их номеру.. а не выхдит т.к. номер постоянно меняется. Я вижу 2 решения
1 или как-то научить добавлять текст с конца, или читать тект с конца.. задолбался уже...  :(

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Сортировка текста
« Ответ #1 : 27 Января 2004, 06:23:06 »
Нисиго не понимаю, кинь сюда кусок кода..
$fp fopen ("file.txt""a+");
Пробывал?
Мне тормоз послужил толчком...

Оффлайн Miller

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 30
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vicecity.dtn.ru
Сортировка текста
« Ответ #2 : 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

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Сортировка текста
« Ответ #3 : 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])."<hr>"// Выводит текст всех записей.
}

При добавлении записи порежь везде символы "|" и "~".
$string = str_replace(array("|", "~"), "", $string);
Надеюсь сам допишешь постраничный вывод.
Мне тормоз послужил толчком...

Оффлайн Miller

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 30
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vicecity.dtn.ru
Сортировка текста
« Ответ #4 : 27 Января 2004, 10:30:08 »
Ок, с этим я разобрался, а можно как-нибудь еще управлять указателем, допустим писать в первую строку, или например читать фаил с последней/первой строки.
За код больше спасибо!
Но непонятны 2 команды: nl2br и explode
С меня пиво... выручил!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сортировка текста
« Ответ #5 : 27 Января 2004, 11:23:57 »
управлять указателем можно - fseek
описание этой команды, точно так же, как и nl2br с explode, следует смотреть в документации.
Документацию можно найти здесь:
http://faq.phpclub.net/docs

однако применять указатель к строкам можно только если строки имеют одинаковую длину.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сортировка текста
« Ответ #6 : 27 Января 2004, 11:27:07 »
Neter
при создании гостевой книги в текстовом файле, более осмысленно при добавлении заменять перевод строки на
 руками, чем извращаться со спецсимволами.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сортировка текста
« Ответ #7 : 27 Января 2004, 11:33:13 »
Neter , и вообще.
Не надо его спрашивать, напишет ли он постраничку - ее за него уже написали :-)

Miller, тебя просили показать код не которым ты выводишь, а которым добавляешь.
В нем, кстати, и лежит ответ, как добавлять в первую строчку и так далии.
ибо вопросы "как добавить сверху", "как удалить строку", "как отредактировать строку" и так далее - решаются одним и тем же способом.

Оффлайн Miller

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 30
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vicecity.dtn.ru
Сортировка текста
« Ответ #8 : 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(
"<!-- $i begin -->\\n<form action=edit2.php method=post>\\n\\n");
echo(
"<input type=hidden name=s value=\'$i\'>\\n\\n");
echo(
"<b>$i.</b> 

\\n\\n\\n"
);
echo(
"\\n<textarea name=entry rows=10 cols=40>$data</textarea>\\n\\n\\n

\\n\\n<input type=checkbox name=nohtml> заменять спецсимволы HTML на эквиваленты

\\n\\n\\n<input type=checkbox name=delete> удалить сообщение

\\n\\n\\n\\nЛогин: <input type=password name=login>
\\n\\n\\n

\\n\\n\\n\\nПароль: <input type=password name=password>


"
); 
echo(
"

<input type=submit value=\\"  
send  \\">\\n\\n

\\n\\n"
);
echo(
"\\n\\n</form>\\n\\n\\n");

echo(
"\\n\\n<!-- $i end -->\\n\\n\\n");
                      }
                       }

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Сортировка текста
« Ответ #9 : 27 Января 2004, 23:25:50 »
Нет, честное слово, это уже становится смешно.
Так, я был добр, заметь, был, мало того что ужасный РНР генерит не менее ужасный HTML, так ты ещё не понял ни слова из того что я и Ромик тебе написали. Надо вводить новое понятие "РНРтеррорист".
Мне тормоз послужил толчком...

Оффлайн Miller

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 30
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vicecity.dtn.ru
Сортировка текста
« Ответ #10 : 27 Января 2004, 23:53:25 »
Да ну вас, спрашивать что либо в этом месте себе дороже. Если вы не можете доходчиво объянить что-то то и объяснять лучше не пытаться.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Сортировка текста
« Ответ #11 : 28 Января 2004, 00:10:51 »
Miller
в приведенном тобой коде нет строк, которые добавляют данные в файл. Поэтому показать
Цитировать
Miller:
где тут менять, чтобы добвалять в первую строку,
не можем
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сортировка текста
« Ответ #12 : 28 Января 2004, 01:27:45 »
мне этот хмырь конкретно надоел.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28