Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Baza danych - relacje
kwi4tusz3k
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.11.2012

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


Witam, nie wiem czy pisze dobrym watpu. Chodzi mi o baze danych w phpmyadmin. Problem polega na tym ze nie moge stworzyc relacji pomiedzy tabelami.
Tabela1: id, imie, nazwisko, data, numer telefonu, adres Tabela2: id, imie, nazwisko, obecnosc. Chcialbym aby jesli dodajemy do Tabela1 osobe to Tabela2 pobierala imie i nazwisko. Czy mozna zrobic takie powiazanie? Czy prosciej zrobic w formularzu zeby osoby byly dodawane do dwoch tabel?

Ten post edytował kwi4tusz3k 31.01.2013, 11:06:42
Go to the top of the page
+Quote Post
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Odpowiadając ogólnie - da się to zrobić za pomocą tzw. triggerów (AFTER INSERT na Tabela1 - w nim dodajemy imie i nazwisko do Tabela2 - możesz o tym poczytać).

A teraz na poważnie - robisz coś na maksa źle. Jeśli masz taką strukturę:

Tabela1

id | imie | nazwisko | data | numer_telefonu | adres

Tabela2

id | imie | nazwisko | obecnosc

To wystarczy ją znormalizować. Objaśnię Ci, po krótce o co chodzi ale też o tym poczytaj.

Zostaw sobie tabelę 'Tabela1' tak jak jest natomiast Tabela2 zrób tak:

Tabela2

id | id_Tabela1 | obecnosc

Imię i nazwisko już masz w tabeli 'Tabela1' więc nie ma sensu wpisywać jej znowu do 'Tabela2'. Wystarczy dodać relację do odpowiedniego rekordu z tabeli 'Tabela1'.

Przy dodawaniu nowego uzytkownika dodajesz go normalnie do Tabela1 a potem tworzysz rekord w Tabela2 z id_Tabela2 takim jakie ID ma ten ostatni wpis z Tabela1.

Przy pobieraniu danych z Tabela2 wystarczy wówczas prosty join:

  1. SELECT t2.id, t1.imie, t1,nazwisko, t2.obecnosc FROM Tabela2 t2
  2. JOIN Tabela1 t1 ON t2.id_Tabela1 = t1.id


Ten post edytował Sephirus 31.01.2013, 11:17:53
Go to the top of the page
+Quote Post
kwi4tusz3k
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.11.2012

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


Dzieki za odpowiedz. Teraz pamietam ze kiedys tak robilem tez na zajeciach ale sie zapomina. Nie bardzo rozumiem to

Przy dodawaniu nowego uzytkownika dodajesz go normalnie do Tabela1 a potem tworzysz rekord w Tabela2 z id_Tabela2 takim jakie ID ma ten ostatni wpis z Tabela1.

Ten post edytował kwi4tusz3k 31.01.2013, 12:11:35
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Robisz normalnie insert do tej pierwszej tabeli.

Potem pobierasz tzw ostatnio dodane ID (zakładam że id w tabelkach mają autoincrement). Dla funkcji z rodziny mysql_* to po prostu mysql_insert_id() a dla PDO to $pdoObj->lastInsertId();

Mając to ID, możesz teraz dodać to tabeli drugiej rekord podając to id jako id_tabeli1 aby zachować relację.

  1. mysql_query("INSERT INTO tabela1 (imie,nazwisko,data,...) VALUES (....)");
  2.  
  3.  
  4. mysql_query("INSERT INTO tabela2 (id_tabeli1,obecnosc) VALUES ({$id},...)");


Trochę jaśniej? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 1.10.2025 - 08:58