Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Łączenie tabel
Forum PHP.pl > Forum > Przedszkole
Croos22
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?
pablo_83
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
Croos22
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}"
Ulysess
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...
Croos22
A mógłbyś podać jakiś przykład bo nie łapie za bardzo?
Ulysess
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.