Tietokantahaku select+array PHP:llä

Moro!
Toimiiko oheinen haku php:llä?

$hakusana = array(sana1,sana2,sana3,..jne);

$query = SELECT * FROM tietokanta WHERE "teksti" LIKE '%$hakusana%'

Kuinka saan niin että haku kävisi läpi arrayssa olevat kaikki vaihtoehdot?

mietin asiaa teoriassa mutten pääse testaaman käytännössä.
Arrayssä on yli 50 sanaa joten tulee aikamoinen lause jos joutuu tekemään OR:lla näin
SELECT * FROM tietokanta WHERE "teksti" LIKE '%$hakusana1%' or WHERE "teksti" LIKE '%$hakusana2%' jne
3663
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

$hakusana = array(sana1,sana2,sana3,..jne);

$query = "SELECT * FROM tietokanta WHERE 'teksti' LIKE '%" . $hakusana[$i] . "%'" ";

for($i=1 ; $i < count($hakusana); $i++ )
{
$query .= "OR 'teksti' LIKE '%" . $hakusana[$i] . "%'"
}

Tuon pitäisi muodostaa valmis lauseke jonka syntaksi on suurinpiirtein oikein. Vai siis haittaako jotain jos lausekkeesta tulee pitkä?

Äänestä
  • kiitos, tuota voisi testata huomenna kunhan pääsen koneen ääreen. Eihän se periaatteessa haittaa vaikka lauseet on pitkiä mutta tuosta perus-OR-versiosta tulisi varmaan 3 metriä ja täytyy pikkuhiljaa opetella käyttämään vähän hienompaa koodia. tärkeintä tietenkin että toimii, olipa koodi mitä sotkua hyvänsä :)

    Äänestä

  • Itse asiaasa en tiennytkään että tuohon query-lauseeseen voi tehdä looppeja ym. juttuja sisään. Nyt toimii hakukone monisanahaulla yms.

    Äänestä

Kommentoi aloitusta


php-hepppu kirjoitti:

Moro!
Toimiiko oheinen haku php:llä?

$hakusana = array(sana1,sana2,sana3,..jne);

$query = SELECT * FROM tietokanta WHERE "teksti" LIKE '%$hakusana%'

Kuinka saan niin että haku kävisi läpi arrayssa olevat kaikki vaihtoehdot?

mietin asiaa teoriassa mutten pääse testaaman käytännössä.
Arrayssä on yli 50 sanaa joten tulee aikamoinen lause jos joutuu tekemään OR:lla näin
SELECT * FROM tietokanta WHERE "teksti" LIKE '%$hakusana1%' or WHERE "teksti" LIKE '%$hakusana2%' jne

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu