Evo kako sada stvari stoje:
// Kreiranje tabele
Code:
CREATE TABLE prodavac (
p_id INT (8)unsigned NOT NULL auto_increment,
p_naziv VARCHAR (64),
p_podaci, VARCHAR (256)
PRIMARY KEY (p_id)
)
CREATE TABLE brand (
b_id INT (8)unsigned NOT NULL auto_increment,
b_name VARCHAR (32),
PRIMARY KEY (b_id)
)
CREATE TABLE prodavac_brand (
b_id INT (8),
p_id INT (8),
PRIMARY KEY (b_id, p_id)
)
Sada formom
Code:
<form method="post" action="test.php">
<select multiple name="brand[]" size="5" >
</select>
<input type="submit" value="Traži" />
</form>
Selektujem jedan ili više brendova.
MySQL upit za slučaj da je samo jedan brand selektovan glasi:
Code:
SELECT prodavac.p_podaci
FROM brand, prodavac, prodavac_brand
WHERE prodavac_brand.b_id = brand.b_id
AND prodavac_brand.p_id = prodavac.p_id
AND (
brand.b_id =$POST[brand][0]
)
GROUP BY prodavac.p_id
HAVING (
COUNT( prodavac.p_id =1 ) )
U slučaju da je selektovano više brand-ova upit glasi:
Code:
SELECT prodavac.p_podaci
FROM brand, prodavac, prodavac_brand
WHERE prodavac_brand.b_id = brand.b_id
AND prodavac_brand.p_id = prodavac.p_id
AND (
brand.b_id =$POST[brand][0]
OR brand.b_id =$POST[brand][1]
OR brand.b_id =$POST[brand][2]
.
.
.
OR brand.b_id =$POST[brand][n-2]
OR brand.b_id =$POST[brand][n-1]
OR brand.b_id =$POST[brand][n]
)
GROUP BY prodavac.p_id
HAVING (
COUNT( prodavac.p_id =1 ) )
Kakva bi se petlja mogla napraviti u samom mysql upitu i da li je to moguće?
Koji je način da za više selektovanih brand-ova dobijem tačan upit?
P.S.
Pošto sam kreirao tabele, postavio sam Type=InnoDB, Collation=utf8_general_ci preko phpMyAdmin-a. Kada putem phpMyAdmin-a pristupim bazi i pregledavam sadržaj tabela, u njima se nalaze slova č ić. Međutim posle upita i prikazivanja na stranici ova ista slova se vide kao ?,
pa ne znam u čemu je problem. U head-u stranice koja prikazuje sadržaj iz tabele stoji <meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />