[ nera1981 @ 21.09.2011. 21:47 ] @
Postoje dva dinamička dvodimenzionalna niza. Jedan sadrži podatke o proizvodima(ID,ime,opis), a drugi o prodavnicama(ID,ime, adresa). Korisnik unosi naziv proizvoda u promenljivu na početku programa, a program emituje listu svih proizvoda sličnog naziva, kao i informacije o prodavnicama u kojima se isti može naći.
Da li je nužno prvo napraviti još jedan niz, koji bi sadržavao parove ID proizvoda i ID prodavnice, kako bi se znalo koji proizvod se može naći u kojoj prodavnici?
Hvala unaprijed
[ vatri @ 22.09.2011. 06:45 ] @
Ne znam jesam li shvatio pitanje ali evo pokusaj odgovora :)

Mozes ili napraviti jos jedan niz sa parovima ID proizvoda i ID prodavnice, ili mozes u niz proizvoda dodati jos jedan podatak "id_prodavnice"
[ nera1981 @ 22.09.2011. 11:48 ] @
Citat:
vatri: Ne znam jesam li shvatio pitanje ali evo pokusaj odgovora :)

Mozes ili napraviti jos jedan niz sa parovima ID proizvoda i ID prodavnice, ili mozes u niz proizvoda dodati jos jedan podatak "id_prodavnice"

Mislim da si shvatio suštinu problema. Sada recimo da otpada ova druga opcija(u niz proizvoda dodati još jedan podatak,IDprodavnice).

Da li bi otprilike ovako trebao da izgleda taj niz sa parovima IDproizvoda-IDprodavnice:

$IDrelacije=array(array(IDproizvoda1, IDprodavnice1),
array(IDproizvoda1, IDprodavnice2),
array(IDproizvoda1, IDprodavnice5),
array(IDproizvoda2, IDprodavnice2),
array(Idproizvoda2, IDprodavnice4),
array(IDproizvoda3, IDprodavnice1),
array(Idproizvoda4, IDprodavnice2),
array(IDproizvoda4, IDprodavnice3),
array(IDproizvoda5, IDprodavnice1),
array(IDproizvoda5, IDprodavnice2),
array(IDproizvoda5, IDprodavnice4),
array(IDproizvoda6, IDprodavnice3),
array(IDproizvoda4, IDprodavnice5)…);
[ nera1981 @ 28.09.2011. 16:39 ] @
Evo kod za sva tri niza.

Code:
<?php
$nizProizvodi = array( 
"proizvod1"=>array("ID"=>"01","naziv"=>"nazivI1","opis"=>opis1),
"proizvod2"=>array("ID"=>"02","naziv"=>"nazivI2","opis"=>opis2),
"proizvod3"=>array("ID"=>"03","naziv"=>"nazivI3","opis"=>opis3),
"proizvod4"=>array("ID"=>"04","naziv"=>"nazivI4","opis"=>opis4),
"proizvod5"=>array("ID"=>"05","naziv"=>"nazivI5","opis"=>opis5)
...
);
 

 

$nizProdavnice = array( 
"prodavnica1"=>array("ID"=>"91","naziv"=>"nazivP1","adresa"=>"adresa1"),
"prodavnica2"=>array("ID"=>"92","naziv"=>"nazivP2","adresa"=>"adresa2"),
"prodavnica3"=>array("ID"=>"93","naziv"=>"nazivP3","adresa"=>"adresa3"),
"prodavnica4"=>array("ID"=>"94","naziv"=>"nazivP4","adresa"=>"adresa4"),
"prodavnica5"=>array("ID"=>"95","naziv"=>"nazivP5","adresa"=>"adresa5")
...
);
 
$nizInstrumentiProdavnice = array(
"relacija1" =>array("IDproizvoda"=>"01","IDprod"=>"91"),
"relacija2" =>array("IDproizvoda"=>"01","IDprod"=>"93"),
"relacija3" =>array("IDproizvoda"=>"02","IDprod"=>"92"),
"relacija4" =>array("IDproizvoda"=>"02","IDprd"=>"94"),
"relacija5" =>array("IDproizvoda"=>"03","IDprod"=>"93"),
"relacija6" =>array("IDproizvoda"=>"03","IDprod"=>"95"),
"relacija7" =>array("IDproizvoda"=>"04","IDprod"=>"92"),
"relacija8" =>array("IDproizvoda"=>"04","IDprod"=>"93"),
"relacija9" =>array("IDproizvoda"=>"05","IDprod"=>"94"),
"relacija10" =>array("IDproizvoda"=>"05","IDprod"=>"95"),
...
);
 

