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
kilinho
post
Post #2





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

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


Skrypcik generujacy zapytanie do bazy:
  1. <?php
  2. $_GET[query]='Jan Kowalski';
  3.  $szukane_slowa = explode(" ", $_GET[query]);
  4.  
  5.  
  6.  $licz = count($szukane_slowa);
  7.  $query = "SELECT * FROM `uzytkownicy` where"; 
  8.  
  9.  for ($x=0; $x < $licz; $x++){
  10.  $imie[$x] = "`first_name` = '$szukane_slowa[$x]'";
  11.  $nazwisko[$x] = "`last_name` = '$szukane_slowa[$x]'";
  12.  }
  13.  
  14.  
  15.  for ($x=0; $x < $licz; $x++){
  16.  $query .= ' '.$imie[$x].' and '.$nazwisko[($licz-$x-1)].' '; 
  17.  if ($x >= 0 and $x < ($licz-1)){
  18.  $query .= "or";
  19.  }
  20.  }
  21.  
  22.  $znajdz = mysql_query($query);
  23.  while ($znajdz_row = mysql_fetch_array($znajdz)){
  24.  echo $znajdz_row[first_name].' '.$znajdz_row[last_name].'';
  25.  }
  26. ?>

Wygeneruje nam zapytanie po wpisaniu w wyszukiwarce np: Jan Kowalski


  1. <?php
  2. SELECT * FROM `uzytkownicy` where `first_name` = 'Jan' and `last_name` = 'Kowalski' or `first_name` = 'Kowalski' and `last_name` = 'Jan';
  3. ?>


Czy to ma sens?
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: 26.12.2025 - 18:35