Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Insert do dwóch tabel i relacje
Forum PHP.pl > Forum > Bazy danych > MySQL
pawelek86
Mam następujący problem. Posiadam dosyć rozbudowaną bazę ale pokaże na przykładzie problem. Są dwie tabele:

  1. Tabela urzadzenie ma dwa pola:
  2. id_urzadzenia
  3. numer_urzadzenia


  1. Tabela pomiary ma trzy kolumny:
  2. id_pomiaru
  3. nazwa pomiaru
  4. wartosc_pomiaru
  5. id_urzadzenia - klucz obcy do powiazania tych dwoch tabel


Relacja jak jest taka ze jedno urządzenie ma wiele pomiarów:)

I teraz mam formularz w ktorym jest tak:
pole 0 gdzie wpisuje numer urzadzenia o wartosci $numer_urzadzenia
pole 1 to pomiar napiecia (przyjmijmy ze w bazie to bedzie jako 1) o wartosci $napiecie
pole 2 to pomiar pradu (przyjmijmy ze w bazie to bedzie jako 2) o wartosci $prad
pole 3 to pomiar..... , itp - jest ich powiedzmy 20 i więcej:)

I moim problemem jest to w jaki sposób je wpisywać - nie mogę samymi insertami się posłużyć wklepując po koleji:
KOD: ZAZNACZ WSZYSTKO
  1. mysql_query("insert into urzadzenie values('', '$numer_urzadzenia')");


tutaj coś powinno byćquestionmark.gifquestionmark.gif nie wiem:/

  1. mysql_query("insert into pomiary values('', 1,'$napiecie')");
  2. mysql_query("insert into pomiary values('', 2,'$prad')");



bo pogubią mi sie relacje.. moim zdaniem powinienem jakoś selecta dodać przed wpisywaniem pomiarów aby wiedzieć pod jakim id wpisany został ten numer urządzenia ale nie potrafię tego zrealizować... Coś słyszałem o transakcjach, itp ale nie potrafię nic sensownego wymyślić a po za tym wolałbym uniknąć transakcji które widzę że każdy coś o tym słyszał ale jest jak widmo....
trafas
Po zrobieniu inserta do tabeli "urzadzenie" wywołujesz zapytanie

  1. SELECT LAST_INSERT_ID()


które zwraca ci ostatnio utworzone id.

Wynik zapytania pakujesz do zmiennej i podajesz do wpisania w tabeli "pomiary" pod id_urzadzenia.

Musisz tylko pamiętać o tym, że w tabeli "urzadzenie" musisz mieć zdefiniowany klucz główny ( najlepiej id_urzadzenia ) z opcją autoincrement.

Pozdrawiam.


http://dev.mysql.com/doc/refman/5.0/en/inf...-functions.html
pawelek86
Cytat(trafas @ 9.02.2011, 22:37:58 ) *
Po zrobieniu inserta do tabeli "urzadzenie" wywołujesz zapytanie

  1. SELECT LAST_INSERT_ID()


które zwraca ci ostatnio utworzone id.

Wynik zapytania pakujesz do zmiennej i podajesz do wpisania w tabeli "pomiary" pod id_urzadzenia.

Musisz tylko pamiętać o tym, że w tabeli "urzadzenie" musisz mieć zdefiniowany klucz główny ( najlepiej id_urzadzenia ) z opcją autoincrement.

Pozdrawiam.


http://dev.mysql.com/doc/refman/5.0/en/inf...-functions.html



A co zrobić jeżeli tabela urządzenia ma powiedzmy 5 kolumn i potrzebuję wartość innej kolumny która nie jest kluczem głównym, np nazwa_pomiaru?
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.