Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] jak powiazac dane w tabelach?
mazc
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 8.08.2007

Ostrzeżenie: (0%)
-----


witam tongue.gif
juz probuje zrozumiec to dosc sporo czasu i nadal nie bardzo wiem jak moge to zrobic

przykladowo mam tab1 a w niej

tab1
-------
id pk auto |
login |
pass |
id_tab2|

oraz druga tab2

tab2
------
id pk auto |
nazwa |
nazwisko |

jakiego polecenia trzeba uzyc zeby nastapilo takie cos:

uzytkownil zalogowal sie do swojego konta, ale dane o nim sa przechowywane w tabeli tab2
teraz gdy wpisze swoje imie i nazwisko (moze to nastapic odrazu lub dopiero pozniej) to dostanie unikalny id w tab2
ponadto ten sam id zostanie dopisany w tab1 w polu id_tab2
, oczywiscie tab2.id moze byc rozne od tab1.id

dziekuje z gory za pomoc...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




W tab2 pole id powinno być kluczem głównym (czyli tak jak masz teraz) oraz równocześnie kluczem obcym odnoszącym się do tab1 do pola id. Sugerowałbym równocześnie zmianę nazwy kolumny z tab2 z "id" na "tab1_id" - będzie bardziej czytelnie.
Go to the top of the page
+Quote Post
mazc
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 8.08.2007

Ostrzeżenie: (0%)
-----


dziekuje za odpowiedz

chodzili mi bardziej o kod w jaki sposob to zapisac

czy jezeli beda te klucze obce w tej tab1 to po dodaniu wiersza w tab2 automatycznie wstawi wartosc??

Tak czy jak?
  1. CREATE TABLE `tab1` (
  2. `id` INTEGER AUTO_INCREMENT ,
  3. `login` char (32) NOT NULL DEFAULT '',
  4. `pass` char (32) NOT NULL DEFAULT '',
  5. `id_tab2` INTEGER DEFAULT '0',
  6. PRIMARY KEY (`id`)
  7. );
  8.  
  9. CREATE TABLE `tab2` (
  10. `id` INTEGER AUTO_INCREMENT ,
  11. `imie` char (32) NOT NULL DEFAULT '',
  12. `nazwisko` char (32) NOT NULL DEFAULT '',
  13. PRIMARY KEY (`id`)
  14. );

czy tak?
  1. CREATE TABLE tab1 (
  2. id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  3. login CHAR NULL,
  4. pass CHAR NULL,
  5. tab2_id INTEGER UNSIGNED NOT NULL,
  6. PRIMARY KEY(id),
  7. INDEX tab1_FKIndex1(tab2_id)
  8. );
  9.  
  10. CREATE TABLE tab2 (
  11. id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  12. imie CHAR NULL,
  13. nazwisko CHAR NULL,
  14. PRIMARY KEY(id)
  15. );


uzywam dbdesignerow ;p co sam nie bardzo nie rozumiem tych relacji.. :/ tzn nie wiem jak polaczyc ;/

Poprostu chodzi mi o to zeby uzytkownik mogl na zalozyc acc
dalsze info moze zalozyc pozniej ale w miedzy czasie inny moze chciec zalozyc wiec tab.id moze nie zgadzac sie z danymy z tab2.id

Jak to jest z tym fk jezeli w ten tab1 jak teraz bedzie ten fk na id_tab2, to jezeli wprowadze dane do tab1 to automatycznie w tab2 dostane klucz czy jak to bedzie?

prosze o odpowiedzi na wszystkie pytania;p

edit...


jeszcze cos takeigo wymyslilem przez phpadmin..:S

  1. CREATE TABLE `tab2` (
  2. `id` int(11) NOT NULL,
  3. `imie` varchar(32) NOT NULL,
  4. `nazwisko` varchar(32) NOT NULL,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=latin2;
  7.  
  8. CREATE TABLE `tab1` (
  9. `id` varchar(11) NOT NULL,
  10. `login` varchar(32) NOT NULL,
  11. `pass` varchar(32) NOT NULL,
  12. PRIMARY KEY (`id`),
  13. CONSTRAINT `tab1_ibfk_1` FOREIGN KEY (`id`) REFERENCES `tab1` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
  14. ) ENGINE=InnoDB DEFAULT CHARSET=latin2;



prosze powiedziec ktore drobe.. albo mnie poprawic smile.gif z gory dzieki smile.gif

Ten post edytował mazc 5.11.2007, 09:40:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 09:14