Ik heb een tabel met allerlei filmgenres (id en genres). Een gebruiker kan een nieuwe film toevoegen en daarbij genres opgeven. Ik heb ook een tabel met filminformatie, deze wil ik met behulp van Joins aan de genre tabel koppelen (nog geen idee hoe, nog nooit eerder met joins gewerkt).
Nu moeten bestaande genres niet nog een keer in de tabel genres ingevoerd worden, van bestaande genres heb ik alleen het genre ID nodig om deze in de tabel met filminformatie te stoppen. Genres die niet bestaan moeten in de database worden ingevoerd en vervolgens heb ik het genre ID van het zojuist gemaakte genre nodig om deze vervolgens weer in de tabel met filminformatie in te voeren.
Op zich niet zo moeilijk te realiseren, ik heb alleen het idee dat de onderstaande methode die ik geklust heb een stuk mooier / eenvoudiger kan. Ik weet alleen niet hoe
Misschien met wat geavanceerde SQL queries? Mijn SQL is niet zo goed, dus ik zou het niet weten.
Hier de PHP code die ik gebruik:
Nu moeten bestaande genres niet nog een keer in de tabel genres ingevoerd worden, van bestaande genres heb ik alleen het genre ID nodig om deze in de tabel met filminformatie te stoppen. Genres die niet bestaan moeten in de database worden ingevoerd en vervolgens heb ik het genre ID van het zojuist gemaakte genre nodig om deze vervolgens weer in de tabel met filminformatie in te voeren.
Op zich niet zo moeilijk te realiseren, ik heb alleen het idee dat de onderstaande methode die ik geklust heb een stuk mooier / eenvoudiger kan. Ik weet alleen niet hoe
Hier de PHP code die ik gebruik:
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
| $dbGenres = array(); $dbGenres[] = htmlspecialchars(addslashes($_POST['genre1'])); $dbGenres[] = htmlspecialchars(addslashes($_POST['genre2'])); $dbGenres[] = htmlspecialchars(addslashes($_POST['genre3'])); $genreIDs = array(); foreach ($dbGenres as $genre) { if ($genre !== "") { $selectGenreQuery = "SELECT `id` FROM `genres` WHERE `name` = '{$genre}'"; $execQuery = mysql_query($selectGenreQuery) or die("MySQL error: could not select genre"); $countResult = mysql_num_rows($execQuery); // Genre does not exist, insert it into the database and retrieve ID. if ($countResult == 0) { // Inserting genre 1 in database $insertGenreQuery = "INSERT INTO `genres` (`name`) VALUES ('{$genre}')"; mysql_query($insertGenreQuery) or die("MySQL error: failed to insert genre1"); // Retrieving id of just created genre $getIDQuery = "SELECT `id` FROM `genres` WHERE `name` = '{$genre}'"; $execQuery = mysql_query($getIDQuery) or die("MySQL error: could not select ID of new genre"); $genreIDs[] = mysql_result($execQuery, 0); } else { // Genre already exists. $genreIDs[] = mysql_result($execQuery, 0); } } } |