Skocz do zawartości

Projekt bazy filmowej aka filmweb


sadNot

Rekomendowane odpowiedzi

Witam, muszę zrobić do szkoły projekt strony z bazą filmów. Będzie posiadała recenzje, screeny, komentarze użytkowników, link do jakiegoś sklepu gdzie można kupić video itp

Muszę zrobić następującą funkcjonalność:

- Strona główna wyświetlać ma jakieś 3 wybrane przeze mnie filmy, które uznam za polecane.

- Wyświetlanie konkretnego filmu

- Wyświetlanie listy filmów dostępnych w bazie na podstawie wybranego gatunku

1. Każdy film musi należeć do przynajmniej jednego gatunku, ale chciałbym aby mógł należeć do kilku na raz (np thrillier i horror). Jak to umieścić w bazie danych?

2. Wyświetlanie kategorii. Chcę aby było to menu z boku z wypisanymi wszystkimi gatunkami i kliknięcie któregoś spowoduje wyświetlenie filmów do niego należących. Lecz gatunki wszystkie zapisać w bazie danych czy w zmiennej tablicy? Jak to zorganizować? Piszę obiektowo, dokładniej na frameworku CodeIgniter.

3. Załóżmy że mam film którego kategoria to 5 (oznacza to np film akcji). Jak zarządzić to w MVC, aby wyświetlało odpowiednio FILM AKCJI a nie 5?

Z góry dzięki za pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak dużo pytań, a ty piszesz, że "Piszę obiektowo," :)

Proponuję zacząć od podstaw nauki obsługi bazy danych i nauki języka SQL, bo to o co pytasz to są w zasadzie podsatwy aplikacji bazodanowej.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

@ale pytam o radę aby zrobić to poprawnie

Wiec napisz jakie są te rozwiązania będzie łatwiej ustalić czy są poprawne.

Zresztą i w tym przypadku rozwiązań będzie kilka.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

1. Każdy film musi należeć do przynajmniej jednego gatunku, ale chciałbym aby mógł należeć do kilku na raz (np thrillier i horror). Jak to umieścić w bazie danych?

rozbiłbym na dwie tabele: filmy (id, nazwa, id gatunku itp) i filmy_gatunki(id, id_gatunku, id_filmu) i później przykładowo:

SELECT * FROM filmy, filmy_gatunki WHERE filmy.id = filmy_gatunki.id_filmu AND  id_gatunku = 5

2. Wyświetlanie kategorii. Chcę aby było to menu z boku z wypisanymi wszystkimi gatunkami i kliknięcie któregoś spowoduje wyświetlenie filmów do niego należących. Lecz gatunki wszystkie zapisać w bazie danych czy w zmiennej tablicy? Jak to zorganizować? Piszę obiektowo, dokładniej na frameworku CodeIgniter.

do tej pory miałem wszystko w tablicy = array(1=>'akcji', 2=>'horror'...) ale nie wiem gdzie taką tablicę miałbym trzymać w tym CI :) dopiero co uczę się obiektowego pisania, wcześniej tylko strukturalnie

3. Załóżmy że mam film którego kategoria to 5 (oznacza to np film akcji). Jak zarządzić to w MVC, aby wyświetlało odpowiednio FILM AKCJI a nie 5?

Kontroler wywoluje Model, ten pobiera dane i teraz trzeba gdzieś to przetworzyć. Tylko czy w Kontrolerze czy w Modelu ?

Odnośnik do komentarza
Udostępnij na innych stronach

(id, id_gatunku, id_filmu)

Nie potrzebujesz pierwszego id, ustaw uniq key na id_gatunku, id_filmu i to jest cała tabela (bo film nie może należeć 2x do tego samego gatunku). Nie wiem po co chcesz zrobić to dobrze? Dobrze to się robi własne serwisy a nie zaliczeniówki do szkoły, jak to będzie działać, nie sypać błędami i będzie odporne na SQL injection i inne popularne ataki to i tak będzie wielki sukces :)

Lecz gatunki wszystkie zapisać w bazie danych czy w zmiennej tablicy?

Nie robi się tak, że część danych masz w bazie a część w tablicy ;)

BTW: Po co Ci MVC? Nie lepiej się uczyć jednej rzeczy na raz?

Odnośnik do komentarza
Udostępnij na innych stronach

Gatunki filmów są raczej z góry określone wiec możesz je zapisać w tablicy, ale lepiej jest mimo wszystko w bazie danych tabela:

GatunekFilmu np: idg, nazwa, nazwa_w_menu

