Pretraživač ???

3

Pretraživač ???

offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

Dobro onda formiram niz sa rezultatima i u njemu čuvam brojeve svih redova u tabeli koji odgovaraju upitu. Kako da napravim petlju koja će brojati koliko se puta koji red pojavljuje u rezultatima? Kad to završim kako da složim taj niz da prvo budu oni koji sadrže sve reči? Kad bih ovo rešio skrip bi bio gotov.

Peco, stiče se utisak da jedino ti na ovom forumu znaš PHP ili da jedino ti imaš vremena i živaca da se bakćeš sa ovakvima kao što sam ja.

Koliko ja vidim nedostaju mi dve samo dve petlje, koje ja neznam napisati.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

malo obimniji posao, za sat-dva...
na zalost, nemam toliko vremena...

koristi for petlju, protrci kroz nizove, prebroj....



offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

Mislim da sam pri kraju samo mi treba neki drugi operaor poređenja umesto like. Treba mi operator koji će mi zameniti =. Ja sam pokušao i sa == ali to nije to. Znači treba mi tačan rezultat kao i keyword. Šta da koristim?

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

WHERE message='primer'

offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

Šta si hteo reći?

Kako ovde to da ubacim:

$query = "select * from podaci where ". id.
" like '%".$keyword[$j][0]."%'";

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

kazes da ti treba tacan rezultat?
to znaci da trazis polje u kome stoji samo ta rec/brojka, i ni jedna druga...
onda ide obican =

ovako:

za rec:
$query = "select * from podaci where id = '".$keyword[$j][0]."';";
za brojku:
$query = "select * from podaci where id = ".$keyword[$j][0].";";

offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

Ne slaže mi rezultate po broju pronađenih rezultata, ja nevidim gde je greška. Pre sam radio metod ponovljenog maksimuma, nikad za dvodimenzionalen nizove ali mislim da nisam nigde pogrešio

for ($s=0; $s<$z; $s++) { for ($e=1; $e<=$z; $e++) { if ($temp[$e][1]>$temp[$s][1])    {    $pomocna[1][0]=$temp[$s][0];    $pomocna[1][1]=$temp[$s][1];    $temp[$s][0]=$temp[$e][0];    $temp[$s][1]=$temp[$e][1];    $temp[$e][0]=$pomocna[1][0];    $temp[$e][1]=$pomocna[1][1];        }}}

$temp je je niz koji sadrži podniz. U $temp[$a][0] čuvam broj reda u tabeli gde se nalaze rezultati koji odgovaraju postavljenom upitu, a u $temp[$a][1], je broj koliko puta se taj red ponavlja unutar rezultata. Red će se pojaviti onoliko puta u rezultatima koliko u koloni keywords ima reči koje se pojavljuju u upitu. Pre toga sam napravio još jednu petlju:

for ($g=0; $g<=$z; $g++)    {    $f=0;    for ($h=0; $h<=$z; $h++)       if($temp[$g][0] == $temp[$h][0])       $f++;       $temp[$g][1] = $f;    }

Ova petlja proverava koliko se puta jedan red pojavljuje unutar rezultata, ako je if ispunjeno f++ i na kraju u $temp[$g][1] dodaje $f. Prema tom podatku sam u predhodnom kodu vršio sortiranje. $z je ukupan broj rezultata zanči rezultati za prvu reč + rezultati za drugu reč ...

Vidi li ko gde je preoblem?

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

idi korak po korak, ubaci echo posle svakog reda, i prati koje rezultate dobijas, jedino tako mozes da nadjes gde program odstupa od 'zamisljenog rada'

offline
  • Pridružio: 20 Dec 2004
  • Poruke: 2887
  • Gde živiš: Na Balkanu

Pomozi mi malo oko ovoga, jer ja mislim da je ovde problem. Napravio sam niz $temp[$i][$j]. Zapravose radi o podnizu niza. Na mestu $j=0 pamtim broj kolone, a na $j=1 broj pojavljivanja u rezultatima. Pa niz treba složiti da prvo budu prikazani rezultati gde je $j=1 veće. Napravio sam kod za sortiranje koliko se sećam iz C-a, ali izgleda da sam nešto propustio.

for ($s=0; $s<=$z-1; $s++){    for ($e=$s+1; $e<=$z; $e++)    {    if ($temp[$e][1]>$temp[$s][1])    {    $pomocna[1][0]=$temp[$e][0];    $pomocna[1][1]=$temp[$e][1];    $temp[$e][0]=$temp[$s][0];    $temp[$e][1]=$temp[$s][1];    $temp[$s][0]=$pomocna[1][0];    $temp[$s][1]=$pomocna[1][1];        }}}

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

a da pogledas funkcije za sortiranje niza ?
http://www.php.net/manual/en/ref.array.php

Ko je trenutno na forumu
 

Ukupno su 861 korisnika na forumu :: 30 registrovanih, 8 sakrivenih i 823 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: antonije64, bankulen, cenejac111, cifra, Denaya, Excalibur13, galerija, hologram, HrcAk47, janbo, JimmyNapoli, kjkszpj, kybonacci, laganini123, Lieutenant, mercedesamg, mikrimaus, Milos ZA, milutin134, misa2, Mlav, mnn2, raptorsi, Recce, royst33, sasa87, Stanlio, Trpe Grozni, ZetaMan, zlaya011