mymovies
Het is dus de bedoeling dat een gebruiker kan aangeven welke film hij in zijn bezit heeft in de tabel 'mymovies':
CREATE TABLE `mymovies` (
`pkMyMoviesID` bigint(21) unsigned NOT NULL auto_increment,
`userID` bigint(21) unsigned NOT NULL default '0',
`movieID` bigint(21) unsigned NOT NULL default '0',
`aantal` tinyint(3) unsigned default NULL,
`storageID` bigint(21) unsigned default NULL,
`codecID` bigint(21) unsigned default NULL,
`audio` varchar(255) default NULL,
`subtitles` varchar(255) default NULL,
`extended` enum('0','1') default '0',
`special_edition` enum('0','1') default '0',
`koop` enum('0','1') default '0',
`x-rental` enum('0','1') default '0',
`opgenomen` enum('0','1') default '0',
`uitgeleend` enum('0','1') default '0',
`opmerkingen` longtext,
PRIMARY KEY (`pkMyMoviesID`),
KEY `user`(`userID`),
KEY `movie`(`movieID`),
KEY `storage`(`storageID`),
KEY `codec`(`codecID`)
) TYPE=MyISAM COMMENT='FilmArchief (mymovies)';
Dat lukt allemaal wel, maar afhankelijk van welk opslagmedium er gekozen wordt zijn er een aantal voorwaarden.
bijv. als er voor DVD gekozen wordt zijn van belang:
- Systeem (PAL, NTSC of SECAM)
- Beeld (4:3 of 16:9)
- Zone (1 t/m 8)
- Formaat (DVD-5 of DVD-9)
als er bijv. VHS of een ander medium gekozen zou worden zijn er weer andere voorwaarden mogelijk.
N.B. ik doe het in 1e instantie in MSAccess, maar het moet ook mogelijk zijn in MySQL als het kan
Wie kan mij hiermee helpen?
Als je een tabel hebt waarin de films staan en een tabel met gebruikers, heb je lang niet zoveel kolommen in je mymovies tabel nodig. Dit wordt dan enkel een koppeltabel om films aan gebruikers te koppelen.
films
------
id
titel
...
gebruikers
------------
id
gebruikersnaam
....
mymovies
------------
id
gebruiker_id
film_id
Verder zul je bij het normaliseren van dit datamodel goed moeten kijken naar de gegevens in de films tabel. Je zult namelijk aparte tabellen nodig hebben voor bijvoorbeeld de regisseur(s), acteurs, subtitles, etc...
ps. Tenslotte maakt het voor het ontwerpen van je datamodel niet uit of je dat nu voor een MSAccess of MySQL database doet. De tabellen en onderlinge relaties zullen altijd hetzelfde zijn.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Ik heb al een tabel personen, en een tabel rol (met acteur, regisseur etc.), en tabel rol_link die de personen linkt aan de rol.
En de andere tabellen die jij noemde heb ik ook al.
Ik dacht dat ik dus alle data maar 1x in de db heb staan.
En de subtitles heb ik in de tabel mymovies staan, want dat kan voor een ieder nog weer anders zijn (voor bijv. een chinees anders dan voor een nederlander)
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
Maar goed, mymovies bestaat dus lang niet uit zoveel kolommen als jij in je eerste post aangeeft. Alle informatie die jij in die tabel hebt staan is overbodig omdat deze ook al beschikbaar is in de films tabel.
CREATE TABLE `land` (
`pkLandID` mediumint(8) unsigned NOT NULL auto_increment,
`Kenteken` varchar(5) NOT NULL default '',
`Land` varchar(255) NOT NULL default '',
`Taal` varchar(100) default NULL,
`Naam` varchar(255) default NULL,
`LandNr` int(4) unsigned default NULL,
`Valuta` varchar(255) default NULL,
`UTC` varchar(10) default NULL,
`TLD` varchar(10) default NULL,
`Religie` varchar(255) default NULL,
`Regeringsvorm` varchar(255) default NULL,
`Hoofdstad` varchar(255) default NULL,
`Vlag` longblob,
`landlink` varchar(255) default NULL,
`opmerkingen` longtext,
PRIMARY KEY (`pkLandID`)
) TYPE=MyISAM COMMENT='FilmArchief (landen)';
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
ps. Ook de tabel die je nu geeft zou je nog verder kunnen normaliseren. Denk bijvoorbeeld aan Religie en Valuta. Er kunnen immers meerdere landen met dezelfde valuta of religie zijn (denk aan de euro bijvoorbeeld)
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Dan heb je ook daar een koppeltabel nodig. Op het moment dat iemand dan een ander opslagmedium kiest moet je uit je koppeltabel de goede voorwaarden laten rollen.
Die kan bij iedereen ongelijk zijn!
Dat is mijn reden geweest...
Jan helpt me meer op de goeie weg!
Ik ga zo ff slapen, dan bekijk ik nog wel welke relatie-methode er gebruikt moet worden en dkom ik er op terug.
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
In zou onder 'MyMovies' de films verstaan die ik bijvoorbeeld nog wil kopen.
Kun je per opslagmedium de voorwaarden eens geven?
"welke film hij in zijn bezit heeft"
voor wat jij wil zou ik nog een andere tabel kunnen maken, iets van nog_kopen o.i.d.
En je weet lijkt me ook nog niet welke audio, subtitle e.d. erop staan als je de film (nog) niet in je bezit hebt.
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
* kuch *
----
id
ect.
films
----
id
user
ect..
zo kan het ook sns bank..
Ik heb het ff uitgezocht en ik heb de volgende voorwaarden:
*. VHS / Betamax / Video2000 -> duur (60, 90, 120, 180, 210 of 240 min.)
-> evt. merk en type videoband
*. S-VHS
*. CD / VCD / SVCD
*. CD-i
*. DVD -> systeem (PAL, NTSC of SECAM)
-> Beeld (4:3 of 16:9)
-> Zone (1 t/m 8)
-> Formaat (DVD-5 of DVD-9)
Ik heb (nog) geen voorwaarden kunnen bedenken bij S-VHS, CD/VCD/SVCD en CD-i.
En ik was nog vergeten te vermelden dat jullie geen opslagmedia-afhankelijk (en/of gebruikers-afhankelijk) model hebben, wat ik dus juist wel zou willen hebben.
En wat bedoel je met sns bank Spiderpig?
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
John de Boer schreef op 27.10.2007 20:14:
Ben je verkouden Jan? neem een hoestdrankje ofzo ;P
Nee, ik vond het nogal onbeleefd dat je totaal niet reageerde op mijn posts in je topic.
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
Als je hier een beheerpagina voor wilt maken die PHP en MySQL gebruikt krijg je dan een dynamisch formulier. Ik stel me zo voor dat iemand een opslagmedium kiest uit een select. Aan de hand van de gekozen optie moeten dan daaronder de juiste formulierelementen verschijnen.
Je zou dit met JavaScript kunnen realiseren. Het is geen kinderachtig scriptje, maar het is wel te doen. Heb je ervaring met JavaScript?
Ik snap in elk geval welke kant je opwilt.
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
voorbeeld met AJAX gemaakt om te laten zien wat ik bedoel.
Ik heb een Er ontbreekt nog wel de selectie van een aantal voorwaarden, maar ik denk dat ik er nu zelf verder wel uitkom want ik snap het concept.
En ik zal nog wel enigszins moeten normaliseren, voordat ik het kan gaan uitwerken.
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
dynamisch_formulier.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Jan Koehoorn | Dynamisch Formulier</title>
<link rel="stylesheet" type="text/css" media="screen" href="reset.css" />
<link rel="stylesheet" type="text/css" media="screen" href="oop.css" />
<style type="text/css" media="screen">
form { padding: 10px; border: 1px solid #9f9; }
</style>
<script type="text/javascript" src="mootools/mootools.js"></script>
<script type="text/javascript">
window.addEvent ('load', function () {
$('medium').addEvent('change', function () {
var url = 'http://www.jankoehoorn.nl/dynamisch_formulier_ajax.php';
$('my_form').send ({
update: $('eigenschappen')
});
});
});
</script>
</head>
<body>
<div id="container">
<h1>Jan Koehoorn | Dynamisch Formulier</h1>
<form id="my_form" method="post" action="dynamisch_formulier_ajax.php">
<p>
<label for="medium">opslagmedium:</label>
<select id="medium" name="medium">
<option value="">kies een opslagmedium</option>
<option value="VHS / Betamax / Video2000">VHS / Betamax / Video2000</option>
<option value="S-VHS">S-VHS</option>
<option value="CD / VCD / SVCD">CD / VCD / SVCD</option>
<option value="CD-i">CD-i</option>
<option value="DVD">DVD</option>
</select>
</p>
<div id="eigenschappen">
<?php
require 'dynamisch_formulier_ajax.php';
?>
</div>
<p>
<input type="submit" value="opslaan" />
</p>
</form>
</div>
</body>
</html>
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Jan Koehoorn | Dynamisch Formulier</title>
<link rel="stylesheet" type="text/css" media="screen" href="reset.css" />
<link rel="stylesheet" type="text/css" media="screen" href="oop.css" />
<style type="text/css" media="screen">
form { padding: 10px; border: 1px solid #9f9; }
</style>
<script type="text/javascript" src="mootools/mootools.js"></script>
<script type="text/javascript">
window.addEvent ('load', function () {
$('medium').addEvent('change', function () {
var url = 'http://www.jankoehoorn.nl/dynamisch_formulier_ajax.php';
$('my_form').send ({
update: $('eigenschappen')
});
});
});
</script>
</head>
<body>
<div id="container">
<h1>Jan Koehoorn | Dynamisch Formulier</h1>
<form id="my_form" method="post" action="dynamisch_formulier_ajax.php">
<p>
<label for="medium">opslagmedium:</label>
<select id="medium" name="medium">
<option value="">kies een opslagmedium</option>
<option value="VHS / Betamax / Video2000">VHS / Betamax / Video2000</option>
<option value="S-VHS">S-VHS</option>
<option value="CD / VCD / SVCD">CD / VCD / SVCD</option>
<option value="CD-i">CD-i</option>
<option value="DVD">DVD</option>
</select>
</p>
<div id="eigenschappen">
<?php
require 'dynamisch_formulier_ajax.php';
?>
</div>
<p>
<input type="submit" value="opslaan" />
</p>
</form>
</div>
</body>
</html>
dynamisch_formulier_ajax.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
switch ($_POST['medium']) {
case '':
echo '<p>Kies een opslagmedium</p>';
break;
case 'VHS / Betamax / Video2000':
echo '<p>';
echo '<label for="duur">duur:</label>';
echo '<select id="duur" name="duur">';
echo '<option value="60">60</option>';
echo '<option value="90">90</option>';
echo '<option value="120">120</option>';
echo '<option value="180">180</option>';
echo '<option value="210">210</option>';
echo '<option value="240">240</option>';
echo '</select>';
echo '</p>';
break;
case 'DVD':
echo '<p>';
echo '<label for="systeem">systeem:</label>';
echo '<select id="systeem" name="systeem">';
echo '<option value="PAL">PAL</option>';
echo '<option value="NTS">NTS</option>';
echo '<option value="SECAM">SECAM</option>';
echo '</select>';
echo '</p>';
break;
default:
echo '<p>Hier moeten nog velden voor verzonnen worden ;-)</p>';
break;
}
}
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
switch ($_POST['medium']) {
case '':
echo '<p>Kies een opslagmedium</p>';
break;
case 'VHS / Betamax / Video2000':
echo '<p>';
echo '<label for="duur">duur:</label>';
echo '<select id="duur" name="duur">';
echo '<option value="60">60</option>';
echo '<option value="90">90</option>';
echo '<option value="120">120</option>';
echo '<option value="180">180</option>';
echo '<option value="210">210</option>';
echo '<option value="240">240</option>';
echo '</select>';
echo '</p>';
break;
case 'DVD':
echo '<p>';
echo '<label for="systeem">systeem:</label>';
echo '<select id="systeem" name="systeem">';
echo '<option value="PAL">PAL</option>';
echo '<option value="NTS">NTS</option>';
echo '<option value="SECAM">SECAM</option>';
echo '</select>';
echo '</p>';
break;
default:
echo '<p>Hier moeten nog velden voor verzonnen worden ;-)</p>';
break;
}
}
?>