Avatar billede heyn Nybegynder
04. oktober 2005 - 12:58 Der er 5 kommentarer og
1 løsning

Søgning på tværs af strenge.

I min tabel user har jeg kolonnerne 'fornavn' og 'efternavn'.
P.t. kan jeg f.eks. hente:
'Helga Heyn' og 'Jens Heyn' ved at søge på 'eyn' i efternavn og tilsvarende ved søgning i kolonnen fornavn.
Jeg ønsker det således at hvis jeg søger på 'lga he' så får jeg 'Helga Heyn' og 'Olga Heinesen'. Altså at man søger på en streng bestående af fornavnMELLEMRUMefternavn.
Kan nogen hjælpe mig med det?

På forhånd tak Christian.
Avatar billede arne_v Ekspert
04. oktober 2005 - 13:25 #1
split din søge streng op i en fornavnsdel og en efternavnsdel og lav:

SELECT ... FROM ... WHERE fronavn LIKE '%$fornavnsdel%' AND efternavn LIKE  '%$efternavnsdel%'
Avatar billede mtrolle Nybegynder
04. oktober 2005 - 14:18 #2
I PHP kan du lave splitningen med explode()
Fx:
<?
$search = explode(' ', $_REQUEST['search']);
$fornavn = $search[0];
$efternavn = $search[1];

$result = mysql_query("SELECT ... FROM ... WHERE `fornavn` LIKE '%" . $fornavn . "%' AND `efternavn` LIKE '%" . $efternavn . "%'");
while($row = mysql_fetch_array($result)) {
  osv.
}
?>
Avatar billede heyn Nybegynder
04. oktober 2005 - 14:29 #3
Hej arne og mtrolle.
Begge svar duer delvist
Problemet er at fornavn og efternavn kan indføres i ét felt i formularen. Denne med explode vil give problemer hvis en person hedder 'Jakob G. L. Nielsen' og jeg søger på 'G. L. Nielsen'.
Avatar billede arne_v Ekspert
04. oktober 2005 - 14:49 #4
hvad med noget a la:

... WHERE CONCAT(fornavn,efternavn) LIKE CONCAT('%',REPLACE(søgeord,' ','%'),'%')
Avatar billede heyn Nybegynder
04. oktober 2005 - 15:29 #5
Tak for hjælpen Arne. CONCAT gav mig tråden. Resultatet blev
SELECT * FROM user WHERE CONCAT(fornavn,' ',efternavn) LIKE '%".$name."%';
Har du et svar?

Hilsen CONCAT(fornavn,' ',efternavn) LIKE'an he'
Avatar billede arne_v Ekspert
04. oktober 2005 - 15:32 #6
gerne
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester