Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> .httacces przyjazne linki, zmienna w php bez użycia metody GET
szmerak
post
Post #1





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Używam do określenia linku jednego parametru get video.php?id=1
Chciał bym to zamienić w .htaccess na np. www.mojastrona.pl/video/samolot-sie-rozbil.html
Czy jest to możliwe nie podając zmiennej zawierającej nazwe "samolot sie rozbil" w GET?
tylko osobno w kodzie PHP?
Dalej chciał bym bazować tylko na id. Już oparłem cały skrypt na tym więc męczące by było przepisywanie wszystkiego na nowo.
Szukam już bardzo długo odpowiedzi ale na internecie są same przykłady co niedziałają. Przynajmniej mi ;/

Z góry dziękuje za pomoc
Go to the top of the page
+Quote Post
kiler129
post
Post #2





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Musisz zawrzec id w linku (IMG:style_emoticons/default/smile.gif)
Zamiast samolot-sie-rozbil daj 123-samolot-sie-rozbil (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
szmerak
post
Post #3





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Chyba nie za bardzo zrozumiałeś moje pytanie... Ja nie podaje przez GET nazwy samolot sie rozbil. Tylko tą wartość przyjmuje jakaś tam zmienna która jest wyciągana z bazy na podstawie ID. I tutaj moje pytanie czy bez podawania w GET tej nazwy jestem wstanie użyć zmiennej z nazwą do stworzenia linku "video/samolot-sie-rozbil"
Ja widziałem przykłady na stronach ale wszystkie były na podstawie podawanych parametrów GET. A ja bym chciał prosto ze zmiennych w kodzie tylko za pomocą ID.

Ten post edytował szmerak 14.12.2010, 13:54:19
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


jak dla mnie Twój opis jest kompletnie nie zrozumiały i zamotany...może opisz od początku co próbujesz zrobić?


chyba już rozumiem, masz takie linki video.php?id=1 i chcesz je zamienić na takie www.mojastrona.pl/video/samolot-sie-rozbil.html bez pobierania nazwy "samolot-sie-rozbil." z bazy danych tak?

Ten post edytował tehaha 14.12.2010, 14:07:32
Go to the top of the page
+Quote Post
szmerak
post
Post #5





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


ok.
link do filmiku jest www.mojastrona.pl/video.php?id=1
Ja chciał bym zrobić www.mojastrona.pl/video/samolot-sie-rozbil <--- gdzie "samolot-sie-rozbil" jest to nazwa video "samolot sie rozbil";
Jak widać głównym parametrem do filmiku jest id=$1
Nazwy "samolot sie rozbil" nie podaje w GET. np. www.mojastrona.pl/video.php?id=1&nazwa=samolot+sie+rozbil
Tylko jest ona wyciągana z bazy danych i zawarta w tablicy np. $row['nazwa'];
I tutaj moje pytanie czy da się na podstawie tej tablicy zbudować link www.mojastrona.pl/video/"nazwa-video"; bazując tylko na id filmiku podanym jako video.php?id=1
Myślę że teraz moja wypowiedź będzie zrozumiała, jeśli nie to już nie wiem (IMG:style_emoticons/default/dry.gif) (IMG:style_emoticons/default/dry.gif)
Go to the top of the page
+Quote Post
Quadina
post
Post #6





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


Twoje pytanie nie jest precyzyjne wystarczająco i mam dziwne wrażenie, że nie wiesz co to jest metoda GET tak właściwie więc, żeby dać na nie odpowiednią odpowiedź wyłożę trochę teorii.

Metoda GET to nic innego jak wszystko co widzisz w pasku adresu, zatem jeżeli masz w pasku adresu link:
www.mojastrona.pl/video/samolot-sie-rozbil.html
To jest to wszystko co wyżej wysłane metodą GET i można to przy pomocy pliku .htaccess rozbić na różne elementy zgodnie z NASZYM życzeniem. Np. W twoim przypadku możemy sprawdzić czy zaistniało słowo kluczowe /video/ i jeżeli tak, to wykonać skrypt video.php. Następnie możemy się zastanowić, czy chcemy, żeby dalsza część była przekazywana do skryptu czy jakoś przepisana. Ja proponuje w takich przypadkach przepisanie pomiędzy /video/ a .html tekstu do zmiennej strip. W ten sposób skrypt video.php będzie myślał, że otrzymał coś takiego:
www.mojastrona.pl/video.php?strip=samolot-sie-rozbil/
Mimo tego, że w przeglądarce wygląda to zupełnie inaczej. Taki przykład jak wyże w pliku htaccess będzie wyglądać następująco:
Kod
RewriteRule ^video/([^/]*).html$ video.php?strip=$1


Tłumaczę element po elemencie:
RewriteRule słowo kluczowe, nie podlega specjalnie dyskusji. Oznacza tyle, że chcemy przepisać wedle zasad podanych dalej w tej linijce
^video/([^/]*).html$ kod mający coś tam wspólnego z eregiem (nie będę się tutaj z nikim kłócić). Szukamy słówka video/ i coś cokolwiek (*) co nie będzie zawierało w sobie znaczka /, oraz ten ciąg zakonczy się .html (koniec oznaczony $ w tej sekcji, w kolejnej oznacza coś innego). Wytnie nam do zmiennej to co jest w nawiasie ([^/]*) czyli w skrócie mówiąc od video/ do .html czyli to co własciwie chcemy.
video.php?strip=$1 przepisujemy tutaj wszystko tak jak chcemy, czyli używamy skrypt video.php i podajemy mu metodą GET zmienną strip i przypisujemy jej zmienna $1. Zmienna ta to po prostu pierwsze wystąpienie nawiasów w poprzednim argumencie. Jeżeli było by ich wiecej, moglibyśmy je tutaj pokolei przepisywać w różny sposób i w różnej kolejności.

Cytat
Ja nie podaje przez GET nazwy samolot sie rozbil. Tylko tą wartość przyjmuje jakaś tam zmienna która jest wyciągana z bazy na podstawie ID. I tutaj moje pytanie czy bez podawania w GET tej nazwy jestem wstanie użyć zmiennej z nazwą do stworzenia linku "video/samolot-sie-rozbil"
Ja widziałem przykłady na stronach ale wszystkie były na podstawie podawanych parametrów GET. A ja bym chciał prosto ze zmiennych w kodzie.

Zatem Pana pytanie odnosi się do czegoś co nazywam osobiście "abstrakcją urojoną", czyli bez podstaw teoretycznych pyta Pan o rzeczy niemożliwe. Analizując Pana wypowiedź dochodzę do wniosku, że chce Pan przekazać jeden parametr z jednej strony do drugiej strony w linku, ale tak, żeby go nie było widać. Zatem czy nie jest to trochę bezsensowne? Jak można dać dziecku bułkę do szkoły, ale tak, żeby jej nie zauważyło że ją ma, nawet o tym nie wiedziało, ale koniecznie zjadło?



EDITED
Analizując ostatnią wypowiedź stwierdzam, że pytanie zostało teraz zadane poprawnie.

Odpowiedź na nie jest proste - wystarczy przebudować Pana skrypt tak, aby nie zadawał zapytania do bazy po numerze ID, ale po nazwie, którą Pan podaje. Ewentualnie (co raczej polecam) jest utworzenie linku w stylu:
www.mojastrona.pl/video/76/samolot-sie-rozbil.html
I w htaccess odpowiednio obsłużyć te zmienne, ale w skrypcie korzystać jedynie z ID. Użytkownik będzie widział jaki jest tytuł strony już w linku, a i skrypt otrzyma wymaganą przez siebie informację, czyli numer ID.

Ten post edytował Quadina 14.12.2010, 14:16:07
Go to the top of the page
+Quote Post
szmerak
post
Post #7





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Ja się tylko pytałem czy jest to możliwe ponieważ w internecie nie znalazłem żadnych informacji na ten temat.
Cytat
Czy jest to możliwe nie podając zmiennej zawierającej nazwe "samolot sie rozbil" w GET?
tylko osobno w kodzie PHP?

Więc jest to nie możliwe. Tyle w sumie chciałem usłyszeć a nie nazwy typu "abstrakcja urojona"
Go to the top of the page
+Quote Post
Quadina
post
Post #8





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


Jeżeli uraziłem, to oficjalnie i szczerze przepraszam. Moje określenie nie jest wcale na złość, tylko wyrażam w nim moją dezaprobatę do braku teorii lub/i logiki.
Go to the top of the page
+Quote Post
szmerak
post
Post #9





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


@Offtop Tym razem ja nie zauważyłem "EDITED" z odpowiedzią (IMG:style_emoticons/default/dry.gif) (IMG:style_emoticons/default/smile.gif) . A co do urażania nikt nikogo nie urażał (IMG:style_emoticons/default/tongue.gif)
----------------------------------------------------------
Nie za bardzo rozumiem.
Z wypowiedzi zrozumiałem tak że zapytanie ma być wykonane przez nazwe filmiku.
hmmm...
Czyli muszę stworzyć 2 zapytania do bazy.
1.(pierwsze zapytanie) Za pomocą ID wyciągnąć nazwę
2.(drugie zapytanie) Za pomocą nazwy wyciągnąć resztę danych.
Hmm... wydaje mi się że źle zrozumiałem bo jest to dla mnie trochę bez sensu.
I nie pomaga mi to w stworzeniu przyjaznego linku.
Jak napisałem cały skrypt opiera się na ID tak więc przerabianie skryptu który wyciąga wyniki na podstawie nazwy jest równoznaczne z pisaniem od nowa całego skryptu.

A pytanie główne w tym temacie jest czy muszę podać przez GET nazwę aby ją dodać do linku.

P.S dziękuje za kulturę z "Pan" (IMG:style_emoticons/default/smile.gif)
Ale myślę że łatwiej będzie po prostu Szmerak (IMG:style_emoticons/default/smile.gif)

Ten post edytował szmerak 14.12.2010, 14:34:04
Go to the top of the page
+Quote Post
Quadina
post
Post #10





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


Nie musisz wykonywać dwóch zapytań. Jeżeli masz link wygenerowany np.:
www.mojastrona.pl/video/76/samolot-sie-rozbil.html
to w htaccess przepisujesz sobie, żeby uzyskać $id=76 i $nazwa='samolot-sie-rozbil'. Jeżeli masz $id i twój system jest już do tego przygotowany to możesz w ogóle zaniedbać zmienną $nazwa i jej nie wykorzystywać przy zapytaniu. W ten sposób użytkownik będzie widzieć ładny i mu przyjazny link z tytułem danego filmiku, a ty (skrypt) będziesz widział swoje ID po którym będziesz szukać w bazie.

EDITED:
Dodanie nazwy do linku nie jest konieczne do Twojego skryptu na tyle ile zdołałem się dowiedzieć cokolwiek o nim, ponieważ wykorzystujesz tylko numer ID. Powtórzę się zatem, nazwa będzie tylko ładnie wyglądać dla użytkownika korzystającego z serwisu.

Ten post edytował Quadina 14.12.2010, 14:37:17
Go to the top of the page
+Quote Post
szmerak
post
Post #11





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Dobra dzięki mniej więcej rozumiem (IMG:style_emoticons/default/tongue.gif) Muszę zawrzeć te ID w linku. W przeciwnym wypadku muszę zmienić cały skrypt.
Teraz jak zapisać w htaccess aby pobierał również dane z tablicy $row['nazwa']; z pliku (cośtam.php) i dopisywał je do linku?
gdzie $row['nazwa'] - Nazwa obecnie oglądanego video. Mam na myśli (video)/$1/(i jak pobrać teraz dane z $row['nazwa'] a raczej ze zmiennej $nazwa która będzie już implodowana.
Nie znam się za dobrze na htaccess ale na pewno w niedługim czasie pogłębię swoją wiedzę na ten temat.

Ten post edytował szmerak 14.12.2010, 15:00:10
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Łapaj linka: http://eriz.pcinside.pl/weblog/mod_rewrite...wiazac-208.html

A co do Twojego tematu - poszukaj o czymś takim, co się nazywa slug.
Go to the top of the page
+Quote Post
szmerak
post
Post #13





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

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


Dzięki ci wielki to jest właśnie odpowiedź na moje pytanie.
Dzięki za link napewno mi się przyda.

Jedna krótka odpowiedź i problem rozwiązany. O to cały czas mi chodziło.

Ten post edytował szmerak 14.12.2010, 15:30:09
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: 22.12.2025 - 22:05