![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 23.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam, stworzyłem bazę danych i chciałbym stworzyć na stronie możliwość dodawania użytkowników do bazy.
W formularzu do tworzenia konta chcę, aby osoba określiła następujące parametry: Imię, Nazwisko, Pesel - tabela osoby ulica, kod_pocztowy, miasto - tabela adresy telefon, email - tabela kontakty Tabela Osoby posiada dodatkowo klucze obce - Adresy_id, Kontakty_id. Tabele adresy i kontakty prócz wyżej wymienionych pól, posiadają jeszcze id (auto increment) Chciałbym się dowiedzieć w jaki sposób zrobić, żeby poprzez jeden formularz wypełniło tabelę kontakty, adresy oraz osoby. Problem głównie dotyczy kluczy obcych, ponieważ nie wiem w jaki sposób zrobić, żeby np. ID (adresy/kontakty) były identyczne jak Adresy_id (osoby). Widzę to na takiej zasadzie: 1. Użytkownik wpisuje wszystkie dane. 2. Dane zapisują się w zmiennych. 3. Poleceniem INSERT dane są najpierw wrzucane do tabeli adresy.
4. Poleceniem SELECT zostaje sprawdzone jakie ID posiada wcześniej wpisany adres 5. ID zostaje przekopiowane do zmiennej $adresy_id 6. Poleceniem INSERT dane wrzucane są do tabeli kontakty.
7. Poleceniem SELECT zostaje sprawdzone jakie ID posiada wcześniej wpisany kontakt 8. ID zostaje przekopiowane do zmiennej $kontakty_id 9. Poleceniem INSERT dane wrzucane są do tabeli osoby.
10. Usunięcie wszystkich zmiennych Z PHP i MySQL mam do czynienia od niedawna, dlatego sądzę, że to nie jest ani poprawne, ani optymalne rozwiązanie. Znacie drogę, dzięki której będę mógł wybrnąć z tego problemu? Ten post edytował Wojciechovsky 30.03.2015, 01:00:35 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Algorytm postępowania jest prawidłwoy, ale po co kontakty trzymasz w osobnej tabeli? Adres jestem jeszcze w stanie zrozumieć (choć praktyka wskazuje co innego), ale kontakty??
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie musisz dodatkowo odpytywać bazę o id
http://php.net/manual/en/pdo.lastinsertid.php Dodatkowo, w zależności od tego czy chcesz wszystko albo nic, użyj transakcji i rollback. No i oczywiście PDO nie mysql_* Aha, kluczami głównymi powinny być INT AUTO_INCREMENT bo chyba o to też pytasz. Typ InnoDB + klucze obce. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 18 Dołączył: 7.10.2007 Skąd: Pruszków Ostrzeżenie: (0%) ![]() ![]() |
Do tego co napisał viking do AUTO_INCREMENT dodaj jeszcze UNSIGNED (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.09.2025 - 23:59 |