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

Prava sintaksa za ispis iz baze-problem za početnika

[es] :: MySQL :: Prava sintaksa za ispis iz baze-problem za početnika

[ Pregleda: 2269 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

avayaman

Član broj: 163408
Poruke: 31
*.adsl.eunet.rs.



+1 Profil

icon Prava sintaksa za ispis iz baze-problem za početnika05.12.2009. u 22:45 - pre 174 meseci
Evo mog problema, za iskusnog develop-ra piece of cake, za mene "mrtva tačka".

Pravim bazu u koju ću smeštati prodavce i brendove koje oni prodaju.

Primer:
prodavac1 -> adidas, reebok,nike, levis, diesel, timberland,hilfiger.
prodavac2 -> police.
prodavac3 -> adidas, casio, arena, gillette, astor,
prodavac4 ->reebok, nike,timberland, speedo, bata.

Selektovanje brenda/brendova se vrši <select multiple name="brand" action="akcija.php" > formom, dakle u slučaju više selektovanih brendova $_GET['brand'] je array.

Potrebno mi je jednostavno ispisivanje prodavaca(tj. njihovih podataka) iz MySQL baze na osnovu selektovanog/selektovanih brenda/brendova.

Primer:
selektujem adidas, kliknem submit, dobijem ispis: prodavac1, prodavac2.
selektujem casio, kliknem submit, dobijem ispis: prodavac3.

Kreirao sam dve tabele. U jednoj se nalaze prodavci i njihovi podaci, u drugoj su svi brendovi(njih oko 60) i id-jevi svakog brenda. Ono što ne znam je sintaksa koju treba da upotrebim kako bih ovo ostvario.

Dakle potreban mi je kod na stranici akcija.php, tj. mysql_query("SELECT ... ") ...

Naravno ako nisam dobro započeo i postavio dobar koncept, rado ću promeniti stvari. Trenutno sam na "mrtvoj tački" pa bi se valjalo pomeriti :)

Hvala unapred !

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Prava sintaksa za ispis iz baze-problem za početnika06.12.2009. u 04:29 - pre 174 meseci
bez toga kako ti tacno izgleda baza ne moze niko da ti pomogne sa sql upitom .... sto se organizacije same baze tice .. pocni odavde:
http://www.mysql.rs/2009/05/mo...e-baze-podataka-normalizacija/


 
Odgovor na temu

avayaman

Član broj: 163408
Poruke: 31
*.adsl.eunet.rs.



+1 Profil

icon Re: Prava sintaksa za ispis iz baze-problem za početnika06.12.2009. u 13:28 - pre 174 meseci

Sjajan blog, odlično štivo, hvala puno Bogdane!

Upravo ovako ću napraviti tabele, jer je to ono što meni treba, pa molim za dalju asistenciju.

Javljam sa opisom baze čim pre!
 
Odgovor na temu

avayaman

Član broj: 163408
Poruke: 31
*.adsl.eunet.rs.



+1 Profil

icon Re: Prava sintaksa za ispis iz baze-problem za početnika06.12.2009. u 18:38 - pre 174 meseci
Malo sam studirao gore navedeni blog i došao do ove kreacije baze:

Code:
mysql_query("
CREATE TABLE prodavac (
    prodavac_id INT (8)unsigned NOT NULL auto_increment,
    prodavac_ime VARCHAR (32),
    prodavac_podaci VARCHAR (32),
    PRIMARY KEY (prodavac_id)
)
");

mysql_query("
CREATE TABLE brand (
    brand_id INT (8)unsigned NOT NULL auto_increment,
    brand_name VARCHAR (32),
    PRIMARY KEY (brand_id)
)
");

mysql_query("
CREATE TABLE prodavac_brand (
    brand_id INT (8),
    prodavac_id INT (8),
    FOREING KEY (brand_id),
    FOREING KEY (prodavac_id)
)   
");


Nisam siguran da sam ovo sa FOREING KEY dobro uradio, takođe mislim da sam doveo bazu do II NF i da dalje ne može da se formalizuje...

Slušam dalje upute :)
 
Odgovor na temu

Shinhan
PHP programmer
Subotica

Član broj: 12327
Poruke: 372
*.static.isp.telekom.rs.

Jabber: shinhan@elitesecurity.org
ICQ: 400847988


+4 Profil

icon Re: Prava sintaksa za ispis iz baze-problem za početnika07.12.2009. u 08:11 - pre 174 meseci
mysql_query("
CREATE TABLE prodavac_brand (
brand_id INT (8),
prodavac_id INT (8),
PRIMARY KEY (brand_id,prodavac_id)
)
");
"Common sense is not so common." - Voltaire
 
Odgovor na temu

avayaman

Član broj: 163408
Poruke: 31
*.adsl.eunet.rs.



+1 Profil

icon Re: Prava sintaksa za ispis iz baze-problem za početnika07.12.2009. u 08:37 - pre 174 meseci
OK,
Sada će se formom <select multiple name="brand" action="akcija.php" > selektovati jedan ili više brendova, a ispis treba da budu podaci prodavca. Znam da bi trebalo koristiti JOIN, ali nisam siguran kako bi tačno sintaksa upita trebalo da glasi.
 
Odgovor na temu

avayaman

Član broj: 163408
Poruke: 31
*.adsl.eunet.rs.



+1 Profil

icon Re: Prava sintaksa za ispis iz baze-problem za početnika11.12.2009. u 14:47 - pre 174 meseci
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" />

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Prava sintaksa za ispis iz baze-problem za početnika11.12.2009. u 18:49 - pre 174 meseci
za utf - pogledaj malo forum .. radi search na "set names" ..

za upit, having je extra spor - izbegavaj gde mozes a i ovaj kako si ga ti napisao nece da radi ..

za or or or or ... pogledaj: http://dev.mysql.com/doc/refma...son-operators.html#function_in

Code:

<?php
...
$query='
SELECT prodavac.p_podaci, count(*) koliko
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 IN (' . implode(',', $_POST['brand']) . ')
GROUP BY prodavac.p_id
HAVING (koliko =1 )';
$result=mysql_query($query);
...
mysql_free_result($result);
...
?>



 
Odgovor na temu

avayaman

Član broj: 163408
Poruke: 31
*.adsl.eunet.rs.



+1 Profil

icon Re: Prava sintaksa za ispis iz baze-problem za početnika13.12.2009. u 21:21 - pre 173 meseci
mysql_query("set names 'utf8'");

rešilo problem, thnx!
 
Odgovor na temu

[es] :: MySQL :: Prava sintaksa za ispis iz baze-problem za početnika

[ Pregleda: 2269 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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