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

Spajanje tablica - PHP/MySQL molim pomoć

[es] :: PHP :: Spajanje tablica - PHP/MySQL molim pomoć

[ Pregleda: 1733 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mp3lab
DaVa Com
Hrvatska

Član broj: 24064
Poruke: 15
*.adsl.net.t-com.hr.



+1 Profil

icon Spajanje tablica - PHP/MySQL molim pomoć24.03.2012. u 22:22 - pre 147 meseci
Pozdrav

Kako sam relativno nov i neiskusan u ovome,
molio bih malu pomoć u vezi spajanja tablica (PHP/MySQL/XAMPP)

Naime, imam 4 tablice:

u prvoj koja se zove asort sa 4+ stupaca:
id catid pid tipid ...

id je primary key a catid, pid, tipid su foreign keys iz druge tri tablice kategorija, tipovi i proizvodaci.

E sad bi ja htio napraviti upit koji bi mi dao npr sve zapise u tablici asort koji imaju npr tipid=4,
ustvari tipid bi bio u $_GET varijabli
ako ne spajam tablice mislim da bi to bilo samo

Code:
$q1 = "SELECT * FROM asort WHERE tipid='$_GET[tipid]' order by cijena asc";

ali onda dobijem samo ove foreign keys a ja bi htio nazive iz ove tri druge tablice pa sam probao sa:

Code:
$q1 = "SELECT * FROM asort LEFT JOIN (kategorija, proizvod, tip)
                 ON (kategorija.catid=asort.catid AND proizvod.pid=asort.pid AND tip.tipid=asort.tipid) 
                 where tipid='$_GET[tipid]' order by cijena asc";

ali rezultat je:
"Column 'tipid' in where clause is ambiguous"

Eto, ako ima netko da malo pomogne hvala unaprijed
Dval
DVal
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Spajanje tablica - PHP/MySQL molim pomoć24.03.2012. u 22:59 - pre 147 meseci
Umesto
where tipid='$_GET[tipid]' order by cijena asc
treba da bude
where asort.tipid='$_GET[tipid]' order by cijena asc

Takođe, ako postije polje "cijena" u još nekoj od navedenih tabela, onda staviti asort.cijena
 
Odgovor na temu

mp3lab
DaVa Com
Hrvatska

Član broj: 24064
Poruke: 15
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Spajanje tablica - PHP/MySQL molim pomoć24.03.2012. u 23:24 - pre 147 meseci
Hvala lijepa na brzom odgovoru! https://static.elitesecurity.org/thumbup.gif

bio sam jako blizu

sad sam probao i sa
Code:

$q1 = "SELECT * FROM asort, kategorija, proizvod, tip 
            WHERE 
            kategorija.catid=asort.catid AND 
            proizvod.pid=asort.pid AND 
            tip.tipid=asort.tipid AND
            asort.tipid='$_GET[tipid]' order by cijena asc";


pa koliko vidim da radi i ovako
ali baš nisam siguran da znam u čemu je razlika pa ako ti se da malo pojasniti
hvala unaprijed
pozz
DVal
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Spajanje tablica - PHP/MySQL molim pomoć24.03.2012. u 23:47 - pre 147 meseci
Nema nikakve razlike između ta dva načina pisanja upita. Svaka SQL ANSI kompatibilna baza podataka prihvatiće oba načina i dati iste rezultate.
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
77.243.20.*



+303 Profil

icon Re: Spajanje tablica - PHP/MySQL molim pomoć25.03.2012. u 15:00 - pre 147 meseci
Nema mnogo veze sa pitanjem, ali cisto da znas da ne smes da radis $_GET direktno u upitu, jer rizikujes mysql injection (google it)...
 
Odgovor na temu

mp3lab
DaVa Com
Hrvatska

Član broj: 24064
Poruke: 15
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Spajanje tablica - PHP/MySQL molim pomoć26.03.2012. u 00:54 - pre 147 meseci
Što se tiče sigurnosti...
imam funkciju koju pozivam

Code:
function check($x=null) {
  if(!isset($x)) return null;
  else if(is_string($x)) return mysql_real_escape_string($x);
  else if(is_array($x)) {
    foreach($x as $k=>$v) {
      $k2=mysql_real_escape_string($k);
      if($k!=$k2) unset($x[$k]);
      $x[$k2]=check($v);
    }
    return $x;
  }
}


i odmah na početku
Code:
$_GET=check($_GET)


to sam negdje vidio na netu
Jel to može tako ići ili bi treba iz $_GET polja svaki put izvući varijablu i onda mysql_real_escape_string?

pozz
DVal
 
Odgovor na temu

[es] :: PHP :: Spajanje tablica - PHP/MySQL molim pomoć

[ Pregleda: 1733 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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