Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как сделать ЧПУ?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
sofck
Отправлено: 20 Декабря, 2010 - 13:24:18
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Нужна помощь в создании ЧПУ.
Вообщем скажем так. У меня есть что то вроде своего движка, может сильно сказал, но мне так проще) Вся структура сайта на нем строется деревидно, хлебные крошки и т.д. А в адресной строке все страницы отображаются как ?c=Number, у каждой страницы может быть неограниченное кол-во элементов и каждый из них отображается как ?c=Number&ci=Number. Ну а имя в латинице для страницы или элементы может формироваться при создании или переименовывании простой функцией перевода русского в транслит.
Пример.
Скажем есть страница "Контакты" - kontakti. ?c=4
У нее есть элементы "Офис1" и "Офис2" - ?c=4&ci=1 и ?c=4&ci=2 соответственно.(office1 и office2)
Ну и скажем есть дочерняя страница для Контакты, скажем - Дополнительно ?c=5 (dopolnitelno)

Как сделать так что бы вводя в адресной строке(site.ru/kontakti) грузился ?c=4
А если (site.ru/kontakti/office1) то грузися ?c=4&ci=1
Ну а если ввести (site.ru/kontakti/dopolnitelno) то грузиться ?c=5

Ну само собой название для ЧПУ будут браться с mysql

Вообще нужен не просто совет, а желательно рабочий пример. Готов материально вознаградить в разумных пределах!!!

Спасибо за то что прочли!
 
 Top
OrmaJever Модератор
Отправлено: 20 Декабря, 2010 - 14:37:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




sofck пишет:
Скажем есть страница "Контакты" - kontakti. ?c=4
У нее есть элементы "Офис1" и "Офис2" - ?c=4&ci=1 и ?c=4&ci=2 соответственно.(office1 и office2)
Ну и скажем есть дочерняя страница для Контакты, скажем - Дополнительно ?c=5 (dopolnitelno)

Я не нашёл здесь никакой связи Однако опишите подробнее url и как нужно.
_http://ru.wikipedia.org/wiki/ЧПУ_(интернет)


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
sofck
Отправлено: 20 Декабря, 2010 - 14:52:51
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




все страницы имеют адрес ?c=N
все элементы относящиеся к определенной странице имею адрес ?c=2&ci=N, ?c=2&ci=N
у каждой страницы или элемента в бд храниться значение для чпу, к примеру uri
Получая из $_GET значение ?c или ?с&сi формируются "крошки"
Как связать mod_rewrite c mysql.
(не знаю как объяснить)

может куда выложить пример сайта для нагядности?
 
 Top
OrmaJever Модератор
Отправлено: 20 Декабря, 2010 - 16:05:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




sofck пишет:
Как связать mod_rewrite c mysql.

mod_rewrite это же просто сылка которую водит пользователь. А бд на строноне сервера может взять параметры из масива $_GET

CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteRule ^имя_файла/([0-9]+)/$ имя_файла.php?c=$1 [L]
  3. RewriteRule ^имя_файла/([0-9]+)/([0-9]+)$ имя_файла.php?c=$1&ci=$2 [L]

http://site.ru/имя_файла/2/5
$_GET['c'] = 2
$_GET['ci'] = 5


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JustUserR
Отправлено: 20 Декабря, 2010 - 16:56:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




sofck В качестве возможного варината осуществляющего решения приведенной задачи допустимо создание специализированного PHP-скрипта - обеспечивающего выполнение реальный действий по обработке пользовательских URL-запросов предоставленных в заданному виртуальному пути за счет примененеия системы alias-инга и действенного перенаправления - в таком случае возможна огранизация контроля выполнениемых web-элементов в рамках логики PHP-приложения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
sofck
Отправлено: 20 Декабря, 2010 - 16:57:18
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




OrmaJever пишет:
sofck пишет:
Как связать mod_rewrite c mysql.

mod_rewrite это же просто сылка которую водит пользователь. А бд на строноне сервера может взять параметры из масива $_GET

CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteRule ^имя_файла/([0-9]+)/$ имя_файла.php?c=$1 [L]
  3. RewriteRule ^имя_файла/([0-9]+)/([0-9]+)$ имя_файла.php?c=$1&ci=$2 [L]

http://site.ru/имя_файла/2/5
$_GET['c'] = 2
$_GET['ci'] = 5


Да так то можно, но немного не то,
прикол в том что имя исполняющего файла одно и тоже.
И нужно что бы если человек пишет site.ru/kontakti/ то грузился index.php?c=(значение id для записи где uri = kontakti. Ну а если нет то шибка.
и так до неограниченного вложения.
 
 Top
OrmaJever Модератор
Отправлено: 20 Декабря, 2010 - 17:04:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




sofck пишет:
И нужно что бы если человек пишет site.ru/kontakti/ то грузился index.php?c=(значение id для записи где uri = kontakti.

в url должно быть хоть чтото общее. Как я понял
site.ru/kontakti/ => index.php?c=kontakti ?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JustUserR
Отправлено: 20 Декабря, 2010 - 17:10:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




sofck пишет:
И так до неограниченного вложения
Использование предполагаемой программного метода анализа указанных пользовалеем URL-адерсов при осуществлении запроса к заданному обрабатываемому объекту виртуальной директории - включает возможность применения произвольных функциональных алгоримтов PHP-приложения для проведения соответствующего анализа


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
sofck
Отправлено: 20 Декабря, 2010 - 17:56:15
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Да нет общего.

Возможно ли тогда как нить реализовать


site.ru/раздел -> обработчик проверяет в бд соответствует ли раздел какой нибудь записи(скаже id=3)
и тогда грузит страницу ?c=3, но в адресной строке пишется site.ru/раздел
 
 Top
OrmaJever Модератор
Отправлено: 20 Декабря, 2010 - 18:01:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




sofck пишет:
Да нет общего.
это как ? Не понял
А как сервер должен понять что вывести? А?!
(Добавление)
sofck пишет:
site.ru/раздел -> обработчик проверяет в бд соответствует ли раздел какой нибудь записи(скаже id=3)
и тогда грузит страницу ?c=3, но в адресной строке пишется site.ru/раздел

оу дочитал и понял что нужно до конца дочитывать)
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteRule ^([0-9a-z]+)/$ index.php?cat=$1 [L]


Зачем в index.php составляете запрос где будет
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE `категория` = '$_GET['cat']'

Ну и если есть то открываем страницу с выбраным из базы параметром.

(Отредактировано автором: 20 Декабря, 2010 - 18:05:25)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
sofck
Отправлено: 20 Декабря, 2010 - 18:08:45
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Так ладно. Чуть ближе к вечеру выложу пример структуры сайта. Думаю так будет понятней))
 
 Top
sofck
Отправлено: 20 Декабря, 2010 - 22:54:34
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Ну вот выложил: regesh.ru
Сделал пару страничек для наглядности.
Вот для этого мне нужно ЧПУ.


ну кстати если использовать вместо ?c=number ---> ?c=name
то сделать чпу проще но что делать если

неограниченное кол-во вложений
(page1/page2/page3/ и т.д)

(Отредактировано автором: 20 Декабря, 2010 - 22:59:57)

 
 Top
sofck
Отправлено: 21 Декабря, 2010 - 19:24:43
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




Кто нить может реально помочь?
 
 Top
OrmaJever Модератор
Отправлено: 21 Декабря, 2010 - 20:20:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




sofck пишет:
Кто нить может реально помочь?

Что не так? Вы можите зделать такой скрипт с простым url`ом ?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
sofck
Отправлено: 21 Декабря, 2010 - 21:24:04
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




OrmaJever пишет:
sofck пишет:
Кто нить может реально помочь?

Что не так? Вы можите зделать такой скрипт с простым url`ом ?


Имеете ввиду что бы страницы отображались как ?c=name и ?сi=name
вместо числовых индификаторов?

Да могу.

(Отредактировано автором: 21 Декабря, 2010 - 22:07:05)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB