Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PgSQL] Zapytanie z WHERE ze zmianą danych
Forum PHP.pl > Forum > Bazy danych
linx
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.
tehaha
zamiast str_replace, użyj urlencode() i urldecode()
linx
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.
zegarek84
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...
quality
Po pierwsze urlencode() i urldecode() w nowszych wersjach przegladarki nie robi procentow itp znaczkow 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
linx
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.