• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP and Mysql insert do dwoch tabel

Object Storage Arubacloud
+1 głos
1,069 wizyt
pytanie zadane 6 października 2017 w PHP przez moofi Początkujący (470 p.)
edycja 6 października 2017 przez Patrycjerz

Witam, chcę stworzyć formularz gdzie będą pola do uzupełnienia, chciałbym aby wprowadzane dane zapisywane były do  2 tabel w mysql ze sobą powiązanych. Do jednej tabeli dane sa wyslane ale jak dodaje drugi insert to dane nie sa wysylane. Szukam od jakiegos czasu rozwiazania jak dane wyslac do dwoch tabel ale bezskutecznie. Kazda porada mile widziana.

$con = @new mysqli($host, $db_user, $db_password, $db_name);

if (isset($_POST['pat_submit']))
{
//Table Patients Data    
    $PAT_NAME=$_POST['PAT_NAME'];
    $PAT_SURNAME=$_POST['PAT_SURNAME'];
    $PAT_DOB=$_POST['PAT_DOB'];
    $PAT_GEN=$_POST['PAT_GEN'];

// Table Medical History*/
    $MED_ISSUE=$_POST['PAT_ISSUE'];

$query="insert into PATIENTS_DATA(PAT_NAME,PAT_SURNAME,PAT_DOB,PAT_GEN)values('$PAT_NAME','$PAT_SURNAME','$PAT_DOB','$PAT_GEN')";

$query="insert into MEDICAL_HISTORY(MED_ID, PAT_ID, MED_ISSUE)values('$MED_ID','$PAT_ID','$PAT_DOB','$MED_ISSUE')";

$result=mysqli_query($con,$query);
komentarz 6 października 2017 przez CenterPL Pasjonat (19,070 p.)
Nie odpowiem na pytanie, ale dam pro tipa - nie używaj funkcji mysql(i)_cośtam. Użyj PDO. Bezpieczniej, lepiej i w ogóle.
komentarz 6 października 2017 przez moofi Początkujący (470 p.)
A jesli uzyje PDO to musze pozniej pisac w OO?
komentarz 7 października 2017 przez CenterPL Pasjonat (19,070 p.)
Nie musisz, abstrachując, że może powinieneś dla samego siebie i dla czytelności ;)

1 odpowiedź

0 głosów
odpowiedź 6 października 2017 przez Spook Nowicjusz (180 p.)
Pierwszy błąd: to nie może być relacja jeden-do-jeden (i nie jest), gdyby tak było to jeden pacjent mógłby złożyć wizytę w przychodni (lub innej tego typu placówce) tylko jeden raz! Jest to relacja jeden-do-wielu.

Propozycja:

Oddzielny formularz do wprowadzania danych pacjentów i oddzielny do wprowadzania historii wizyt. Jeżeli pacjent, który się już raz zarejestrował odwiedza przychodnie po raz kolejny to nie potrzeba wprowadzać przecież jego danych tylko dane o jego aktualnej wizycie.
komentarz 6 października 2017 przez moofi Początkujący (470 p.)
Dzieki za odpowiedz, jednak jest to formularz dodawania pacjenta do bazy i bedzie on wypelniony tylko raz wiec mysle ze jednak 1 do 1. Do uzupelniania danych beda inne tabele. Zalezy mi na tym zeby w tym formularzu mogl uzupelnic te dwie tabele. Pozniej bede wywolywal widok z obu tabel naraz wiec musza byc polaczone. Sorki za pisownie ale ale nie mam polskich znakow na tym kopmuterze.
komentarz 6 października 2017 przez Tomek Sochacki Ekspert (227,510 p.)

Pozniej bede wywolywal widok z obu tabel naraz wiec musza byc polaczone. 

a gdzie jest napisane, że aby stworzyć widok musisz mieć tabele połączone? Widok możesz bez problemu stworzyć przecież z wielu niezależnych od siebie tabel, a jeśli nie masz dla nich sensownego JOINa to możesz zrobić po prostu UNION. Pokaż najlepiej jak tworzysz ten widok CREATE VIEW moj_widok AS ??? (i co masz tutaj w "???").

A ponad to Ty najpierw przypisujesz do zmiennej $query pierwszy insert, a za chwilę nadpisujesz ją drugim, czyli ostatecznie robisz tylko insert do MEDICAL_HISTORY.

A tak na marginesie to nie myślałeś może żeby po prostu stworzyć sobie procedurę na bazie MySQL i przekazać do niej te dane, a potem już na bazie odpowiednio pododawać do różnych tabel? Wtedy w PHP w metodzie query po prostu przekazujesz polecenie wywołania procedury na bazie i tam wszystko obrabiasz. Jeśli masz więcej takich przypadków to łatwo praktycznie w większości narzędzi MySQL zbierać sobie wszystkie procedurki, ale to już kwestia indywidualna (ja osobiście lubię tę technikę, ale nie wszyscy są tego samego zdania).

 

komentarz 6 października 2017 przez moofi Początkujący (470 p.)
Dzieki za odpowiedz. Masz racje zmienilem na query1 i query2 i zapiaslo do dwoch tabel. Widoku jeszcze nie mam ale myslalem ze tabele musza byc polaczone foregin key zeby dane z nich pokazac w jednym widoku.  Takze jeszcze brakuje mi podpowiedzi jak foregin key z tabeli1 umiescic do tabeli2 poprzez insert?
komentarz 6 października 2017 przez moofi Początkujący (470 p.)
A jesli chodzi o procedure na bazie mysql to chyba nie wiem jak to zrobic
komentarz 6 października 2017 przez Tomek Sochacki Ekspert (227,510 p.)

PROCEDURY MYSQL

Generalnie procedura służy do wykonania jakiś czynności na bazie, ale jeśli na końcu zrobisz select to otrzymasz zwrotnie jego wynik. Możesz więc np. porobić różne inserty, update, delete itp. itd., a na koniec zwrócić sobie jaką wartość kontrolną lub po prostu select. Tylko pamiętaj, aby przed dodaniem parametrów dla procedury odpowiednio je zwalidować w PHP. Co prawda w MySQL też w pewnym zakresie jest to możliwe (są tu nawet regexp) ale jest to bardziej uciążliwe. W procedurach możesz też stosować zmienne, pętle, instrukcje warunkowe itp. więc to na prawdę ciekawe "narzędzie".

Takze jeszcze brakuje mi podpowiedzi jak foregin key z tabeli1 umiescic do tabeli2 poprzez insert?

nie rozumiem... foreign key nie powoduje żadnego automatycznego insertu w inne tabele, to tylko pewnego rodzaju zabezpieczenie.

komentarz 6 października 2017 przez Tomek Sochacki Ekspert (227,510 p.)
a tak na marginesie to w MySQL jest taka zasada (choć nie obowiązkowa), że tabele piszemy z małych liter, podobnie jak pola a z dużych piszemy kwerendy.

Podobne pytania

0 głosów
1 odpowiedź 271 wizyt
pytanie zadane 20 maja 2019 w PHP przez Moras Obywatel (1,620 p.)
0 głosów
4 odpowiedzi 1,326 wizyt
pytanie zadane 28 stycznia 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (11,270 p.)
0 głosów
2 odpowiedzi 3,199 wizyt

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...