Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prosta wyszukiwarka a jednak problem, Problem z wyszukiwanie np: imion i nazwisk
kilinho
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 8.05.2008

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


Witam.

Mam sobie wyszukiwarke osob ktore zarejestrowaly sie na mojej stronie.
Tabela danych tych osob:
ID | Imie | Nazwisko | Miejscowsc | itd

I teraz problem polega na tym ze wpisujac w formularzu znajdz np. Jan Kowalski, to skrypt pyta sie w do tabelki:
select * from tabelka where nazwisko like '%Jan Kowalski%' and imie like '%Jan Kowalski%'
to zapytanie da 0 wynikow.
Jan Kowalski jest wpisywane w jednym polu.
W jaki sposob zadac pytanie badz przerobic skrypt php aby dojsc do takiej formy:
select * from tabelka where nazwisko like '%Kowalski%' and imie like '%Jan%'?
Czy tworzac indeksy w tabelce dla Imie i Nazwisko badz explod`ujac Jana Kowalskiego na dwa oddzielne wyrazy (tworzac z niego tablice i najpierw przeszukac Jan a potem Kowalski). Czy te dwie metody dadza rozwiazanie? (tablica moze byc malo wydajna przy wiekrzej ilosc slow?)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Jak nie wydajne? Maksymalnie ktoś wpisze 3 wyrazy...

Poprawiony:
  1. <?php
  2. $szuakne_slowa = 'lol bim tata';
  3. $szukane_slowa = explode(" ", $szuakne_slowa);
  4. foreach($szukane_slowa AS $i => $value)
  5. {
  6. $tmp = (!isset($szukane_slowa[$i+1])?$szukane_slowa[0]:$szukane_slowa[$i+1]);
  7.  $wheres[] = ' (`last_name`=''.$value.'' AND `first_name`=''.$tmp.'') ';
  8.  $wheres[] = ' (`last_name`=''.$tmp.'' AND `first_name`=''.$value.'') ';
  9. }
  10.  
  11. $sql = 'SELECT * FROM `uzytkownicy` where '.implode('OR', $wheres);
  12. echo $sql;
  13. ?>

Działa ładnie i jest wydajne moim zdaniem.
Go to the top of the page
+Quote Post

Posty w temacie


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: 25.12.2025 - 15:10