Tabela na filmy np: idf, nawa, rok_produkcji, itd i teraz prostsze rozwiązanie to dodatkowo kolumna gatunek CHAR 20 gdzie będziesz przechowywał idg np oddzielony przecinkami 1,4,8

lub pośrednia tabela FilmyGatunki z kolumnami idf INT, idg INT w w tej tabeli jeden film możne pyć przypożadkowany do n gatunków np:

idf(id filmu) INT, idg (id gatunku) INT

11 - 2

11 - 6

11 - 7

index UNIQUE skladajacy się z idf + idg tak by jeden film mogł być przypisany do jednego unikalnego w skali tabeli gatunku.

@Tylko czy w Kontrolerze czy w Modelu ?

Model jest tylko od przygotowania/zwrócenia danych które przetwarzasz w kontrolerze. W kontrolerze jest też cała logika aplikacji. Do widoku idą najprostsze typu danych do ich wyświetlarnia np string, array. NP z widoku:

<ul>

<?php foreach($arrKategorie AS $dane): ?>

<li><a href="<?php echo $dane['link'];?>"><?php echo $dane['nazwa'];?></a></li>

</ul>

<?php endforeach;?>

ITD...

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Żadnych pętli robić nie musi....

Zgadza się, że bez sensu jest przechowywać kategorie w pliku tekstowym dlatego napisałem jak napisałem.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

@Tylko czy w Kontrolerze czy w Modelu ?

Model jest tylko od przygotowania/zwrócenia danych które przetwarzasz w kontrolerze. W kontrolerze jest też cała logika aplikacji. Do widoku idą najprostsze typu danych do ich wyświetlarnia np string, array. NP z widoku:

<ul>

<?php foreach($arrKategorie AS $dane): ?>

<li><a href="<?php echo $dane['link'];?>"><?php echo $dane['nazwa'];?></a></li>

</ul>

<?php endforeach;?>

ITD...

Czyli jeżeli chcę trzymać kategorie w bazie to robie tabele: id, nazwa, rodzic i typ i w modelu wykorzystuje je w taki oto sposob? w tym wypadku chodzi o wyswietlanie listy z filmami

function preprocess($data)
{
	// pobierz dane o kategoriach z bazy
	$q = $this->db->get('categories');

	if($q->num_rows() > 0) {

		foreach($q->result() as $row) {

			switch($row->type_id) {

				case 0: 
					$category[$row->id] = $row->name; // wszystkie kategorie główne
					break;
				case 1: 
					$subcategory[$row->parent][$row->id] = $row->name; // wszystkie podkategorie
					break;
				case 2: 
					$species[$row->parent][$row->id] = $row->name; // wszystkie gatunki
					break;
			}
		}
	}

	// stwórz dane gotowe dla widoku
	foreach($data as $film) {

		// input short values // poniewaz są wielokrotnie wykorzystywane i chyba z takich jest szybszy dostep
		$cat_id = $film->category_id;
		$subcat_id = $film->subcategory_id;
		$spec_id = $film->species_id;

		// output dates // w przypadku braku, nie wyswietla bledu tylko zawiera puste pole
		$film->category = '';
		$film->subcategory = '';
		$film->species = '';

		if(isset($category[$cat_id])) {
			$film->category = $category[$cat_id];
		}

		if(isset($subcategory[$cat_id][$subcat_id])) {
			$film->subcategory = $subcategory[$cat_id][$subcat_id];
		}

		if(isset($species[$cat_id][$spec_id])) {
			$film->species = $species[$cat_id][$spec_id];
		}

	}

	return $data;
}

cos w tym stylu?

Odnośnik do komentarza
Udostępnij na innych stronach

Jak już pisałem model w MVC ma za zadanie przygotowanie danych których źródłem przeważnie jest baza danych MySQL, ale możne to być inna baza, plik tekstowy ogólnie źródło danych. IMHO model powinien zawierać jak najprostszy kod do pobrania danych ich obróbkę wykonujemy w kontrolerze, a prezentacje wiadomo w widoku.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Jak już pisałem model w MVC ma za zadanie przygotowanie danych których źródłem przeważnie jest baza danych MySQL, ale możne to być inna baza, plik tekstowy ogólnie źródło danych. IMHO model powinien zawierać jak najprostszy kod do pobrania danych ich obróbkę wykonujemy w kontrolerze, a prezentacje wiadomo w widoku.

ok dzięki, przeniosę funkcję na kontroler.

co do tego iż jest to na zaliczenie - to nie istotne. programowanie to moja pasja i raz chcę to zrobić dobrze, aby się nauczyć, a dwa może pociągnę ten projekt dalej.

pozdrawiam.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności