![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Opis problemu: Schemat bazy na potrzeby rozwiązania problemu: Tabela: filmy: - film_id - tytul - ... Tabel: aktorzy: - aktor_id - nazwisko Tabela: rezyserowie: - rezyser_id - nazwisko Tabela: film: - film_id - aktor_id - rezyser_id Krok 1: Pojawia się formularz w którym wybieramy ilu aktorów i ilu reżyserów chcemy dodać -> Krok 2: Po wysłaniu formularza pierwszego strona się odświeża i zostaje wygenerowany formularz z: - tytułem - gatunkiem ... + - polami aktor w liczbie odpowiadającej tej z kroku pierwszego. - polami reżyser w liczbie odpowiadającej tej z kroku pierwszego. Problem pojawia się podczas dodawania filmu do bazy danych, mianowicie: - najpierw dodajemy dane do tabeli filmy - prosty INSERT z danymi z formularza. - później dodajemy dane do tabeli aktorzy - nieco trudniejsze rozwiązanie, gdyż nie wiemy(na sztywno) ilu ich jest, ale z pomocą przychodzą nam pętle. Identycznie postępujemy z tabela rezyserowie. Pytanie: jak dodać dane do tabeli film? 1. Zapytaniem: 1 - pobierzemy film_id ostatnio dodanego filmu? Jak pobrać ostatnio dodanych aktorów i reżyserów? I wstawić ich do tabeli film razem z odpowiadającą im wartością film_id? ----------------------- Pytania na później: - Jak rozwiązać sytuacje gdy aktor/reżyser o podanym nazwisku jest już w bazie? - Odnoszę wrażenie jakbym robił to jakoś naokoło, może istnieje jakiś prostszy sposób dodania filmu do bazy przy założeniach: - aktorzy w bazie nie mogą się powtarzać. - reżyserowie nie mogą się powtarzać. - tabela filmy nie może zawierać 50 pól aktor/reżyser z czego 40 na wszelki wypadek (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 28.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
nie do konca kumam ale łatwiej bedzie zapisac dane do tabeli i z pętli wyciągnąć po nazwisku id masz pewnosc ze w miedzy czasie nikt ci nie doda jakiegos rekordu,
poz tym zamiast
select id from aktorzy where nazwisko="$_GET['nazwisko']" if($r->id) echo 'takie nazwisko juz jest w bazie'; |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
A po co tak się motać? Skoro najpierw dodajesz film to chyba logiczne, że TO TEN rekord będzie Cię interesował. Zrób więc zaraz po INSERT last_insert_id() i zapamiętaj go w zmiennej jakiejś. Użyjesz go potem w zapytaniach gdzie masz użyć owego id (IMG:style_emoticons/default/smile.gif)
Sprawdzanie to proste zapytanie do bazy. Najprościej byłoby kombinować na jeden z 2 sposobów: 1) Sprawdzasz dopiero PODCZAS dodawania czy owi aktorzy/reżyserzy są już w bazie i jeśli tak to przechwytujesz ich id, a brakujących dodajesz 2) Formularz konstruujesz jako AJAX i autocomplete robisz (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 1.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Odświeżam temat:
Pytanie brzmi: jak nie dublować aktorów w bazie danych w tabeli aktorzy. System działa tak: 1. Użytkownik wybiera ilu aktorów chce wstawić. 2. Skrypt generuje dana liczbę pól(p. 1). 3. Użytkownik wysyła formularz. Wszystkie inputy są filtrowane i wstawiane do tablicy aktorzy[]. 4. Jeśli wszystko przebiegło prawidłowo wykonywany jest poniższy kod:
Przed wstawieniem należałoby wykonać w pętli zapytanie SELECT które by sprawdziło i pobrało ID aktorów którzy są już w bazie. Problem: W tablicy aktorzy[] może być np. 10 nazwisko różnych aktorów z czego np. tylko 3 mogą już istnieć w bazie danych. Jak wyeliminować te 3 nazwiska z tej tablicy i dodatkowo uzupełnić ich ID'kami tabele film_aktor łącznie z nowa rolą która również pobieramy z formularza? Poniżej zamieszczam jeszcze formularz.
Ten post edytował PawelBah 13.02.2010, 18:34:42 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 14:54 |