Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][MySQL][PHP]przyjazne linki + SQL
roghatt
post
Post #1





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

Ostrzeżenie: (0%)
-----


Witam
Na początek opiszę co chcę osiągnąć.
Linki u mnie wyglądają tak:
http://www.jakasnazwastrony.pl/index.php?top=31&id=11
http://www.jakasnazwastrony.pl/index.php?top=31&id=14
top=31 jest to jeden dział na stronie np. Wiadomości, a id to wiadomo id kolejnych wpisów.

Na stronie posiadam ok 40 innych działów np.:
http://www.jakasnazwastrony.pl/index.php?top=20&id=113

Wszystkie top=cyferka mam przypisane w pliku config:
  1. $wiadomosci=31;
  2. $jakisdzial=20;


index.php opiera się na

  1. switch ($top) {
  2.  
  3. case $wiadomosci:
  4.  
  5. include("jakisplik.php");
  6.  
  7. break;
  8.  
  9. case $jakisdzial:
  10. include ("jakisplik2.php");
  11. break;
  12.  


W ten sposób wyświetlam odpowiednie działy i podstrony.

Wiem jak mniej więcej robić w htaccess te przyjazne linki ale nie mogę do końca zrozumieć idei w jaki sposób zamiast linku:
http://www.jakasnazwastrony.pl/index.php?top=31&id=11
zrobic link:
  1. http://www.jakasnazwastrony.pl/nazwadzialu/11-tytul_newsa.html


W linku zawarte id (tytuły mogą się powtarzać) oraz "Tytuł newsa" wyciągany jest z bazy danych z konkretnej tabeli, wyszukanie z bazy danych odbywa się po ID zawartym w linku.
Przeciez w htaccess nie można zapytań wpisywać, więc gdzie to obsługiwać? ID w linku musi być aby wyświetlił się odpowiedni news, ale jak do linku wpisywać dane pobrane z bazy?
Jeśli ktoś zna/uczył się to robić w oparciu o jakiś konkretny tutorial to proszę o link. Te które sam znalazłem dokładnie nie tłumaczą tego.
Go to the top of the page
+Quote Post
Poker
post
Post #2





Grupa: Zarejestrowani
Postów: 205
Pomógł: 3
Dołączył: 20.04.2009
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Najpierw musisz zacząć od bazy danych i tam zrobić coś na kształt :

`id`
`nazwaDzialu` <- bez polskich znaków


Teraz robisz sobie w .htaccess

Kod
RewriteRule ^(.*) /([0-9]+)-(.*).html index.php?nazwaDzialu=$1&id=$2



I w swoim pliku index.php szukasz czy nazwaDziału znajduje się w bazie danych i przypisujesz jej ten swój 'top' , który obecnie masz w linku.
Wtedy po prostu ukrywasz '?top=31' i zamieniasz na nazwę działu


--------------------
:) na miliony przyjdzie czas...
Go to the top of the page
+Quote Post
roghatt
post
Post #3





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

Ostrzeżenie: (0%)
-----


nie do końca rozumiem...czyli mam utworzyć tabele z nazwami działów?
skoro obecnie w linku mam '?top=31' to najpierw muszę wszystkie linki przerobić na stronie skoro w htaccess ma przepisywać adresy z linków rodzaju "index.php?nazwaDzialu=$1&id=$2"
A co z tym ID, tam tez z bazy chce pobierać odpowiednie dane np. tytuł newsa.
Go to the top of the page
+Quote Post
peter13135
post
Post #4





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


jak zrobisz to co kolega wyżej opisał, to getem beddziesz otrzymywał nazwe ddzialu i id wpisu. Ja bym zmodyfikował skrypt tak:

switch ($top) {
case 'wiadomosci'
(...)

i wtedy nicc w bazie nie beddziesz musiał dodawać


--------------------
:)
Go to the top of the page
+Quote Post
roghatt
post
Post #5





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

Ostrzeżenie: (0%)
-----


ok usunąłem posta bo sobie z problemem poradziłem.
przyjazne linki już działają.

Ale nie wiem do końca w jaki sposób zrobić przekierowanie ze starych adresów z parametrami do nowych przyjaznych adresów.

Kod
RewriteRule ^([a-zA-Z0-9-_]+)/([a-zA-Z0-9-_]+)-([a-zA-Z0-9-_]+).html index.php?top=$1&id=$2&sname=$3 [L]
RewriteRule ^([a-zA-Z0-9-_]+)$ /$1/ [R=301,L,NC]
RewriteRule ^([a-zA-Z0-9-_]+)/$ index.php?top=$1 [L]


Tutaj jedynie zrobilem przekierowanie aby jak ktoś nie wstawi ukośnika to przekieruje go dopisując ten ukośnik
Ale jak przekierować ze starych adresów
index.php?top=$1&id=$2&sname=$3
na
/$1/$2-$3.html
Czyli tak wyglądają moje linki.
Robiłem przez 301 ale wyskakiwał błąd na stronie i w ogóle strona nie chodziła
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 02:00