![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 24.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam pytanie a propos zapytania do bazy danych, ewentualnie - jakiej funkcji użyć w PHP? W bazie danych mam tabelę daneskładającą się z id i nazwa. Rekord należące do tej tabeli to: id = 1; nazwa = Robert Żukowicz Mając kod:
Rezultatem jest link w postaci: http://localhost/Robert-Zukowicz a $_GET['nazwa'] = Robert-Zukowicz Zamianę w drugą stronę, czyli '-' na '[space]' jestem w stanie zrobić, wówczas mój $_GET['nazwa'] = Robert Zukowicz
Wynikiem tego zapytania będą wszystkie rekordy zawierające nazwę "Robert Zukowicz", czyli w moim przypadku nic. Jak zatem sprawić, aby zmienna $in miała pierwotną wartość? Pozdrawiam,Arek |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 275 Pomógł: 32 Dołączył: 21.03.2006 Skąd: Warszawa Ostrzeżenie: (20%) ![]() ![]() |
Kod $q = mysql_query("SELECT * FROM dane WHERE nazwa='$in[b]'[/b]"); Zabrakło Ci średnika.Tak czy siak, na Twoim miejscu skorzystałbym z PDO. W szybki sposób pozbędziesz się możliwości SQL injection, na co Twój kod jest podatny. PS Aha i rozumiem, że htaccessy masz ustawione na przyjazne linki? Bo Twoim sposobem, to na chwilą obecną wskazujesz do (zapewne) nieistniejącego katalogu. Ten post edytował konole 25.04.2011, 18:34:29 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 1 Dołączył: 12.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
koledze chodziło bardziej o to że zmienna GET zwraca mu imię i nazwisko bez polskich znaków czego rezultatem jest brak identycznego rekordu ( w tabeli ma "Robert Żukowicz" a zmienna zwraca "Robert Zukowicz" ), według mnie prostym wyjściem było by utworzenie dodatkowego pola w tabeli z nazwą bez pl znaków i po niej robić zapytanie
![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 275 Pomógł: 32 Dołączył: 21.03.2006 Skąd: Warszawa Ostrzeżenie: (20%) ![]() ![]() |
Ops, my bad.
W takim razie polecam ci tworzyć linki w postaci: {id}/{name}, np.: http://localhost/1/Robert-Zukowicz To jest chyba najlepsze rozwiązanie, user-friendly i pozbywasz się problemów związanych z polskimi znakami diakrytycznymi. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 1 Dołączył: 12.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
też dobry pomysł i może identyfikować bezpośrednio po ID
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 24.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Kod $q = mysql_query("SELECT * FROM dane WHERE nazwa='$in[b]'[/b]"); Zabrakło Ci średnika.Tak czy siak, na Twoim miejscu skorzystałbym z PDO. W szybki sposób pozbędziesz się możliwości SQL injection, na co Twój kod jest podatny. PS Aha i rozumiem, że htaccessy masz ustawione na przyjazne linki? Bo Twoim sposobem, to na chwilą obecną wskazujesz do (zapewne) nieistniejącego katalogu. Poniekąd się zgadza - brak cudzysłowu zamykającego ciąg (w tym wypadku zmienną), a nie średnika ![]() htaccess ma już wpisane odpowiednie reguły i wszystko śmiga jak należy, dlatego tego tematu tutaj nie poruszałem, bo uważam, że jest zbędny. Moim linkiem jest adres podany w pierwszym poście. koledze chodziło bardziej o to że zmienna GET zwraca mu imię i nazwisko bez polskich znaków czego rezultatem jest brak identycznego rekordu ( w tabeli ma "Robert Żukowicz" a zmienna zwraca "Robert Zukowicz" ), według mnie prostym wyjściem było by utworzenie dodatkowego pola w tabeli z nazwą bez pl znaków i po niej robić zapytanie ![]() Artur, nie obraź się, ale moim zdaniem to trochę skrajne rozwiązanie... ![]() Ops, my bad. W takim razie polecam ci tworzyć linki w postaci: {id}/{name}, np.: http://localhost/1/Robert-Zukowicz To jest chyba najlepsze rozwiązanie, user-friendly i pozbywasz się problemów związanych z polskimi znakami diakrytycznymi. Problem w tym, że nie chcę wprowadzać ID do linku. Chciałbym pobierać $_GET['nazwa'] po nazwie, o ile to możliwe, a wierzę, że w PHP możliwe ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 1 Dołączył: 12.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
no to według mnie pozostaje moja opcja, lub podmieniać pl znaki na np ż = 1z czy coś podobnego by później mieć jakąś możliwość na przywrócenie tych znaków, możesz jeszcze w bazie podawać nazwę bez pl znaków ale to nie najlepsze wyjście.
a takie pytanko dlaczego nie chciał byś w linku podawać ID ? zawsze można to zrobić w innym układzie np. /{id}-{nazwa} Ten post edytował artur219 25.04.2011, 20:23:53 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 24.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
a takie pytanko dlaczego nie chciał byś w linku podawać ID ? zawsze można to zrobić w innym układzie np. /{id}-{nazwa} Takie zrobiłem sobie założenie i chcę się tego trzymać. Zauważyłem np., że w wordpressie tagi działają na tej zasadzie, np. http://www.mojwordpressowyblog.pl/tag/Palac-Prezydencki/ (Pałac Prezydencki). Jakieś inne pomysły? |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 125 Pomógł: 2 Dołączył: 8.10.2010 Skąd: Poniemieckie miasto przesiedleńców Ostrzeżenie: (0%) ![]() ![]() |
nie zapominaj tylko, jeśli oczywiście założeniem są imiona i nazwiska, że gdy pominiesz polskie znaki diakrytyczne, link do pana http://localhost/1/Robert-Zukowicz będzie właściwy zarówno dla osoby nazywającej się Żukowicz i Zukowicz, nie jesteś w stanie zapobiec takim zbiegom okoliczności, a ID masz unikalne
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 1 Dołączył: 12.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
nie zapominaj tylko, jeśli oczywiście założeniem są imiona i nazwiska, że gdy pominiesz polskie znaki diakrytyczne, link do pana http://localhost/1/Robert-Zukowicz będzie właściwy zarówno dla osoby nazywającej się Żukowicz i Zukowicz, nie jesteś w stanie zapobiec takim zbiegom okoliczności, a ID masz unikalne Racja, arek33 niestety muszę Cie zasmucić bo wp ma to zrobione tak że mają dwa pola jedno na nazwę pełną np "Jan Żukowicz" a druga oczyszczona z niedozwolonych znaków "jan-zukowicz" przykład z bazy danych jednej strony pole nr. 1 - WOŚP Kraków 2011 pole nr. 2 - wosp-krakow-2011 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 14:23 |