Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pretraga Baze %LIKE%

[es] :: Baze podataka :: Pretraga Baze %LIKE%

[ Pregleda: 1908 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Take
Ivan Vicentijevic
d.o.o Magic Design
Kragujevac

Član broj: 147842
Poruke: 83
*.dynamic.sbb.rs.

Sajt: www.ubzrs.org


Profil

icon Pretraga Baze %LIKE%16.11.2010. u 14:44 - pre 163 meseci
Pozdrav!

molio bih za malu pomoc,

Prilikom upisa u MySql postujem vise stikliranih checkbox-a u array, zatim ih implode('|',$string); i ubcujem u bazu.Dobijem recimo |1|4|56|70|.

Sledece prilikom pretrage ukoliko je stiklirano vise checkbox-a opet post u array i dobijem nakon implode, recimo |5|6|56|80|.

Kako sad uporediti ova dva i prikazati redove koji sadrze bilo koji broj iz search-a.
npr. u slucaju da je stikliran samo 1 chackbox u pretrazi lako bi uporedio $sql='SELECT FROM $t WHERE $box LIKE %|5|%';

Ali sta ako je stiklirano vise boxeva? Kako uporediti ova 2, npr. ovo se nalazi u tabeli 'osovine' (|1|4|56|70|), a pretragom se traze 'osovine' koji sadrze bilo koji od ovih brojeva |5|6|56|80|.Ovde imamo poklapanje broja 56.

Da li postoji neki jednostavniji nacin od uporedjivanja svakog broja posebno nakon POST-a array boxeva.

foreach($key as $value)
$key = $value[0];
$key = $value[1];
....



 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.isp.telekom.rs.



+19 Profil

icon Re: Pretraga Baze %LIKE%16.11.2010. u 15:28 - pre 163 meseci
Nema elegantnog načina, samo budženje.

Preporuka je da izmeniš način snimanja tih podataka u bazu.
Uvedi zasebnu tabelu 'MojaTabelaRelacija' sa samo dve numeričke kolone (PrviId, DrugiId), gde ce prva biti ID artikla kojem si dodeljivao taj array, a u drugu idu ti brojevi iz array-a.
Posle će biti trivijalno izvući ID-ove artikala sa:
SELECT distinct PrviId FROM MojaTabelaRelacija WHERE DrugiId IN (5,6,56,80)
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

Take
Ivan Vicentijevic
d.o.o Magic Design
Kragujevac

Član broj: 147842
Poruke: 83
*.dynamic.sbb.rs.

Sajt: www.ubzrs.org


Profil

icon Re: Pretraga Baze %LIKE%16.11.2010. u 20:06 - pre 163 meseci
Hvala na odgovoru.


U ovu novu tabelu bi trebalo upisivati svaki broj(opciju), jedan red - jedan broj - id artikla, nije mi bas najjasnije kad izlistam id artikla, recimo dobijem:

1
5
6
7

ja bih sad trebao da izlistam sve artikle iz originalne tabele sa tim id-m. Znaci morao bih da uradim nesto kao SELECT * FROM tabela WHERE id = '1' OR id='5' ......

 
Odgovor na temu

Take
Ivan Vicentijevic
d.o.o Magic Design
Kragujevac

Član broj: 147842
Poruke: 83
*.dynamic.sbb.rs.

Sajt: www.ubzrs.org


Profil

icon Re: Pretraga Baze %LIKE%29.11.2010. u 10:05 - pre 162 meseci
Pronasao sam resenje jednog dela, ovo radi u slucaju da u polju tabele postoji samo jedan unos, recimo |5|,

Code:
$checkDB = mysql_query("SELECT * FROM `table`");
while($row = mysql_fetch_array($checkDB)) { 

      
      $rowCat = str_replace('|','', $row['cat']);
     
      $postCat= array($_POST['postCat']); 
      foreach($rowCat as $values){     
      
          if(in_array($rowCat , $values)) {
          echo $row['id'];
      }
                              }
    } 



Posto meni treba provera 2 razlicita array recimo |3|56|34| i |34|90

probao sam,


Code:
$checkDB = mysql_query("SELECT * FROM `table`");
while($row = mysql_fetch_array($checkDB)) { 

      
      $rowCat  = explode('|', $row['cat']);
     
      $postCat= array($_POST['postCat']); 
      foreach($rowCat as $values){     
      
          if(in_array($rowCat , $values)) {
          echo $row['id'];
      }
                              }
    }  


ali nesto ne radi kako treba.
 
Odgovor na temu

igor.vitorac

Član broj: 144858
Poruke: 483



+13 Profil

icon Re: Pretraga Baze %LIKE%29.11.2010. u 10:23 - pre 162 meseci
Kao sto su ti ljudi vec rekli, mozes samo da radis najgore budzenje... koje mozda nece raditi.
Pogledaj http://forge.mysql.com/tools/tool.php?id=204
i
http://oksoft.blogspot.com/2009/05/normalize-table.html

i normalizuj pomenutu tabelu i modifikuj aplikaciju da upisuje u normalizovane tabele.

Alternativno mozes iskoristiti deo koda sa pomenutog linka da napravis svoju store proceduru koja ce ti odraditi posao koji zelis bez promene baze.
 
Odgovor na temu

[es] :: Baze podataka :: Pretraga Baze %LIKE%

[ Pregleda: 1908 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.