DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Sva početnička pitanja (http://www.devprotalk.com/forumdisplay.php?f=40)
-   -   ID za dve tabele (http://www.devprotalk.com/showthread.php?t=4662)

PeTkO 05. 02. 2008. 10:05

ID za dve tabele
 
Pocetnik sam u PHP-u i do sada sve je islo, pa moglo bi se reci, glatko.Ali dosao sam do jednog dela koji nikako nemogu resiti.

Naime hocu da napravim naprimer skriptu za registraciju, ali takvu da username i password upisuje u tabelu "podaci", a email i lokaciju u tabeli "razno".Ja mogu da napravim upis (normalno), ali ne znam kako da napravim da id iz prve tabele bude isti kao id iz druge tabele, da bi posle mogao posle logovanja da napravim ispis iz obe tabele

Nadam se da ste razumeli sta hocu da kazem

JovanT 05. 02. 2008. 10:35

Ако свака табеле креће од нуле, односно, раније није имала података, ID-еви ће ти бити исти уколико истовремено уписујеш податке у табелу.

Мада, далеко боље решење је да прво упишеш податке у табелу "podaci", нађеш ID последње уписаног слога па затим урадиш упис података у "razno" и ручно поставиш ID који си претходно сазнао.

dootzky 05. 02. 2008. 11:56

takav 'match' primarnih kljuceva uopste nije preporucljiv za rad.
ako to vec hoces da uradis, u tabeli "razno" dodaj jedno polje koje ti je ustvari spoljasnji kljuc za ovu bitniju tabelu. evo konkretno na sta mislim:

tabela PODACI:
user_id | int, PK, autoincrement
username | varchar(32)
password | varchar(32)


tabela RAZNO:
item_id | int, PK, autoincrement
user_id | int
email | varchar(32)
lokacija | varchar(32)

i ti sada uvek mozes da vezujes sve 'razne' podatke za usera kojeg god oces, nepogresivo. ovo ti je mnogo bolji koncept, nego da prosto pokusavas da matchujes primarne kljuceve, razni hororicni scenariji bi mogli da se dese. :|

a ako oces da vidis kako najlakse da izvuces last-mysql-inserted-ID, pogledaj ovu komandu: "mysql_insert_id()"
link: http://www.php.net/mysql_insert_id

znaci cim ubacis nekog novog baticu na svoj sajt, samo mazni poslednji ID, npr:
Kôd:

$query = "INSERT INTO users (username, password) VALUES ('dule', 'sifra')";
mysql_query($query);

$last_user_id = mysql_insert();

i to bi trebalo da ti radi posao.
poz

ivanhoe 05. 02. 2008. 19:01

uzgred ne postoji valjani razlog da pravis ovakvu 1:1 relaciju, sem eventualno vezbe radi.. u prakticnoj primeni stavi sve u istu tabelu i uzivaj...

PeTkO 05. 02. 2008. 22:27

Citat:

Originalno napisao ivanhoe (Napišite 50705)
uzgred ne postoji valjani razlog da pravis ovakvu 1:1 relaciju, sem eventualno vezbe radi.. u prakticnoj primeni stavi sve u istu tabelu i uzivaj...

Ali posto pravim sajt sa vise od 50 upisa u bazu, mislim da je najbolje da se ovako organizuje, po tabelama...jeste da je lakse da se radi u jednoj tabeli, ali mislim da je ovako preglednije


P.S. Dobro si me podsetio ivanhoe sta da pitam.Znaci, da li je bolje kad imas dosta podataka koji se cuvaju u bazu staviti sve u jednoj tabeli ili rasporediti po vise tabela

kodi 05. 02. 2008. 22:47

Citat:

Originalno napisao PeTkO (Napišite 50710)
Ali posto pravim sajt sa vise od 50 upisa u bazu, mislim da je najbolje da se ovako organizuje, po tabelama...jeste da je lakse da se radi u jednoj tabeli, ali mislim da je ovako preglednije

preglednost je APSOLUTNO poslednja stvar koja te zanima kod rada sa bazama.

Citat:

P.S. Dobro si me podsetio ivanhoe sta da pitam.Znaci, da li je bolje kad imas dosta podataka koji se cuvaju u bazu staviti sve u jednoj tabeli ili rasporediti po vise tabela
to apsolutno zavisi od slucaja, performansi sistema itd.
Ne vredi ovako, jednostavno moras da procitas neko stivo o normalizaciji i denormalizaciji podataka u bazi

http://en.wikipedia.org/wiki/Database_normalization
http://dev.mysql.com/tech-resources/...alization.html

PeTkO 05. 02. 2008. 22:53

Znaci neam pojma gde sam ziveo :)


Ja se vec par dana mucim kako da organizujem bazu, i na kraju ukapiram (tacnije vi mi kazete) da je to apsolutno nebitno...Hvala puno

ivanhoe 06. 02. 2008. 20:50

nije nebitno, veoma je bitno kako ces organizovati bazu, ali ne optimizujes strukturu baze za ljude, nego za software. Zanima te iskljucivo da ubrzas i pojednostavis rad sa podacima (querije, joinove, i ostale operacije na bazi), a da pritom izbegnes svako dupliranje podataka (taj se proces zove normalizacija). Postoje tu neke razne normalne forme, odnosno nivoi optimizacije, mada je u praksi sasvim dovoljno malo logicnog (programerskog) razmisljanja i malkice iskustva da dodjes do istog (ali poznavanje teorije svakako ne skodi).


Vreme je GMT +2. Trenutno vreme je 16:14.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.