Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

Отображение информации и ее сортировка

Автор: Mostom

Привет! Вы знаете, очень часто встречаю на форумах вопросы типа: [Как мне сделать чтобы записи из файла отображались не с первой по последнюю, а наоборот, в обратном порядке?]. Уже ответов пять наверное написал… Люди совсем не хотят думать, хотя делается это элементарно!
Собственно, показать записи в обратном порядке можно двумя способами:
1. Записать информацию наоборот
2. Записывать информацию обычно, а показывать наоборот

У каждого из способов есть свои особенности, о которых я расскажу далее. Итак, сначала первый способ. Еще на процессе записи скриптом информации в файл пишем вот что:

1
2
3
4
5
6
7

<?php
$fh = fopen("file.txt", "r");
$all_notes = fread($fh, filesize("file.txt"));
fclose($fh);
$fh2 = fopen("file.txt", "w");
fwrite($fh2, $new_note);
fwrite($fh2, $all_notes);
fclose($fh2);
?>

file.txt – имя файла с записями;
$new_note – новая запись;
$all_notes – записи, хранящиеся в файле.
Суть в том, что мы открываем файлик с записями (при этом выставляем параметр [Только чтение]) и считываем все его содержимое в переменную (строчка 3). А потом опять открываем этот же файлик, но уже с другим параметром ([Только запись] - все содержимое файла удаляется), записываем в него новую запись, а потом все старые. Вот вам и обратная запись.
Сей способ рекомендуется применять, когда данные занимают больше одной строчки, например стихи или анекдоты. В этом случае данный скрипт подходит почти идеально.
Но бывают случаи, когда не принципиально, в каком порядке расположены записи в файле. В этом случае можно организовать обратный вывод (Вывод, а не запись!) таким образом:

1
2
3

<?php
$fh = file("file_name.txt");
$fh = array_reverse($fh);
for ($i=0; $i<count($fh); $i++) echo $fh[$i];
?>

Считываем содержимое файла в массив, затем с помощью функции array_reverse() переворачиваем его задом-наперед (сверху вниз / наизнанку / шиворот-навыворот ? ), и с помощью цикла выводим. А можно не переворачивая, просто настроить сам цикл на обратный вывод:

1
2

<?php
$fh = file("file_name.txt");
for ($i = count($fh); $i>0; $i--) echo $fh[$i-1];
?>

Здесь тоже все строки файла считываем в массив, а потом просто выводим его наоборот с помощью цикла. Два последних скрипта нужно размещать при непосредственном выводе записей для пользователя. Использовать его нужно, когда не важно, как записаны записи в файл, т.е. например в скрипте комментариев, гостевых книг, лент новостей и т.д. Короче, если в файле информация хранится в виде (грубо):
Миша || www.cngroup.ru || Отличная статья! Мне понравилась!
Вова || www.cngroup.ru || О, Мишка! Да ты дописал свою статью! Свершилось! :)
Миша || www.cngroup.ru || Да, дописал :) . Пойдет?

То для вас подойдет второй вариант.
Надеюсь, эта статья поможет вам, и одинаковых вопросов на форумах РуНета станет меньше? . В следующий раз, если увижу подобный вопрос, дам ссылку на наш сайт на страничку со статьей. Осталось только дождаться, когда mr.dsrtmn допишет движок. Вова, я, пользуясь своим положением автора и главреда обращаюсь к тебе от имени редакции с просьбой запустить наконец-то сайтик в сеть! Думаю, я выразил заодно и общее мнение наших читателей.
Вот в принципе и все! С уважением, Mostom.

 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS