Avatar billede vipo Nybegynder
06. september 2008 - 12:55 Der er 13 kommentarer og
1 løsning

tilføj data til flere kategorier

Hej

Det jeg skal have hjælp til er at finde ud af hvordan jeg kan tilføje en film til flere kategorier på engang..

Mine tabeller ser sådan her ud:
(meget simpelt til dette spg.)

CREATE TABLE `kategori` (
  `id` int(255) NOT NULL auto_increment,
  `titel` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
)
Hvor id er unikt nr.
og titel er navnet på kategorien. fx. action, komedie og eventyr


Også har jeg en tabel som indeholder alle mine film.

CREATE TABLE `film` (
  `id` int(255) NOT NULL auto_increment,
  `navn` varchar(255) NOT NULL,
  `kategori` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
)
id = unikt nr.
navn = fx die hard
kategori = med den kategori den skal tilhører fx.action, komedie


Mit problem ligger i hvordan jeg rent praktisk laver min backend, så jeg kan tilføje en film til flere kategorier
på engang, fx at filmen kan tilhøre kategorien action og komedie.

Jeg have tænkt på at bruge noget multiple select til at vælge kategorier med.
Men jeg kan simhelthend ikke finde nogle løsning på hvordan jeg skal smide denne data ind i min tabel, hvor filmen tilhører flere kategorier.
Fordi jeg vil nemlig også gerne kunne hente min data ud på denne måde: ?p=film&kat=action
Hvor den så kun henter film ud som har action som kategori.


Jeg søger ikke en komplet php kode men bare en løsning på problemet.

På forhånd tak
/Emil Hansen
Avatar billede jakobdo Ekspert
06. september 2008 - 12:57 #1
Det kan du ved at lave en tabel som hedder:

kategori_film
film_id
kategori_id

Så kan du nemlig gemme:

film_id = 1
kategori_id = 2

film_id = 1
kategori_id = 4

Som jo så betyder film_id 1 både er kategori 2 og 4
Avatar billede vipo Nybegynder
06. september 2008 - 13:04 #2
Tak for dit svar.

Men hvordan vil du så tilføje filmen.?
som jeg lige læser det der, vil du tilføje filmen to gange, altså første gang med kategori 2 også igen med kategori 4?
Avatar billede jakobdo Ekspert
06. september 2008 - 13:27 #3
Korrekt.
Du tilføjer filmen 1 gang i film tabellen.
Så har du en måde at tilføje kategorier på, checkboxe, tekstfelt eller lign.
Men hvis du f.eks. har 4 kategorier, så skal der laves 4 insert i kategori_film tabellen.
Avatar billede vipo Nybegynder
06. september 2008 - 13:34 #4
Ok, nu tror jeg, jeg er lidt med på hvad du mener.
Men hvordan vil du lave de 4 insert, det var også en af de førstge ideer jeg fik. Men jeg kan ikke lige gemmenskue hvordan disse 4 insert bliver kørt?
Avatar billede jakobdo Ekspert
06. september 2008 - 13:53 #5
Hvordan vælger du dine kategorier nu eller hvordan vil du vælge dem ?
Dropdown, checkbox eller ?
Avatar billede vipo Nybegynder
06. september 2008 - 14:06 #6
Nok til at starte med vil jeg bruge checkbox, da der ikke er så mange kategorier endnu. Men i fremtiden vil jeg nok bruge multiple select
Avatar billede jakobdo Ekspert
06. september 2008 - 15:23 #7
Hvis du så btruger: <input type="ckeckbox" name="category['ID_PÅ:KATEGORI']" />

Kan du lave
foreach($_POST['category'] as $id => $value){
//din insert i kategori_film
}
Avatar billede vipo Nybegynder
06. september 2008 - 15:48 #8
Hej igen

Som jeg har forstået det har jeg lavet min kode sådan her:

<form action="add_movie.php" method="post">
Titel: <input name="titel" type="text" /><br>
Kat 1. <input type="checkbox" name="category['1']" />
Kat 2. <input type="checkbox" name="category['2']" />
<input name="opret" type="submit" value="Opret film" />
</form>

<?php
if($_POST["opret"]){
   
foreach($_POST['category'] as $id => $value){
mysql_query("INSERT INTO wish_list (film_id, kategori_id) VALUES ('$_POST[titel]', '$_POST[category]')") OR DIE(mysql_error());
}

}
?>
Du kan se det online her: http://viposoft.dk/dev0/add_movie.php
Men det virker ikke..
Hvis jeg ikke vælger nogle kategori siger den Warning: Invalid argument supplied for foreach() in /home/dan19312/public_html/dev0/add_movie.php on line 14
og hvis jeg vælger en eller to kategorier skriver den Unknown column 'film_id' in 'field list'
Og min tabel ser sådan her ud nu:
  `id` int(255) NOT NULL auto_increment,
  `film_id` varchar(255) NOT NULL,
  `kategori_id` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
)

Jeg forstår ikke lige hvorfor den kommer med disse fejl. håber du kan se det?

Men jeg vil gerne nu sige tak for din hjælp du har givet mig end til nu.
Avatar billede jakobdo Ekspert
06. september 2008 - 17:06 #9
ret lige
Kat 1. <input type="checkbox" name="category['1']" />
Kat 2. <input type="checkbox" name="category['2']" />
til:
Kat 1. <input type="checkbox" name="category[1]" />
Kat 2. <input type="checkbox" name="category[2]" />

Og ret: mysql_query("INSERT INTO wish_list (film_id, kategori_id) VALUES ('$_POST[titel]', '$_POST[category]')") OR DIE(mysql_error());
til:
mysql_query("INSERT INTO wish_list (film_id, kategori_id) VALUES ('$_POST[titel]', '$id')") OR DIE(mysql_error());
Avatar billede vipo Nybegynder
06. september 2008 - 17:12 #10
Hej jakobdo
Du er for god, har fået det til at virke med din hjælp. Det er bare så super godt.. Jeg takker for din hjælp, smid du bare et svar. :)
Avatar billede jakobdo Ekspert
07. september 2008 - 00:20 #11
Svar!
Avatar billede jakobdo Ekspert
07. september 2008 - 00:20 #12
Og angående: Kommentar: vipo - 06/09-2008 17:12:33, så ved jeg det godt! :o)
Avatar billede jakobdo Ekspert
07. september 2008 - 12:00 #13
Takker for point.
Avatar billede vipo Nybegynder
07. september 2008 - 12:20 #14
Mig der takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester