|
[ Take @ 12.05.2008. 12:52 ] @
| Interesuje me kako bih mogao da unesem u sql vise razlicitih vrednosti iz recimo 'multiple drop down liste' ali u 1 polje.
Recimo imam selektovane vrednosti 1,2,3,4,5, sada kako bi to uneo u sql polje da u tom 1 polju budu svih 5 vrednosti, ali da kasnije mogu da uporedim vrednost iz neke druge tabele sa tim vrednostima.
Recimo imam u drugoj tabeli vrednost 5 , i sad hocu da vidim dali ta vrednost 5 postoji u polju gde su ubacene vrednosti 1,2,3,4,5.
Nadam se da rezumete sta mi treba. |
[ misk0 @ 12.05.2008. 19:52 ] @
To rjesavas u aplikaciji tako sto te vrijednosti spojis u string i upishes u polje dovoljne duzine. Kasnije, da bi pronashao da li neka vrijednost odgovara jednoj od vrijednosti u tom polju koristis LIKE uslov ili nesto slicno. Ako imas puno vrijednosti i cestu potrebu za pretrazivanjem nije ti dobro to raditi vec cuvaj vrijednosti razdvojeno u razlicitim slogovima.
U cemu to radis?
[ Take @ 12.05.2008. 20:13 ] @
Code pisem u PHP-u , e sad mi to bas i nije najjasnije kako bih napisao taj string i uneo ga u polje, a za pretragu sam mislio da koristim LIKE %$row[1]%.
Ovo mi treba radi unosa vise razlicitih vrednosti iz drop down liste, ima oko 190 vrednosti i unose se samo na 1 stranici, nema ponavljanja.
To su u stvari zemlje sveta, trebao bih da unesem recimo ovako SR.RU.GB. etc.Sve u 1 polje naravno.
[ misk0 @ 13.05.2008. 11:08 ] @
Code:
$zemlja1= 'SR';
$zemlja2='GR';
$zemlja3='PL';
$listazemalja= $zemlja1 . ',' . $zemlja2 . ',' . $zemlja3;
insert listazemalja.....
[ zlaajaa @ 13.05.2008. 15:45 ] @
Pozdrav,
ja za to koristim serialize(); funkciju, a kad vadis rezultate is baze odradis unserialize();
[ dakipro @ 13.05.2008. 16:15 ] @
Moze i da se serializuje, mada je to vise za komplikovaniji sadrzaj od prostih elemenata.
Ipak se slazem sa misk0-ovim predlogom, daleko bolje spojiti u jedan string, zbog zauzeca baze a i mislim da je brze nego serialize/unserialize.
Posto su ti polja iz forme, dobijes ih kao niz u php-u, pa ih samo join('|', $sadrzajPosta);
Mozes ih spajati sa zarezom, mada ja preferiram pipe (|).
[ Take @ 13.05.2008. 16:31 ] @
Niste me lepo razumeli, ali pronasao sam nekakvo resenje.
Ustvari ja sam hteo da ubacim vise razlicitih vrednosti u 1 polje, recimo vrednosti iz drop liste.
Evo html coda :
Code: <select name="listmeni[]" size="10" multiple="multiple" id="listmeni[]" type="disbled">
<option value=""></option>
<option value=1 selected="selected">zemlja 1</option>
<option value=2>Zemlja 2</option>
<option value=3>Zemlja 3</option>
<option value=4>Zemlja 4</option>
<option value=5>Zemlja 5</option>
</select>
Ukoliko bih selektovao vise od 1 vrednosti i uneo u bazu klasicnom komandom
Code: $sql = "insert into `baza` (id, listmeni) values ("",'".$_POST['listmeni']."')";
dobio bih u bazi samo prvu vrednost koja je selektovana.
E sad ja sam uradio sledece :
Code: $sql = "insert into `baza` (id, listmeni) values ("",'". join(",",$_POST["listmeni"])."')";
i dobio sam sve vrednosti u jednom polju odvojene ' , ' Sad ne znam koliko je ovo dobro s obzirom da kasnije trebam da uporedim ove vrednosti sa vednostima iz druge tabele.
[ Miroslav Ćurčić @ 13.05.2008. 16:35 ] @
Koji god separator da odabereš (recimo taj pipe) obavezno ga stavi i na početak i na kraj stringa dok ga upisuješ u bazu.
Čitanje iz baze onda ide sa: LIKE %|$row[1]|%
Nadam se da si razumeo razlog, ovim ćeš postići da ti ne pronalazi pod-stringove već isključivo cele vrednosti, recimo traženje "|5|" neće ga pronaći u zapisu "|1|4|15|".
[ dakipro @ 13.05.2008. 16:47 ] @
Pa mislim da ti nas nisi lepo razumeo, o tome ti i pricamo sve vreme bas tako da uradis 
I da, ako ce ti trebati pretraga po ovom polju, ondak obavezno Miroslavov savet za separatore na pocetku i kraju.
[ Take @ 13.05.2008. 17:18 ] @
Hvala na pomoci, mozete li mi reci kako da stavim separator na pocetak tj. da dobijem taj format "|1|4|15|" .
I jos jedno pitanje, kako bih uporedjivao polje koje ima isto vise vrednosti u jednom polju sa ovim , recimo kako uporediti ovo "|1|4|15|" sa ovim "|5|15|23|" , ovde se poklapaju 15 i 15.
[ Man-Wolf @ 13.05.2008. 21:47 ] @
Sto se tice spajanja: http://www.php.net/manual/en/function.implode.php
Pa cekaj, jel tebi treba da budu identicni unosi da bi se poklapali ili da ti se poklapa samo jedan deo |X| ? Il sam se ja nesto lose istripovao?
[ Take @ 14.05.2008. 01:15 ] @
Treba da se poklapa samo jedan deo, tj. ceo unos ako je isti, ovako ako je u 1. tabeli "|1|4|15|" a u 2. "|2|4|12|" tu se poklapaju cetvorke,
a ako je u 1. "|1|4|15|" a u 2. "|1|4|10|" tu se poklapaju 1 i 4.
Recimo imam "|1|4|15|" i kazem uporedi sa "|1|2|15|" , ako neki od brojeva iz prve tabele postoji u drugoj uradi to.
[ rajkoBekrija @ 14.05.2008. 02:13 ] @
Covjece tebi bas nije jasno puno stvari
Hoces li nam reci sta mucno pokusavas da napravis, a mi cemo tebi rjesenje.
kontam da za odabranu zemlju hoces da selektujes stavke koje sadrze istu
onda ides query
col LIKE %|$row[0]|%
a ako hoces da nadjes unose sa vise poklapanja zemalja onda imas
col LIKE %|$row[0]|% AND col LIKE %|$row[1]|%...
odnosno
foreach( $row as $Value ){
$Where .= ( $Where ? ' AND ' : '' )."col LIKE %|$Value|%";
}
$Query = "SELECT * FROM tabela WHERE $Where";
[ Take @ 14.05.2008. 09:47 ] @
Nije mi jasno kako da stavim pipe na pocetak i na kraj , trenutno ovim codom
Code: $sql = "insert into `baza` (id, listmeni) values ("",'". join(",",$_POST["listmeni"])."')";
dobijam format 1|4|15|10 , a mVeliki je rekao da je bolje da koristim pipe i na pocetku da bih dobio ovaj format |1|4|15|10|.
[ dakipro @ 14.05.2008. 10:11 ] @
Pazi, ako ovo neznas, mislim da imas daleko veci problem sto se tice programiranja...
Mislim, to ti je toliko elementarna operacija stringovima, da prosto ne razumem kako si stigao dotle gde si sada ako ovo ne mozes da provalis.
Pazi, prosta stvar...
ako ti ovaj kod
Code:
$sql = "insert into `baza` (id, listmeni) values ("",'". join(",",$_POST["listmeni"])."')";
daje ovaj string
Code:
insert into `baza` (id, listmeni) values ("", '1|4|15|10')
gde bi u gornjem kodu treba da dodas | da bi dobio
Code:
insert into `baza` (id, listmeni) values ("", '|1|4|15|10|')
?
Mislim, zelim da te navedem da sam provalis to radije nego da ti dam gotov kod jer mi je prosto neverovatno da si stigao dotle, i da si ovde zapeo.
[ Take @ 14.05.2008. 11:02 ] @
hehe, neverovatno, sta sam ja pokusavo, ccc, od '". join("|",$_POST["listmeni"]),"|"."' do ko zna cega jos.
Hvala na pomoci.
Code: $sql = "insert into `baza` (id, listmeni) values ("" ' | ". join("|",$_POST["listmeni"])." | ')";
Istripovao sam se da ce ovaj | na kraju da se ponavlja '|1||4||15||10|' ako ovako stavim pa nisam ni pokusavao, ustvari samo ogradjuje ovaj string unutra.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|