Avatar billede web_the_world Nybegynder
21. september 2001 - 20:45 Der er 22 kommentarer og
1 løsning

frasortering af navne

Hejsa

Jeg har lavet et drømmeholdsspil på en hjemmeside - hvor man skal vælge nogle forskellige spillere. Der er kun et problem, at man kun kan vælge den samme spillere en gang, i f. eks. herresingle - i øjeblikket kommer Anders Bagger frem i både herresingle 1 og herresingle 2. Hvordan sørge man får, at hvis man har valgt ham i herresingle 1, at han så ikke er valgmulighed i herresingle 2 ??

HJÆLP - I kan se spillet på www.humlesupport.f2s.com/drommea.htm - Man kan ikke sende det endnu - da jeg ikke kan få CGI script til at virke, men det er et andet spørgsmål.
Avatar billede superib Nybegynder
21. september 2001 - 20:48 #1
Du bruger DISTINCT i dit sql query, lige efter SELECT...
Avatar billede web_the_world Nybegynder
21. september 2001 - 21:03 #2
Til Superib:

Kan du vise mig et eksempel på hvordan jeg skal skrive det ?? <select>...osv - hvordan ??
Avatar billede superib Nybegynder
21. september 2001 - 21:07 #3
SELECT DISTINCT spiller FROM spiller_tabel WHERE bla bla bla....
Avatar billede Slettet bruger
22. september 2001 - 19:57 #4
Du kan også bare gøre det \"on-the-fly\" med java script:

<script>
tjekSpillere(frm) {
ind1 = frm.herresingle1.selectedIndex;
ind2 = frm.herresingle2.selectedIndex;

if (ind1 != 0 && ind2 != 0) {
if (ind1 == ind2) alert(\"Du skal vælge to forskellige spillere!\");
frm.herresingle2.selectedIndex = 0;
}
}
</script>

Du bliver så bare nødt til at ændre name på dine <select>-tags, og tilføje en eventhandler, sådan her:

Vælg til Herresingle 1:<br>
<select name=\"herresingle1\" onChange=\"tjekSpillere(this.form)\";>
<OPTION> -Drømmeholdet</OPTION> <OPTION>Anders bagger</OPTION>
<OPTION>Anders Trøck-Nielsen</OPTION> <OPTION>Christian T. Schmidtt</OPTION> <OPTION>Flemming Nommesen</OPTION> <OPTION>Jacob Holst</OPTION> <OPTION>Mikael Lytzen</OPTION><OPTION>              Mikkel Thulin</OPTION> <OPTION>Nicklas Høj</OPTION> <OPTION>Peter Hjalting</OPTION><OPTION>Peter Holst</OPTION> <OPTION>Peter Kornerup</OPTION><OPTION>Peter Simonsen</OPTION> <OPTION>Søren Jacobsen</OPTION><OPTION>Thomas Huusom</OPTION> <OPTION>Tobias Nygaard</OPTION>
</select>
<BR>
Vælg til Herresingle 2:<br>
<select name=\"herresingle2\" onChange=\"tjekSpillere(this.form)\";>
<OPTION> -Drømmeholdet</OPTION> <OPTION>Anders bagger</OPTION>
<OPTION>Anders Trøck-Nielsen</OPTION> <OPTION>Christian T. Schmidtt</OPTION> <OPTION>Flemming Nommesen</OPTION> <OPTION>Jacob Holst</OPTION> <OPTION>Mikael Lytzen</OPTION><OPTION>              Mikkel Thulin</OPTION> <OPTION>Nicklas Høj</OPTION> <OPTION>Peter Hjalting</OPTION><OPTION>Peter Holst</OPTION> <OPTION>Peter Kornerup</OPTION><OPTION>Peter Simonsen</OPTION> <OPTION>Søren Jacobsen</OPTION><OPTION>Thomas Huusom</OPTION> <OPTION>Tobias Nygaard</OPTION>
</select>
Avatar billede Slettet bruger
22. september 2001 - 19:59 #5
Hov, jeg har placeret semikolonnet på den forkerte side af gåseøjet i onChange eventhandlerne... Sådan her skal de to <select>-koder se ud:
<select name=\"herresingle1\" onChange=\"tjekSpillere(this.form);\">
<select name=\"herresingle2\" onChange=\"tjekSpillere(this.form);\">
Avatar billede Slettet bruger
22. september 2001 - 20:06 #6
Jeg håber du kan se, hvad du skal gøre, hvis du også vil bruge scriptet til at tjekke de andre drop-downs... (hvis ikke, så bare sig til!)
Avatar billede Slettet bruger
30. september 2001 - 12:50 #7
Øhmm... ??? Er du der stadig? ?-)
Avatar billede web_the_world Nybegynder
02. oktober 2001 - 19:26 #8
Ja - men jeg kan ikke få scriptet til at virke ??
Avatar billede Slettet bruger
05. oktober 2001 - 16:26 #9
Der er også en fejl mit script! Sådan skal det se ud:

