Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukiwarka (MYSQL) + polskie znaki :/
seba22
post 1.10.2008, 08:55:24
Post #1





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

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


Witam,

Jestem na etapie budowania wyszukiwarki z bazy MYSQL, odnośnie nazwy którą wprowadzi użytkownik.

No i kurka wodna, zagrepsowałem się, bo daje w selecta zmienną pobraną, oczywiście wyczyszczoną z wszystkiego co niebezpieczne, no i jest problem.

User może wpisać jakiś wyraz z polskim znakiem żźćąę a np osoba która dodawała wpis nie dodałą polskiego znaku i zastapila go zcaea winksmiley.jpg)

No i teraz w takim wypadku wyszukiwarka nie zadziałą....

Nie ma jakiegoś pomysłu, wiem że można by usunąć polskie znaki w ogóle przy dodawaniu do bazy SQL (przez pierwszego usera, ale wyjdzie to dosyć nie poważnie).

Więc co tu zrobić żeby jakoś nie wiem coś tak pokombinować żeby wyszukało jak facet wpisze żmija to zwrócilo żmija oraz zmija ( bez ż i z ż ).

Wiecie na wypadek gdyby dodawający użytkownik nie napisał z jakiegoś powodu poprawnie... sami wiecie że to się zdaża... jeden ma linuxa, jeden ma unixa, inny ma windows, jeden pracuje na tekstowej przegladarce, inny w konsoli, inny na telefonie... trzeba pomyśleć o nich... i nie odcinać im dostępu do danych...


Jeżeli ktoś ma jakiś pomysł to walcie, jestem otwarty, siedzę i po prostu zróbmy to dzisiaj winksmiley.jpg)

Do it, today winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
blooregard
post 1.10.2008, 09:26:46
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Problem skomplikowany bardzo. Bo np. jak odróżnisz, co użytkownik miał na mysli wpisując w wyszukiwarkę "skora" ?

Szuka BMW z tapicerką w "skórze" czy osoby, która jest "skora" do współpracy ? smile.gif

Chyba że jesteś w stanie napisać wyszukiwarkę czytającą w myślach. smile.gif

Jak dla mnie - nie do obejścia. Musisz liczyc na rozsądek osób wprowadzających dane (że nie zapomną o ogonkach i nie będą ci dodawać tekstów w stylu: zolta zaba zarla zur smile.gif  )


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
dr_NO
post 2.10.2008, 12:41:08
Post #3





Grupa: Zarejestrowani
Postów: 197
Pomógł: 15
Dołączył: 10.09.2006
Skąd: Siemianowice Śląskie / Katowice

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


Hmm,
Można zrobić trochę nieelegancko, i/lub generalnie na około, nie wykluczając błędów, ale ...
Utworzyć w bazie dodatkowe pole (nazwijmy to "bez_pl" czy jakoś tak) i teraz podczas dodawania nowej treści niech
skrypt doda dwa wpisy do bazy, jeden normalny, i jeden "wypatroszony" z polskich znaków, pomocne okaże się str_replace i tablice.
Po przycisku submit, skrypt sprawdza czy w szukanej frazie są polskie ogonki, jeżeli są to najpierw szukaj w polu "z ogonkami", jeżeli zaś nie, to wypatrosz ponownie tym razem szukaną treść, i poszukaj w polu "bez_pl" .


--------------------
woop woop.
Go to the top of the page
+Quote Post
FANGTA
post 2.10.2008, 15:13:55
Post #4





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 28.09.2008

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


Ja mam pewien pomysł może być dla ciebie dobry, albo i nie ale to nie ważne + musiałbyś poszukać do tego odpowiedniej metody zmianiającej np. żmija na zmija czyli zamienianie np. takich znaków: (ż, ź, ć) na takie (z,z,c), odrazu mówie że nie wiem czy to jest możliwe!!, to tylko był przykład powinien to załatwić prosty skrypcik odtwarzający treść w zmiennej do której jest przypisane ten wyraz i np. zwykłę czyli to co naprawde wpisał np. "żmija" będziesz miał w $_POST[wyszukiwarka]; a to ze zmienionymi znakami to w innej zmiennej która by sie równała przepuszczonej zmiennej przez odpowiedni skrypt: np.

Kod
$zmienna_do_przepuszczenia = $_POST[wyszukiwarka];
  
  -------tutaj odpowiednie sprawdzenia if albo cośw tym rodzaju sprawdzające czy w zmiennej znajduje sie taka litera i zamienianie np. "ż" na "z"----------
  
  //Tutaj zapytania sql:
  
      //Normalne tzn. z np. ż,ź,ć itd.
  $query = mysql_query("select * from `tutaj wpisz nazwe tabeli` where `tutaj nazwe pola z tabeli`='$_POST[wyszukiwarka]' ORDER BY `tutaj wpisz wg. jakiego pola chcesz sortować` i dodaj ASC LUB DESC(malejące lub rosnące)");
  
  while($rekord = mysql_fetch_array($query)){
  $wyniki .= ' ' // w tej zmiennej pobierz odpowiednio dane itd. wg. swoich upodobań i pól w tabeli
  }
  
      //Dodatkowe tzn. z z,z,c zamiast np. ż,ź,ć
  $query2 = mysql_query("select * from `tutaj wpisz nazwe tabeli` where `tutaj nazwe pola z tabeli`='$zmienna_do_przepuszczenia' ORDER BY `tutaj wpisz wg. jakiego pola chcesz sortować` i dodaj ASC LUB DESC(malejące lub rosnące)");
  
   while($rekord2 = mysql_fetch_array($query2)){
   $wyniki2 .= ' ' // w tej zmiennej pobierz odpowiednio dane itd. wg. swoich upodobań i pól w tabeli
   }
  
  echo $wyniki; //wyświetlanie normalnych wyszukiwań z np. ż,ź,ć
  echo $wyniki2; //wyświetlanie dodatkowych z np. z,z,z zamiast ż,ź,ć


PS. odrazu mówie że z zabezpieczeniami jeszcze sie za bardzo nie bawiłem więc jeśli chodzi o to to ty sobie sam musisz zabezpieczyć ja tylk odaje przykład mojego pomysłu;)

ok znalazłem coś odpowiedniego dla ciebie jeśli chodzi o taką zamiane poczytaj sobie temat z tego linka:

http://www.forum.optymalizacja.com/lofiver...php/t41153.html

a jak nie chce ci sie wchodzić to tutaj masz kod:

Kod
<?php
   $tekst = 'Zażółć gęślą jaźń';
   $wynik = strtr($tekst, 'ĘÓĄŚŁŻŹĆŃęóąśłżźćń', 'EOASLZZCNeoaslzzcn');
   echo($wynik);
?>


Ten post edytował FANGTA 2.10.2008, 15:16:41
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:25