Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rewrite, get - a wyciąganie danych z bazy
Forum PHP.pl > Forum > PHP
WoGuziczek
Witam!

Przy pewnym skrypcie zrobiłem sobie przyjazne linki przy pomocy mod_rewrite.
Tzn jak to wygląda...

Z bazy wyciągnąłem imię i nazwisko.
Czyli np. "Władek Brzęczyszczykiewicz".

Przy pomocy funkcji str_replace zamieniłem wszystkie znaki specjalne i znaki polskie na normalne
i ustawiłem z nich linki.

Czyli mam link strona.pl/nazwa-wladek-brzeczyszczykiewicz.html

Tylko teraz mam pytanie.
Co mam zrobić, żeby skrypt po wejściu na ten adres - wykrył z niego, że "wladek-brzeczyszczykiewicz" to Władek Brzęczyszczykiewicz i wykonał do niego odpowiednie zapytanie.

DODAM: że baza danych nie jest oparta na ID czyli zrobienie wladek-brzeczyszczykiewicz-id152.html nie da rady.

Co mogę zrobić?
Pozdrawiam
TrevorGryffits
Dodawaj do bazy tekst bez pliterek albo dodaj id.
WoGuziczek
Nie ma takiej opcji.

Kombinowałem, żeby zrobić pętle.
Każdą wartość z bazy danych pobrać i przerobić na czysty format.

Jeżeli "wartość czysty format" == "wartosc get z przyjaznego linku"
to wtedy wykonuje zapytnie do "wartosc oryginalny format z bazy".

Ma ktoś pomysł jak to ugryźć?
TrevorGryffits
Możesz zrobić to (teoretycznie) w taki sposób. Pobierasz wszystkie dane z bazy. A potem w pętli każdą wartość w czystym formacie konwertujesz do formatu bez PL liter. Tylko to jest zajeżdżanie serwera. Można to różne sposoby usprawniać (szukasz w bazie rekordów tylko o odpowiedniej, takiej samej długości; używasz wbudowanych w bazę funkcji dot. podobieństwa stringów; etc.), ale to de facto dlaje będzie nieoptymalne.
maly_swd
Mi cos takiego przychodzi do glowy:) malo optymalne ale dziala;)


$nazwa= to ten ciag z geta..

  1. $nazwa=str_replace(
  2. array(
  3. 'a' ,'c' ,'e' ,'l' ,'n' ,'o' ,'s' ,'z', //polskie
  4. '-' ,//inne
  5.  
  6. ),
  7. array(
  8. '(a|ą)' ,'(c|ć)' ,'(e|ę)' ,'(l|ł)' ,'(n|ń)' ,'(o|ó)' ,'(s|ś)' ,'(z|ż|ź)', //polskie
  9. '(-| |, |,)',//inne
  10. ), strtolower($nazwa));
  11.  
  12.  
  13.  
  14. $zaczep=sql("SELECT * FROM TABELKA WHERE LOWER(imie_nazwisko) REGEXP '^{$nazwa}$'");
Apocalyptiq
Dorób w tej tabeli kolumnę z nazwiskami i imionami bez tych polskich znaków, tj. przerobione na takie, jakie będą w adresie, i wtedy szukaj dzięki nim odpowiedniego rekordu.
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.