Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Tworzenie konta
Wojciechovsky
post
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.
  1. INSERT INTO adresy (ulica, kod_pocztowy,miasto)
  2. VALUES ('Kolorowa', '03-221', 'Kraków');

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.
  1. INSERT INTO kontakty (telefon,email)
  2. VALUES ('42-655-23-11', 'test@mail.pl');

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.
  1. INSERT INTO osoby (imie, nazwisko, pesel, adresy_id, kontakty_id)
  2. VALUES ('Jan', 'Kowalski', '90020204512', $adresy_id, $kontakty_id);

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
Go to the top of the page
+Quote Post
mmmmmmm
post
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??
Go to the top of the page
+Quote Post
viking
post
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.
Go to the top of the page
+Quote Post
robertpiaty
post
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)
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: 25.09.2025 - 23:59