Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Łączenie tabel
Croos22
post 11.11.2010, 20:51:14
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Witam.

Cytat
users |
user_id | user_name | user_pass | user_pass_short
1 admin admin2424 admin2424
2 admin2424 admin admin


-------------------------------------------------

dane |
id | wiek | gg | skype
1 20 (nr) (nr)
2 25 (nr) (nr)



Mam takie tabele przykładowo i chciałbym sie dowiedzieć w jaki sposób trzymać dane użytkowników
aby np. admin z numerem id 1 miał swoję dane w tabeli dane też pod id 1. Wydaje mi się, że gdy aktualizuje
je należało by połączyć tabele w jednym zapytaniu i przy wyciąganiu z bazy uczynić tak samo. A w rzeczywistości
Jak najlepiej by to wyglądało i działało?

Ten post edytował Croos22 11.11.2010, 20:51:35
Go to the top of the page
+Quote Post
pablo_83
post 11.11.2010, 21:21:10
Post #2





Grupa: Zarejestrowani
Postów: 200
Pomógł: 16
Dołączył: 11.01.2009
Skąd: wrocław

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


proponuje użycie kluczy obcych.

pierwsza tabela:
id_user (klucz główny);
user_pass
user_log
itd...

druga tabela:
id_dane (klucz główny);
imie;
nazwisko;
tel;
...
id_user (klucz obcy - powiązany z kluczem głównym pierwszej tabeli);

w tym przypadku dany user ma ma swoje unikatowe dane poprzez klucz obcy id_user.

jak będziesz chciał wyciągnąć rekordy z tabel to robisz zapytanie join i dzięki kluczowi obcemu wyciągasz dane z drugiej tabeli tylko dla usera który cię interesuje
Go to the top of the page
+Quote Post
Croos22
post 14.11.2010, 07:57:47
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


O takie coś chodzi?

Kluczem by było user_id w tabeli users i id w tabeli dane.
  1. SELECT users.user_id,users.name FROM `users`,dane WHERE users.users_id=dane.id = "{$user_id}"


Ten post edytował Croos22 14.11.2010, 08:49:37
Go to the top of the page
+Quote Post
Ulysess
post 14.11.2010, 09:32:01
Post #4





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


przecież nie trzeba używać kluczy obcych żeby skorzystać z JOIN , LEFT JOINa
ja bym proponował 2 metody
1 przy rejestracji wykonuje się zapytanie które dodaje ID danego usera do różnych tabel
2 User wchodzi na stronę a.php wtedy wykonuje się zapytanie które sprawdza czy w tabeli a są danego tego usera ,jeśli nie to dodaje dane.

ja osobiście korzystam z 1 opcji ale wiem że jest takie niebezpieczeństwo że jeśli przy rejestracji coś pójdzie nie tak user może mieć dane tylko w części tabel w tedy będzie psikus...
Go to the top of the page
+Quote Post
Croos22
post 14.11.2010, 10:01:30
Post #5





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


A mógłbyś podać jakiś przykład bo nie łapie za bardzo?

Ten post edytował Croos22 14.11.2010, 10:15:18
Go to the top of the page
+Quote Post
Ulysess
post 14.11.2010, 11:03:26
Post #6





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


skoro znasz podstawy php to nie powinno być dla Ciebie problemem napisanie smile.gif przy rejestracji dodajesz dane jakiegoś usera do głównej tabeli następnie np dzięki jego loginowi pobierzesz jego ID następnie dajesz kolejne INSERTy którymi dodajesz do innych tabel dane tego USERa wstawiając w WHERE id_user = id pobrane z głównej tabeli. to była 1 opcja

2
przy rejestracji dajesz tylko INSERTa do głównej tabeli

a gdy już user zaloguje się i buszuje po Twojej stronie i wejdzie w zakładkę np ABC to wtedy dajesz selecta który sprawdza czy w danej tabeli jest już takie id jeśli tak to żadna akcja nie następuje jeśli nie dajesz INSERTa i tyle

tak jak mówiłem są plusy i minusy , uważam że ta druga opcja na stronach gdzie jest dużo odświeżeń nie zdaje roli ale mogę się mylić bo mam stosunkowo małą wiedzę na temat mysql/php
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 Wersja Lo-Fi Aktualny czas: 21.06.2025 - 18:58