2b315845

Имитация файлов и директорий - 3


Что такое title и rub_text ? объяснять не надо. Поле address ? это адрес, по которому будет запрашиваться рубрика (новости нужно сделать рубрикой первого уровня, и в поле address будет "news"). Поле parent_id ? идентификатор рубрики уровнем выше.

Теперь, если рубики заведомо не могут быть ниже второго уровня, анализ адреса не составит особого труда.

$url = $REQUEST_URI;

// убираем слэши из начала и конца адреса

$url = ereg_replace("^/", "", $url);

$url = ereg_replace("/$", "", $url);

$dir = explode("/", $url)

// случай, когда запрошена рубрика второго уровня.

if (sizeof($dir)==2) {

// составляется запрос, объединяющий таблицу rubrika саму с собой. Здесь надо заметить только, что таблица first подразумевает рубрику второго уровня, а second, наоборот, первого.

  $request = "SELECT first.id, first.title, first.rub_text FROM rubrika first, rubrika second WHERE first.parent_id=second.id AND first.address='". $dir[1]. "' AND second.address='". $dir[0]. "'";

// Отправляем запрос в базу, а потом обрабатываем результат.

  $result = mysql_query($request);

  if (!mysql_error() && @mysql_num_rows($result)==1) {

    }

// Это на случай, если запрос прошел успешно, но ничего не найдено

  elseif (!mysql_error()) {

    }

// ...и на случай, если произошла ошибка.

  else

    die ("Ошибка БД. MySQL пишет: ". mysql_error());

  }

// Запрошена рубрика первого уровня. тут и делать-то нечего :)

elseif (!ereg("/", $url)) {

  $request = "SELECT id, title, rub_text FROM rubrika WHERE address='$url'";

  ...

  };

Хватит примеров? Дальше ? дело фантазии. Подведем итоги, распишем положительные и отрицательные моменты.

+ Красивые адреса, возможность зайти в рубрику, набрав ее адрес на клавиатуре. Благодарность от фанатов клавиатуры.




Начало  Назад  Вперед