Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PgSQL] Zapytanie z WHERE ze zmianą danych
linx
post
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 3
Dołączył: 25.06.2007

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


Witam,

jestem właśnie w trakcie przerabiania swojej strony. Na chwilę obecną strona jest na kilkunastu plikach chcę ją usprawnić i zawartość treści dodać do bazy danych.
A więc:
mam stworzoną tabele z kolumnami:
id|nazwa|menu_up|kolejnosc ->prykładoway wpis -> 1|Moje usługi|0|1
Chciał bym (o ile się da) kiedy w zmiennej (odpowiednio ustawiony plik .htaccess) $_GET jest http://localhost/moje_uslugi (tj. http://localhost/index.php?id=moje_uslugi),
aby po tym wyszukać w bazie wiersz z Moje usługi.

Wiem że zmiana z "Moje usługi" na "moje_uslugi" z poziomu php załatwiam funkcją str_replace.
Ale jak wyszukać wpis który potrzebuje, czy można jakoś w locie z poziomu bazy zastosować fukncję str_replace.

Moja funkcja ze str_replace:
-zmiana polskich znaków na znaki bez ogonków
-zmiana dużych znaków na małe
-usunięcie [spacji], myślników i całej reszty znaków na podkreślnik [ _ ]

obrazowo

SELECT * FROM menu WHERE nazwa = 'moje_uslugi' -> wynik -> 1|Moje usługi|0|1


Jakiś pomysł? - Pozd.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
tehaha
post
Post #2





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

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


zamiast str_replace, użyj urlencode() i urldecode()
Go to the top of the page
+Quote Post
linx
post
Post #3





Grupa: Zarejestrowani
Postów: 100
Pomógł: 3
Dołączył: 25.06.2007

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


Też nad tym myślałem ale chciał bym uniknąć % (procentów) i nieczytelnych znaczników w linkach strony.
A więc wracam do pytania z wyżej.

pozdr.
Go to the top of the page
+Quote Post
zegarek84
post
Post #4





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(linx @ 25.05.2010, 16:13:23 ) *
A więc:
mam stworzoną tabele z kolumnami:
id|nazwa|menu_up|kolejnosc ->prykładoway wpis -> 1|Moje usługi|0|1
Chciał bym (o ile się da) kiedy w zmiennej (odpowiednio ustawiony plik .htaccess) $_GET jest http://localhost/moje_uslugi (tj. http://localhost/index.php?id=moje_uslugi),
aby po tym wyszukać w bazie wiersz z Moje usługi.

Wiem że zmiana z "Moje usługi" na "moje_uslugi" z poziomu php załatwiam funkcją str_replace.
Ale jak wyszukać wpis który potrzebuje, czy można jakoś w locie z poziomu bazy zastosować fukncję str_replace.

nie tędy droga... linki buduj po id tym bardziej, że korzystasz z htaccess... czyli w htaccess zrób odpowiednie przekierowanie po tym co rozpoznasz w adresie i dla przykładu liczą się tylko cyfry po pierwszym do drugiego slasha...
przykłady na moje usługi:
http://localhost/1/moje_uslugi => przepisane na => http://localhost/index.php?id=1
http://localhost/1/twoje_uslugi.html => przepisane na => http://localhost/index.php?id=1
http://localhost/1/pic_na_wode_fotomontarz_dalej_uslugi.html => przepisane na => http://localhost/index.php?id=1

linki tylko będziesz budował wg. określonych zasad i żeby lepiej wyglądały oraz były bardziej jak to mawiają seo... ale znaczenie będzie miała dla przykłądu odpowiednio przepisana cyfra w htaccess do prawidłowego get'a czy cokolwiek...

no a w kodzie np wyświetlisz taką nazwę jaką masz w bazie plus odpowiednio przygotowany link:
<a href="http://localhost/1/moje_uslugi">Moje usługi</a>

no i zapytanie sql juz masz banalne:
SELECT * FROM menu WHERE id = :id_z_geta -> wynik -> 1|Moje usługi|0|1
:id_z_geta - jest to wartość... zapisałem tak z przyzwyczajenia i zachęcam do korzystania z PDO

ps. jeśli byś nie kozystał z htaccess to to id zawieraj w parametrrze get...

Ten post edytował zegarek84 25.05.2010, 21:07:24
Go to the top of the page
+Quote Post
quality
post
Post #5





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 13.02.2006
Skąd: Warszawa

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


Po pierwsze urlencode() i urldecode() w nowszych wersjach przegladarki nie robi procentow itp znaczkow (IMG:style_emoticons/default/smile.gif) .
Po drugie to poczytaj troche manuala jak operowac na stringach, pelno jest tego w internecie.

A po 3 i co wazniejsze to ja bym zrobil wlasnie na urlencode() + id - tak jak pisal poprzednik.

Wtedy masz adres: "http://localhost/2,tekst" , pobierasz dane, robisz explode na przecinek i masz juz id. Nie obciaza bazy i jest duzo wygodniejsze.

Pozdrawiam
Go to the top of the page
+Quote Post
linx
post
Post #6





Grupa: Zarejestrowani
Postów: 100
Pomógł: 3
Dołączył: 25.06.2007

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


Tak, ale ja potrzebuje to nie tylko do linków. Dlatego szukam konkretnego rozwiązania a nie częściowego ominięcia problemu.
Wiec wracam do swojego pytania.

A wiec tak rozwiązanie mojego problemu jest proste.
Mianowicie zapytanie powinno wyglądać:

  1. SELECT * FROM tabela WHERE translate(lower(nazwa), 'ęóąśłżźćń- ', 'eoaslzzcn__') = 'szukany_wpis';


podziękowania dla 6nom

pozd.

Ten post edytował linx 26.05.2010, 14:19:55
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.12.2025 - 09:33