Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Tworzenie konta
Forum PHP.pl > Forum > Przedszkole
Wojciechovsky
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?
mmmmmmm
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??
viking
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.
robertpiaty
Do tego co napisał viking do AUTO_INCREMENT dodaj jeszcze UNSIGNED smile.gif
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.