Avatar billede jedimaster Nybegynder
13. april 2006 - 09:17 Der er 17 kommentarer og
1 løsning

Undersøg, valider og opdater.

Jeg har lavet en form på side1 med et textfelt (navn) og et skjult idfelt. Ved siden af har jeg lavet en select, hvorfra brugeren kan vælge et navn. Selectlisten bliver genereret fra en mySql tabel, den hedder tabel_navn og indeholder et id og et navne felt. Via et javascript bliver det valgte navn fra selecten kastet over i textfeltet, og id'et der hører til det valgte navn, bliver indsat i idfeltet.

Når så brugeren klikker på OK-knappen, bliver navnets id indsat i anden tabel, lad os kalde den tabel_film. - det er der jo ikke så mange ben i :-)

Hvis imidlertid det navn brugeren skal bruge ikke findes i selecten, skal han selv indtaste et.
Her kommer så spørgsmålet:

Hvordan laver jeg et script der tjekker der:
1. Tjekker om id == ' ' - for så har brugeren jo selv skrevet et navn.
2. Tjekker om det indtastede navn, hvis id == ' ', allerede findes i tabel_navn.

2.1 Hvis det indtastede navn allerede findes i tabel_navn, indsætter navnets id i tabel_film.

2.2 Hvis det indtastede navn ikke findes, skal navnet først skal sættes ind i tabel_navn, hvorefter det nyindsatte navns id skal sættes ind i tabel_film.

Lige lidt mere info:
Formen henviser til action='side2.php', på hvilken side jeg havde forestillet mig at scriptet skulle køre, og herefter viderestille til 'side3.php'.

Er det muligt??? og Hvordan gør jeg.
Avatar billede hmortensen Nybegynder
13. april 2006 - 09:24 #1
Måske sådan her:

$sql = mysql_query("SELECT id FROM tabel_navn WHERE navn = '$navn' LIMIT 1");
if (mysql_num_rows($sql) == 1)
{
  //Findes i forvejen
  mysql_query("INSERT INTO tabel_film (idFelt) VALUES ('".mysql_result($sql, 0)."')");
}
else
{
  //Findes ikke endnu
  mysql_query("INSERT INTO tabel_navn (navn) VALUES ('$navn')");
  mysql_query("INSERT INTO tabel_film (idFelt) VALUES ('".mysql_insert_id()."')";
}
Avatar billede jedimaster Nybegynder
13. april 2006 - 10:32 #2
Det virker sgu! - Men nu er problemet så bare det, at jeg har to variable - nemlig navn1 og navn2. Begge kører efter samme mønster som det forige. Kan du hjælpe med det hmortensen???
Avatar billede hmortensen Nybegynder
13. april 2006 - 10:33 #3
Altså ovenstående process skal køres igennem for både navn1 og navn2 ?
Avatar billede jedimaster Nybegynder
13. april 2006 - 10:35 #4
Yepper. Jeg har prøvet at duble koden, men så kommer der to rækker i min tabel_film. Det er ikke meningen, da der er plads til at skrive to navne i tabel_film.
Avatar billede hmortensen Nybegynder
13. april 2006 - 10:36 #5
Kan du ikke prøve at vise din database opbygning.
Avatar billede jedimaster Nybegynder
13. april 2006 - 10:39 #6
tabel_navn:
id, int
navn, text

tabel_film:
id, int
titel, text
skuespiller1, text (ovenover kaldet navn)
skuespiller2, text
... (flere rækker med  andre variable)

- Og gæt bare hvad det skal bruges til :-)
Avatar billede jedimaster Nybegynder
13. april 2006 - 10:40 #7
hov. tabel_navn hedder altså tabel_skuespiller !!!
Avatar billede hmortensen Nybegynder
13. april 2006 - 10:54 #8
Der er vel aldrig det samme antal skuespillere til hver film.
Måske du burde lave en tabel mere der binder flere skuespillere sammen med flere film.
Avatar billede jedimaster Nybegynder
13. april 2006 - 11:05 #9
Jeg har lavet 10 skuespiller felter i tabel_film. Hvis der ikke er kun er 1 skuespiller, står der bare NULL i den resterende 9 felter. Hvordan vil du foreslå jeg skulle bygge det op?
Avatar billede hmortensen Nybegynder
13. april 2006 - 11:07 #10
Film:
id,
titel,
årgang,
osv...


Skuespiller:
id,
navn


FilmSkuespiller:
id,
film_id,
skuespiller_id



Så kan den tredje tabel lave en sammnekædning mellem film og skuespiller.
Avatar billede jedimaster Nybegynder
13. april 2006 - 11:14 #11
Ja - det har du selvfølgelig ret i. Men bliver tabellen FilmSkuespiler ikke meget lang, hvis jeg har 1000 film og der i hver film er min. 3 skuespillere?

Men hvis du mener det virker bedst på denne måde, så er det det jeg gør!
Avatar billede hmortensen Nybegynder
13. april 2006 - 11:16 #12
Det ville være den rigtige måde at gøre det på. Så får du heller ikke null værdier, som man helst skal undgå.
Avatar billede hmortensen Nybegynder
13. april 2006 - 11:17 #13
Og, hvis du også skal ha instruktør med, så kan du ændre skuespiller tabelen til personer, og så tilføje endnu en tabel:

FilmInstruktør:
id,
film_id,
person_id

For en skuespiller kan også være en instruktør og omvendt.
Avatar billede jedimaster Nybegynder
13. april 2006 - 11:31 #14
OK! Så gør jeg det fame sådan.
Men hvis vi så tager udgangspunkt i, at der kun skal laves en skuespillerliste og en instruktørliste.

Så har vi vel 5 tabeller - jeg vil helst have instruktører og skuespillere for sig, dvs. tabel_film, tabel_skuespiller, tabel_director, tabel_filmSkuespiller og tabel_filmDirector.

Herefter har jeg lavet 10 textfelter til indtastning af skuespillere - alle 10 med tilhørende mulighed for valg via en menu.
Og på samme måde 10 textfelter til indtastning af instruktør. (der er kun et textfelt synligt - de andre kommer frem via et javascript, når man begynder at taste i det første felt).

Hvordan får jeg den så til at undersøge, validere og indsætte som jeg først ville have scriptet til?
Avatar billede hmortensen Nybegynder
13. april 2006 - 11:34 #15
Hvorfor afskille skuespiller og instruktør ?

Du har vel samme info om de to, så du kan lige så godt lave en fælles tabel. De bliver jo afskildt i de sammenkædnings tabeller.
Avatar billede jedimaster Nybegynder
13. april 2006 - 11:43 #16
Jeg vil helst have dem adskilt, ikke alle skuespillere er instruktører og omvendt. Så syntes jeg det er bedst at have dem i to separate lister - på den måde bliver selecten med henholdsvis instruktør og skuespiller heller ikke så lang.

Jeg skal i øvrigt også bruge fremgangsmåden separat, da jeg vil lave en slags "søgeord" på hver film. Der skal kunne skrives op til 10 søgeord på hver film (ligesom ved skuespiller), og dem lægger jeg jo heller ikke i samme tabel som skuespillerne :-)
Avatar billede hmortensen Nybegynder
13. april 2006 - 16:16 #17
Fik du løst det så ?
Avatar billede jedimaster Nybegynder
13. april 2006 - 17:29 #18
Jeg tror det virker - men har ikke "bygget" det helt færdigt. Men mange tak for hjælpen. - jeg vender sikkert tilbage ;-)
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