PHP Centeri avaleht Skriptikogu Küsimuste-vastuste leht Teadete vaatamine ja saatmine Foorum - koht küsimiseks Otsingumootor Siit saad infot meie kohta

Kasutajanimi:  
  Parool: 
  Registreeri!   Unustasid salasõna?

Foorumid Programmeerimine PHP & MySQL php search'i kohta küsimus
Autor Abi Postitus Abi

cuhere

Postitusi: 7
Tase: 1
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
php search'i kohta küsimus

Oletame et mul on mysql'i tabel, milles 3 veergu: pealkiri, lühikokkuvõte, artikkel

A) Kui otsimiskasti toksida nt. 3 sõna, otsitakse kõigepealt neid 3 sõna koos, kui üht tervikut. Otsitakse kõigepealt pealkirja veerust, siis lühikokkuvõttest ja siis artiklist. Kui juhuslikult leidub ühest neist veerust teksti seest täpselt selline sõnade ühend on OK. Kui ei leidu, siis...

B) ...jagatakse see tervik kolmeks eraldi sõnaks. Võetakse esimene sõna, kammitakse läbi kõik tabeli read ja ridade kolm veergu. Vaadatakse kas on kusagil veerus seda esimest sõna kasutatud. Nüüd võetakse teine sõna, kammitakse läbi AINULT NEED read mysqli tabelis, kus juba esimene sõna leidus. Ning kolmanda sõna puhul käiakse läbi jällegi AINULT NEED read, kus esimesed kaks sõna juba eksisteerisid.

Punkt A pole probleem. Küsimus on aga selles, et kuidas punkti B realiseerida. Ja realiseerida teda nii, et otsitakse mitte 3 sõna, vaid X arv sõnu??

algus asjal ehk peaks midagi sellist olema:

$sonad = explode(" ", $search);
for ($i=0;$i<count($sonad);$i++)
{
$s = "%".$sonad[$i]."%";

...kuis edasi? et oleks täidetud punktis B toodud
}


oskab keegi aidata?

thnx

08.07.2003 12:25:13 Vajutades siia näed kasutaja cuhere profiili

muidumeez
Ignorantia non est
argumentum


Postitusi: 3864
Tase: Administraator
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: php search'i kohta küsimus

PHP kood:

$case_sens "1";
$valjad array("pealkiri","kokkuvote","artikkel");
$sonad explode(" "$search); 
unset(
$s);
for (
$i=0;$i<count($sonad);$i++)
{
    foreach (
$valjad as $key => $value
    { 
        
$s = ($s?" or ":"")." $value like '%".$sonad[$i]."%'";
    }
}

$s "select ".($case_sens?" binary ":"")."* from $tabel where $s";
$p2ring mysql_query($s);

# jne jne



No midagi taolist ehk. Ega ma kontrollind, aga idee peaks vist selge olema ...

Seda postitust on muudetud 3 korda (viimati muudeti 2003-07-08 14:25:40 muidumeez poolt)

___________________________________________________
An Opinion Is Like An Asshole -- Everybody Has One

08.07.2003 13:08:56 Vajutades siia näed kasutaja muidumeez profiili

tobre
Asjamees


Postitusi: 1393
Tase: 9
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: php search'i kohta küsimus

Nüüd üks loll küsimus, aga mida see % sääl tähendab

___________________________________________________
Tõnis Tobre · MSN  · E-Post

08.07.2003 13:21:47 Vajutades siia näed kasutaja tobre profiili

vidin
parajalt paks ja
pontsakas


Postitusi: 356
Tase: 6
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: php search'i kohta küsimus

ei ole eriti teadja, kuid vist 'ja muud jama', et siis ...
otsitav sõna oleks näiteks maa, siis leitakse ka maamaja, maamaks, maamees jne.

___________________________________________________
Kui kuidagi ei saa,
siis kuidagi ikka saab

08.07.2003 13:27:30 Vajutades siia näed kasutaja vidin profiili

muidumeez
Ignorantia non est
argumentum


Postitusi: 3864
Tase: Administraator
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: php search'i kohta küsimus

Küsimus on suhtkoht loll jah :p . On olemas selline asi nagu "wildcard". Opsüsteemides (nii Win/Dos/Unix) kasutatakse näiteks tärni (*). SQL keeles on olemas otsutingimus nagu LIKE. Ja LIKE defineerimisel saab lisada ka wildcard'i, SQL puhul siis %

Näited
VEERG LIKE '%muidumeez%'  - kõik väärtused, kus veerus VEERG on sõna muidumeez
VEERG LIKE 'muidumeez%' - kõik väärtused, kus veerg VEERG algab sõnaga muidumeez
VEERG LIKE '%muidumeez' - kõik väärtused, kus veerg VEERG lõppeb sõnaga muidumeez

Variante on veel, aga selleks uuri juba manuaali.


___________________________________________________
An Opinion Is Like An Asshole -- Everybody Has One

08.07.2003 13:38:07 Vajutades siia näed kasutaja muidumeez profiili

tobre
Asjamees


Postitusi: 1393
Tase: 9
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: php search'i kohta küsimus

vot ei olnud selle asjaga siin sqlis kokku puutunud. Winil, dosil, unixil ja teadsin tärni, aga % ei teadnud sql-is. Aga mis on siis wini küsimärgi (?) vastand sql-is?

___________________________________________________
Tõnis Tobre · MSN  · E-Post

08.07.2003 13:48:02 Vajutades siia näed kasutaja tobre profiili

muidumeez
Ignorantia non est
argumentum


Postitusi: 3864
Tase: Administraator
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: php search'i kohta küsimus

Tsiteeritud tekst:
vot ei olnud selle asjaga siin sqlis kokku puutunud. Winil, dosil, unixil ja teadsin tärni, aga % ei teadnud sql-is. Aga mis on siis wini küsimärgi (?) vastand sql-is?

Selleks on alakriips _

Siiski paluks alandlikult pöörata tähelepanu tsitaadile:
Tsiteeritud tekst:
Variante on veel, aga selleks uuri juba manuaali.


___________________________________________________
An Opinion Is Like An Asshole -- Everybody Has One

08.07.2003 14:23:42 Vajutades siia näed kasutaja muidumeez profiili

cuhere

Postitusi: 7
Tase: 1
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: php search'i kohta küsimus

Tsiteeritud tekst:
PHP kood:

$case_sens "1";
$valjad array("pealkiri","kokkuvote","artikkel");
$sonad explode(" "$search); 
unset(
$s);
for (
$i=0;$i<count($sonad);$i++)
{
    foreach (
$valjad as $key => $value
    { 
        
$s = ($s?" or ":"")." $value like '%".$sonad[$i]."%'";
    }
}

$s "select ".($case_sens?" binary ":"")."* from $tabel where $s";
$p2ring mysql_query($s);

# jne jne



No midagi taolist ehk. Ega ma kontrollind, aga idee peaks vist selge olema ...



toppisin selle scripti enda scripti sisse, vahetasin ära tabeli nime ja lisasin lõppu
$numrows=mysql_num_rows($p2ring);
echo "$numrows";

panin otsima kaks sõna, selle peale öeldi:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in index.php on line 1626

08.07.2003 15:35:55 Vajutades siia näed kasutaja cuhere profiili

cuhere

Postitusi: 7
Tase: 1
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: php search'i kohta küsimus

Tsiteeritud tekst:
PHP kood:

$case_sens "1";
$valjad array("pealkiri","kokkuvote","artikkel");
$sonad explode(" "$search); 
unset(
$s);
for (
$i=0;$i<count($sonad);$i++)
{
    foreach (
$valjad as $key => $value
    { 
        
$s = ($s?" or ":"")." $value like '%".$sonad[$i]."%'";
    }
}

$s "select ".($case_sens?" binary ":"")."* from $tabel where $s";
$p2ring mysql_query($s);

# jne jne



No midagi taolist ehk. Ega ma kontrollind, aga idee peaks vist selge olema ...



mis vahet on  'foreach ($valjad as $key => $value)'  ja 'foreach ($valjad as $value)'
ning mis on ($s?" or ":""). ja  ".($case_sens?" binary ":"")." ülesanne?

08.07.2003 15:44:08 Vajutades siia näed kasutaja cuhere profiili

muidumeez
Ignorantia non est
argumentum


Postitusi: 3864
Tase: Administraator
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: php search'i kohta küsimus

Tsiteeritud tekst:
($s?" or ":"")
See kontrollib, kas muutujal $s on väärtus või ei ole ja kui on, siis lisab päringusse vahele ka OR-i.
Tsiteeritud tekst:
".($case_sens?" binary ":"")."
Kui sind huvitab ka tähtede suuruse kontroll, siis see võimaldab seda teha. Pannes muutuja $case_sens väärtseks 0, siis ignoreeritakse tähtede suurust, pannes näiteks 1, siis kontrollitakse ka tähtede suurust.

Edaspidi loen antud teema enda jaoks ammendatuks. Ülejäänud asja võiks lugupeetud kasutaja juba manuaalist vaadata, või kui keegi viitsib, võib elementaarasju edasi seletada. Mina ei viitsi enam.

___________________________________________________
An Opinion Is Like An Asshole -- Everybody Has One

08.07.2003 15:55:27 Vajutades siia näed kasutaja muidumeez profiili

cuhere

Postitusi: 7
Tase: 1
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: php search'i kohta küsimus

no selge...

08.07.2003 15:58:04 Vajutades siia näed kasutaja cuhere profiili
Kokku: 25950 registreerunud kasutajat, 9711 teemat, 54603 postitust.
Täna on esmaspäev, 27. jaanuar 2020. Kell on 22:55.

    Vaata selle lehe printerisõbralikku versiooni

Avaleht   -    Skriptikogu   -    Teated   -    Foorum   -    Reklaam   -    Tagasiside   -    Kasutamise reeglid

© Copyright 2002-2020 PHP Center. Kõik õigused reserveeritud.