я не правильно спросил...ПОДразделов не будет
т.е. будет только так news/nazvanie-categorii/nazvanie-novosti
$tmp = array();
$url = explode("/", getenv('REQUEST_URI'));
foreach( $url as $v )
if ( $v != false ) $tmp[] = $v;
$url = $tmp;
$urlSection = ( isset( $url[1] ) ) ? $url[1] : false;
$urlQuery = ( isset( $url[2] ) ) ? $url[2] : false;
if ( $urlSection == false ) {
// ЭТО СПИСОК НОВОСТЕЙ
elseif ( $urlQuery == false ) {
// ЭТО СПИСОК НОВОСТЕЙ в разделе
$q = sprintf("SELECT * FROM ".TABLE_NEWS." WHERE `section` LIKE '%s'",
mysql_real_escape_string( $urlSection ));
} else {
$q = sprintf("SELECT * FROM ".TABLE_NEWS." WHERE `section` LIKE '%s' AND `url` LIKE '%s' LIMIT 1",
mysql_real_escape_string( $urlSection ),
mysql_real_escape_string( $urlQuery ));
$query = mysql_query($q);
$row = mysql_fetch_array($query);
if ( count( $row ) == 0 ) {
// Страница не найдена
} else {
// ЭТО ПОЛНАЯ НОВОСТЬ
}
}
мне не жалко, пусть спрашиваетAlien85
чем обусловлено ваше желание оказать человеку медвежью услугу?
через полгода он придет на этот же форум со "своим" кодом и будет спрашивать как он работает.
я на работе без работывам нечего делать? вы безработный?
это еще что за хрень?<irony>не пойму, что не работает</irony>PHP:$url = explode("/", getenv('REQUEST_URI')); for ($i=0; $i<count($url); $i++) { echo $url[$i]; $i--; }
снеси эту ( обсуждение о готовых ответах) тему к чертям там не пробиваемо все равнообсуждение о готовых ответах вынес в отдельную тему в мусорке
class URL {
// Функция URL::Get(); работает так:
// Допустим вы на странице: "/news/auto/audi.html?delete=1"
// Первый вызов URL::Get(); вернет "news"
// Второй вызов URL::Get(); вернет "auto"
// Третий вызов URL::Get(); вернет "audi.html"
// Четыертый вызов URL::Get(); вернет false
public static function Get () {
return array_shift (URL::$CurrentUrlGet);
}
// URL::GetAll(); - вернет "news/auto/audi.html"
// на странице "/news/auto/audi.html?delete=1"
public static function GetAll () {
return implode('/', URL::$CurrentUrl);
}
// URL::GetVar('delete'); - то же самое, что и $_GET['delete']
public static function GetVar ($name) {
return ( isset( URL::$Parameters[ $name ] ) )
? urldecode( URL::$Parameters[ $name ] )
: FALSE;
}
// URL::GetPost('text'); - то же самое, что и $_POST['text']
public static function GetPost ($name) {
return ( isset( $_POST[ $name ] ) )
? trim($_POST[ $name ])
: FALSE;
}
// URL::Redirect(); - переадресация куда нибудь,
// например: "/404.html" или "http://google.ru/"
public static function Redirect ($URL) {
header('Location: ' . $URL);
exit;
}
private static $CurrentUrl = array ();
private static $CurrentUrlGet = array ();
private static $Parameters = array ();
// Инициализация класса
public static function Init () {
$uri = getenv ('REQUEST_URI');
$url = explode ('?', $uri, 2);
$list = explode ('/', $url[0]);
if ( isset( $list[0] ) ) unset( $list[0] );
foreach ($list as $param)
URL::$CurrentUrl[] = strtolower ($param);
URL::$CurrentUrlGet = URL::$CurrentUrl;
if (isset ($url[1])) {
$list = explode ('&', $url[1]);
if (count ($list) > 0) {
foreach ($list as $string) {
$arr = explode ('=', $string, 2);
if (count ($arr) == 2)
URL::$Parameters[$arr[0]] = trim($arr[1]);
}
}
}
}
}
URL::Init();
Я же написал:Alien85
3.14здец. нафик это всё? ты сделал кучу ограничений, например нельзя с постом работать как с неймспэсом Url::GetPost не имеет проверки is_array. Завязался на обязательный вызов Init перед вызовом Get*, нет никакой защиты перед повторным вызовом Url::Init() который сломает Url::Get(). Для чего ручной разбор $_GET параметров? разве что cli.
И, кстати, используй self
ключевое слово здесь: "свой".Приведу свой урезанный класс
public static function Get () {
return array_shift (self::$CurrentUrlGet);// return array_shift (URL::$CurrentUrlGet);
}
спасибо, почему-то не знал...PHP:public static function Get () { return array_shift (self::$CurrentUrlGet);// return array_shift (URL::$CurrentUrlGet); }