<script>
tjekSpillere(frm) {
ind1 = frm.herresingle1.selectedIndex;
ind2 = frm.herresingle2.selectedIndex;

if (ind1 != 0 && ind1 == ind2) {
alert(\"Du skal vælge to forskellige spillere!\");
frm.herresingle2.selectedIndex = 0;
}
}
</script>
Men jeg kan ikke finde nogle syntaks-fejl... Hvilken fejl får du, og vil du ikke være så venlig at lægge en prøve af din side online, så jeg kan se fejlen?
Avatar billede Slettet bruger
05. oktober 2001 - 16:33 #10
Nej, der skal selvfølgelig stå \"function \" foran \"tjekSpillere(frm)\", sådan her:

function tjekSpillere(frm) {
Avatar billede Slettet bruger
05. oktober 2001 - 16:34 #11
Nu virker det tilgengæld!
Avatar billede web_the_world Nybegynder
06. oktober 2001 - 00:51 #12
Ja - nu virker det - jeg er dog ikke helt færdig med din hjælp - jeg vender tilbage i morgen - jeg skal have afvide hvordan jeg ved de andre også - men med lidt andre regler....
Avatar billede Slettet bruger
06. oktober 2001 - 15:00 #13
Okeeday!
Avatar billede web_the_world Nybegynder
08. oktober 2001 - 23:55 #14
Ok - her kommer det:

Det du har alvet PHOENIXV er perfekt, men herresingle reserve skal bare også med i frasorteringen...Forstår du hvad jeg mener - i det du så flot har lavet er det kun herre 1 og herre 2 der er med !.

Og så skal jeg høre om jeg i de andre valg bare ændre herresingle til damesingle etc.....

Håber du kan hjælpe

Avatar billede Slettet bruger
09. oktober 2001 - 15:27 #15
Jeg har desværre lidt travlt! Du må vente til i morgen...
Avatar billede Slettet bruger
10. oktober 2001 - 11:07 #16
<script>
function tjekSpillere(frm) {
hs1 = frm.herresingle1.selectedIndex;
hs2 = frm.herresingle2.selectedIndex;
hs3 = frm.herresingle3.selectedIndex;

if (hs1 != 0) {
if (hs1 == hs2 || hs2 == hs3 || hs1 == hs3) {
alert(\"Du skal vælge tre forskellige spillere i herresingle!\");
frm.herresingle3.selectedIndex = 0;
}
}

ds1 = frm.damesingle1.selectedIndex;
ds2 = frm.damesingle2.selectedIndex;

if (d1 != 0) {
if (ds1 == ds2) {
alert(\"Du skal vælge to forskellige spillere i damesingle!\");
frm.damesingle2.selectedIndex = 0;
}
}

hd1 = frm.herredouble1.selectedIndex;
hd2 = frm.herredouble2.selectedIndex;
hd3 = frm.herredouble3.selectedIndex;

if (hd1 != 0) {
if (hd1 == hd2 || hd2 == hd3 || hd1 == hd3) {
alert(\"Du skal vælge tre forskellige spillere i herredouble!\");
frm.herredouble3.selectedIndex = 0;
}
}

dd1 = frm.damedouble1.selectedIndex;
dd2 = frm.damedouble2.selectedIndex;

if (dd1 != 0) {
if (dd1 == dd2) {
alert(\"Du skal vælge to forskellige spillere i damedouble!\");
frm.damedouble2.selectedIndex = 0;
}
}
}
</script>

Sådan! Nu tjekker scriptet for alle fejl i din form og alerter om hver enkel fejl. Det, du nu skal gøre (udover at rette i scriptet) er, at ændre følgende namen i din form:
herresingle-1 til herresingle1
herresingle-2 til herresingle2
Herre-res. til herresingle3
Damesingle til damesingle1
Damesingle-res. til damesingle2
herredouble-1 til herredouble1
herredouble-2 til herredouble2
herredouble-res. til herredouble3
Damedouble til damedouble1
Damedouble-res. til damedouble2

Hvis du kun vil have, at brugeren bliver alert\'et én gang, hver gang han sumbitter, så indsæt \"return;\" i slutningen af hveranden if-sætning, fx:

if (hd1 != 0) {
if (hd1 == hd2 || hd2 == hd3 || hd1 == hd3) {
alert(\"Du skal vælge tre forskellige spillere i herredouble!\");
frm.herredouble3.selectedIndex = 0;
return; //Her er den!
}
}

og

if (ds1 != 0) {
if (ds1 == ds2) {
alert(\"Du skal vælge tre forskellige spillere i herredouble!\");
frm.damesingle2.selectedIndex = 0;
return; //Her er den igen!
}
}
Avatar billede web_the_world Nybegynder
12. oktober 2001 - 17:37 #17
Hej igen PHOENIXV

Jeg har lidt problemer med scriptet - se mine problemer på www.humlesupport.f2s.com/drommea.htm
Avatar billede Slettet bruger
12. oktober 2001 - 22:31 #18
Ja, jeg kan godt se det! Jeg har dummet mig lidt! Her er mit forslag: Lad det hele først blive tjekket, når formen bliver submittet. Det er nogen gange også mere brugervenligt for den besøgende. Gør sådan her med dit <form>-tag:

<form method=\"post\" action=\"/host/cgi-bin/sendmail.pl\" onSubmit=\"return tjekSpillere(this);\">

Slet alle onChange=\"bla bla bla\" fra <select>-taggene.

Og indsæt dette script istedet for det gamle:

<script>
function tjekSpillere(frm) {
hs1 = frm.herresingle1.selectedIndex;
hs2 = frm.herresingle2.selectedIndex;
hs3 = frm.herresingle3.selectedIndex;

if (hs1 != 0) {
if (hs1 == hs2 || hs2 == hs3 || hs1 == hs3) {
alert(\"Du skal vælge tre forskellige spillere i herresingle!\");
frm.herresingle3.selectedIndex = 0;
return false;
}
}

ds1 = frm.damesingle1.selectedIndex;
ds2 = frm.damesingle2.selectedIndex;

if (d1 != 0 && ds1 == ds2) {
alert(\"Du skal vælge to forskellige spillere i damesingle!\");
frm.damesingle2.selectedIndex = 0;
return false;
}

hd1 = frm.herredouble1.selectedIndex;
hd2 = frm.herredouble2.selectedIndex;
hd3 = frm.herredouble3.selectedIndex;

if (hd1 != 0) {
if (hd1 == hd2 || hd2 == hd3 || hd1 == hd3) {
alert(\"Du skal vælge tre forskellige spillere i herredouble!\");
frm.herredouble3.selectedIndex = 0;
return false;
}
}

dd1 = frm.damedouble1.selectedIndex;
dd2 = frm.damedouble2.selectedIndex;

if (dd1 != 0 && dd1 == dd2) {
alert(\"Du skal vælge to forskellige spillere i damedouble!\");
frm.damedouble2.selectedIndex = 0;
return false;
}
}
</script>

Se et eksempel på http://phoenixv.whitehat.dk/div/drommea.html
Avatar billede Slettet bruger
12. oktober 2001 - 22:35 #19
Nej, det virker ikke helt alligevel... Kommer tilbage og tjekker. Måske i morgen, måske om over en uge :-( Ses!
Avatar billede Slettet bruger
13. oktober 2001 - 13:01 #20
Nu har jeg fået det til at virke! Jeg har smidt hele tjekket ind i én if-sætning, så nu får man bare en besked om, at man skal vælge forskellige spillere til disciplinerne, og at man ikke må undlade at vælge en spiller på en plads!
Du kan tjekke scriptet på http://phoenixv.whitehat.dk/div/drommea.html
Avatar billede Slettet bruger
25. oktober 2001 - 17:02 #21
Sorry, linket virker ikke... Jeg venter lige nogle dage og håber på, at serveren kommer op igen, ellers må jeg jo lave det hele én gang til! :-(
Avatar billede Slettet bruger
30. oktober 2001 - 15:51 #22
Ny URL: http://www.friserverplads.dk/phoenixv/drommea.html
Bare sig til, hvis noget skal ændres!
Avatar billede Slettet bruger
06. november 2001 - 15:35 #23
Mange tak for points!
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