Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z powiązaniem dwóch tabel
Forum PHP.pl > Forum > Przedszkole
Zako
Witam,
Chciał bym zaznaczyć ,że dopiero raczkuje w kwestii php dlatego proszę o wyrozumiałośćwink.gif
mam takie tabele :
  1. CREATE TABLE autorzy
  2. (
  3. IDautora int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4. Imie char(30),
  5. Nazwisko char(20),
  6. )

oraz
  1. CREATE TABLE ksiazki
  2. (
  3. IDksiazki int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4. IDautora int UNSIGNED NOT NULL,
  5. Rok date NOT NULL
  6. Miejsce char(30)
  7. )


Dane do bazy danych wprowadzane są za pomocą formularza (jednocześnie do tabeli książki oraz do tabeli autorzy przy użyciu dwóch zapytań) i tu właśnie pojawia się problem. Zapisując dane chciałbym aby IDautora (auto_increment) w tabeli autorzy, było również jednocześnie zapisywane do pola IDautora w tabeli książki aby utworzyło się powiązanie na podstawie którego mógłbym później wyszukiwać książki na podstawie autora który ją napisał.

P.S. Jeżeli logika całego "przedsięwzięcia" jest nieprawidłowa lub niejasno coś nakreśliłem proszę zwrócić mi uwagę
pr0kt0r
A czego nie wiesz? Po prostu dodajesz dane do tych tabel(INSERT INTO) a później wyświetlasz(SELECT) łącząc tabele(JOIN) na te pola.
Zako
Cytat(pr0kt0r @ 9.01.2012, 21:33:33 ) *
A czego nie wiesz? Po prostu dodajesz dane do tych tabel(INSERT INTO) a później wyświetlasz(SELECT) łącząc tabele(JOIN) na te pola.


Tak tak, wiem o tym i robię dokładnie tak jak radzisz. Problem w tym ,że dodając dane z poziomu formularza do bazy danych a konkretnie do tabeli książki nie mam w nim (formularzu) pola IDautora ,bo było bo to moim zdaniem bez sensu. Dlatego też akurat te pole w tabeli książki pozostaje puste ,gdy zapisuje dane (INSERT) w tej tabeli i tu właśnie pojawia się pytanie: jak "pobrać" pole IDautora z tabeli autorzy i wstawić jego zawartość również do IDautora w tabeli ksiazki?

Podam również przykład żeby troszkę rozjaśnić sytuację:
To "roboczy" formularz z którego dane wprowadzane są do bazy :

  1. Dodaj ksiazke <br><br>
  2. Tytul:
  3. <input name="tytul" type="text" size="40"><br>
  4. Rok:
  5. <input name="rok" type="text" size="40"><br>
  6. Miejsce:
  7. <input name="miejsce" type="text" size="40"><br>
  8. ISBN:
  9. <input name="ISBN" type="text" size="40"><br>
  10. Imie autora:
  11. <input name="imieautora" type="text" size="40"><br>
  12. Nazwisko autora:
  13. <input name="nazwiskoautora" type="text" size="40"><br>
  14. Wydawca:
  15. <input name="wydawca" type="text" size="40">
  16. <input type="submit" name="submit" value ="dodaj">
  17.  


I teraz dane dotyczące książki zostaną zapisane w tabeli o takiej samej nazwie np pod IDksiążki = 4 (auto_increment) ,podobnie dane dotyczące autora tutaj np. IDautora = 5 (auto_increment). Chcąc teraz wyszukiwać dane książki na podstawie autora, IDautora (klucz obcy) w tabeli książki powinno mieć taką samą wartość jak IDautora(klucz główny) w tabeli autorzy czyli 5 (a po zapisaniu danych ma wartość 0 co zresztą jest logiczne bo nigdzie nie podaje jego wartości) Jak więc sprawić by przy zapisie danych ,IDautora (książki) automatycznie przyjmowało wartość z IDautorzy(autorzy)?

Teraz to dopiero pewnie zamotałem;)

Mnichasso
mysql_insert_id();


baaasmiley.gif
swiru_
ja bym dal jedna komorke w tabeli idautorzy z imieniem i nazwiskiem, wyszukiwanie zrobi na zasadzie takiej: pobierasz imie io nazwisko autora laczysz te dwa pola (implode) zapytanie SELECT ID FROM AUTORZY WHERE nazwa = to co implodowales, zapisal to do zmiennej w drugim zapoytaniu dodal tylko id ze zmiennej i zapisal w bazie
Mnichasso
ehh ... a nie prosciej tak niż jakieś szukanie ?
  1.  
  2. $q = "INSERT INTO autorzy SET imie='$imie', nazwisko='$nazwisko'";
  3.  
  4. $res = mysql_query($q);
  5.  
  6.  
  7. $q = "INSERT INTO ksiazki SET id_autora='$id', rok='$rok', miejsce='$miejsce'";
  8.  
  9. $res = mysql_query($q);
  10.  
swiru_
no ok, a co w momencie kiedy bedzie doawal ksiazke ale nie autora? 1 autor moze miec kilka ksiazek
Zako
Cytat(Mnichasso @ 10.01.2012, 00:31:31 ) *
ehh ... a nie prosciej tak niż jakieś szukanie ?
  1.  
  2. $q = "INSERT INTO autorzy SET imie='$imie', nazwisko='$nazwisko'";
  3.  
  4. $res = mysql_query($q);
  5.  
  6.  
  7. $q = "INSERT INTO ksiazki SET id_autora='$id', rok='$rok', miejsce='$miejsce'";
  8.  
  9. $res = mysql_query($q);
  10.  


mysql_insert_id() - Dziękuje, czegoś takiego właśnie szukałem, pozostaje jeszcze kwestia poruszona przez swiru_ ,z którą postaram sobie w jakiś sposób poradzić (choć nie ukrywam ,że liczę i na Wasze pomysły;)).
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.