Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Problem z powiązaniem dwóch tabel
-Zako-
post 9.01.2012, 19:43:24
Post #1





Goście







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ę
Go to the top of the page
+Quote Post
pr0kt0r
post 9.01.2012, 21:33:33
Post #2





Grupa: Zarejestrowani
Postów: 35
Pomógł: 1
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
-Zako-
post 10.01.2012, 00:14:15
Post #3





Goście







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;)

Go to the top of the page
+Quote Post
Mnichasso
post 10.01.2012, 00:14:41
Post #4





Grupa: Zarejestrowani
Postów: 97
Pomógł: 13
Dołączył: 26.06.2003
Skąd: Piekary Śląskie

Ostrzeżenie: (0%)
-----


mysql_insert_id();


baaasmiley.gif


--------------------
This is only game
Go to the top of the page
+Quote Post
swiru_
post 10.01.2012, 00:19:06
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.10.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Mnichasso
post 10.01.2012, 00:31:31
Post #6





Grupa: Zarejestrowani
Postów: 97
Pomógł: 13
Dołączył: 26.06.2003
Skąd: Piekary Śląskie

Ostrzeżenie: (0%)
-----


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.  


--------------------
This is only game
Go to the top of the page
+Quote Post
swiru_
post 10.01.2012, 00:46:54
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.10.2009

Ostrzeżenie: (0%)
-----


no ok, a co w momencie kiedy bedzie doawal ksiazke ale nie autora? 1 autor moze miec kilka ksiazek
Go to the top of the page
+Quote Post
-Zako-
post 10.01.2012, 02:06:53
Post #8





Goście







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;)).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 04:19