?>

Nizovi su dinamički. Treći niz, ako neko ne može odmah shvatiti, sadrži parove ID proizvoda i ID prodavnice, i služi isključivo za uspostavljanje relacije između prve dvije tabele, odnosno da bi se znalo koji proizvod se može naći u kojoj prodavnici. Ove vrijednosti u nizovima nisu prave, već samo primjeri.

Znači, da ponovim: treba da napravim program koji će na osnovu unosa korisnika (korisnik unosi naziv proizvoda, što se na početku programa može dodijeliti običnoj promjenljivoj, npr. $nazivProizvoda= "neki naziv"), vratiti listu proizvoda sličnog naziva, kao i podatke o prodavnicama gdje se ti proizvodi mogu naći. Zahvaljujem unaprijed na bilo kakvoj pomoći.

[Ovu poruku je menjao nera1981 dana 28.09.2011. u 19:17 GMT+1]
[ pajaja @ 28.09.2011. 20:15 ] @
A odakle izvlacis te nizove?
[ nera1981 @ 29.09.2011. 08:24 ] @
Citat:
pajaja: A odakle izvlacis te nizove?

Zadatak je da sam napravim niz, ali mislim to nije relevantno u ovom slučaju (osim ako misliš da nešto nije dobro urađeno). Bitan mi je algoritam koji će, kao što sam već rekao, da ih pretraži i vrati tražene podatke. Čak nije toliko releventan način implementacije unosa korisnika, jer se to može predstaviti kao obično dodjeljivanje vrijednosti unosa nekoj varijabli na početku programa(npr. $NazivProizvoda="neko ime"). Mogao bih nekako da napišem program za pretraživanje samo niza $Proizvodi, ali mi nije jasno kako da to pretraživanje povežem sa druga dva niza, tako da mi vrati zajedno sa podacima o proizvodu i povezane podatke o prodavnici u kojoj se nalazi.
[ vatri @ 29.09.2011. 10:29 ] @
Evo ti u attachmentu kod za pretrazivanje. Moze se to i ljepse uraditi, ali neka ;)

[ nera1981 @ 29.09.2011. 13:52 ] @
Citat:
vatri: Evo ti u attachmentu kod za pretrazivanje. Moze se to i ljepse uraditi, ali neka ;)

Zahvaljujem puno na trudu, ali na žalost, previdio si jednu stvar . Pretraga se treba vršiti po nazivu proizvoda, ne po njegovom ID-u. Postavlja se pitanje može li se uopće to implementirati uz ovakvu strukturu nizova?
[ vatri @ 29.09.2011. 15:33 ] @
Mogao si se potruditi pa sam zakljuciti sta treba promjeniti.

Novi kod:

Code:

// pretrazujemo niz proizvoda 
    foreach($_arrProd as $key => $arrData)
    {
        //if( $arrData['ID'] == $prodID) // << staro pretrazivanje
        if( $arrData['naziv'] == $prodID)
        {
            $prodID = $arrData['ID'];// pretrazujemo po ID ostala 2 niza(prodavnice i relacije)
            $arrOut['naziv'] = $arrData['naziv'];
            $arrOut['opis'] = $arrData['opis'];
            break;
        }
    }


i dole u pozivu funkcije samo stavis ime proizvoda umjesto ID-ja
[ nera1981 @ 30.09.2011. 08:17 ] @
Citat:
vatri: Mogao si se potruditi pa sam zakljuciti sta treba promjeniti.

Novi kod:

Code:

// pretrazujemo niz proizvoda 
foreach($_arrProd as $key => $arrData)
{
//if( $arrData['ID'] == $prodID) // << staro pretrazivanje
if( $arrData['naziv'] == $prodID)
{
$prodID = $arrData['ID'];// pretrazujemo po ID ostala 2 niza(prodavnice i relacije)
$arrOut['naziv'] = $arrData['naziv'];
$arrOut['opis'] = $arrData['opis'];
break;
}
}


i dole u pozivu funkcije samo stavis ime proizvoda umjesto ID-ja

U pravu si, mogao sam sam ovo prepraviti, ali pomislio sam da to neće biti moguće bez mjenjaja strukture trećeg niza(zamjeniti IDproizvoda sa nazivom). U svakom slučaju, zahvaljujem mnogo.