Avatar billede bombur Nybegynder
23. maj 2003 - 11:03 Der er 32 kommentarer og
1 løsning

Opdatering efter valg i dropdownmenu JScript

Jeg har 2 dropdownmenuer! Efter man har valgt noget i den første, skal den automatisk opdatere indholdet af den anden. Begge dropdownmenuer bliver genereret dynamisk fra min access database:

katRS = conn.Execute("SELECT * FROM kategori ORDER BY id ASC");

<select name="kategori" class="tekstfelt" id="kategori">
<%
while(!katRS.EOF) {
idk = katRS.Fields("id");
kat = katRS.Fields("kategori");
%>
<option value="<%=idk%>"><%=kat%></option>
<%
katRS.MoveNext();
}
%>
</select>

Den anden bliver dannet på samme måde, men skal altså bruge "idk" for at bestemme sit indhold!

Håber i kan hjælpe, jeg syntes det er ret svært! Husk jeg koder i JScript og ikke VBScript!

Rune
Avatar billede bombur Nybegynder
24. maj 2003 - 09:06 #1
Det kan da ikke passe at her ikke er en eneste der kan svare??

Jeg sætter pointsene op så!
Avatar billede nattevagten Nybegynder
24. maj 2003 - 09:21 #2
Du skal bare lave det samme en gang til, hvor du nu i din anden select statement sætter: "SELECT * FROM tabel WHERE " +Request("Kategori") +" ORDER BY id ASC"
Avatar billede bombur Nybegynder
24. maj 2003 - 10:40 #3
Nu har jeg lavet det som herunder:

ovr1RS = conn.Execute("SELECT * FROM overskrift WHERE kategoriid=" +Request("Kategori") +" ORDER BY id ASC");

Men den siger
Avatar billede bombur Nybegynder
24. maj 2003 - 10:43 #4
Ups kom lige til at trykke udfør for tidligt

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/mm12014/rune/Admin1.asp, line 70
Avatar billede bombur Nybegynder
24. maj 2003 - 10:44 #5
Men den kører jo også kun SELECT sætningen når den loader siden!? Så opdaterer den vel ikke når man så vælger noget nyt!?
Avatar billede roenving Novice
24. maj 2003 - 10:46 #6
Næ, men du kan jo lave noget onchange som udfører en opdatering -- og hvis det skal være rigtigt brugervenligt skal det kun ske clientside ...
Avatar billede bombur Nybegynder
24. maj 2003 - 10:57 #7
Ja det lyder rigtigt... men det er jo det jeg ikke kan finde ud af! :)
Det var derfor jeg oprettede spørgsmålet!
Avatar billede roenving Novice
24. maj 2003 - 11:00 #8
Ja, jeg har for få oplysninger til at kunne give dig mere ...

Jeg kan godt skrive en onchange-funktion, men hvad skal den reagere på og hvad skal den reagere til ?-)
Avatar billede roenving Novice
24. maj 2003 - 11:05 #9
Hvis du sørger for at lægge alle dine menu-oplysninger ind i f.eks. et array, kan vi jo tage fat i dem, når brugeren vælger ...
Avatar billede bombur Nybegynder
24. maj 2003 - 11:12 #10
Onchange funktionen skal virke på den ene dropdownmenu og skifte indholdet indholdet af den anden alt efter hvad brugeren vælger. Inholdet af den anden menu kan vi godt putte i arrays, men det skal være flere. Den skal lave et array for hver punkt i den første dropdown.
Det er jeg heller ikke helt klar over hvordan man gør. Begge dropdownmenuer henter jo deres informationer fra en database og er linket ved at alle records i nummer 2 har en record fra nummer 1 over sig!
Avatar billede bombur Nybegynder
24. maj 2003 - 14:30 #11
Det kan da ikke passe at der ikke er nogen der kan komme med et eksempel til mig. Det er 100 points og det er weekend, så i har fri til at svare :)
Avatar billede nattevagten Nybegynder
24. maj 2003 - 15:39 #12
Din select statement kan du ligge inde i den her:
<%
if Len(Request("Kategori"))>0 then
    select From......
end if
%>
Det skulle løse dit problem.
Avatar billede bombur Nybegynder
24. maj 2003 - 15:45 #13
Hvad er "Len"?
Og det der burde da heller ikke blive opdateret når først siden er loadet!
Browseren siger:
Microsoft JScript runtime (0x800A138F)
Object expected
Avatar billede nattevagten Nybegynder
24. maj 2003 - 19:40 #14
Len er lig med længden af en streng.
Altså dit tabeludtræk nr. 2 skal først og kun udføres såfremt der valgt noget i den første dropdown menu. Eller?
Avatar billede bombur Nybegynder
24. maj 2003 - 20:16 #15
Her er linket
http://web2.ikasths.dk/mm12014/rune/Admin1.asp
Den første dropdownmenu er "kategori" og den anden er "underkategori" og når siden loades skal "underkategori" vise de underkategorier der hører til kompetencer i dette tilfælde, fordi det er den der er valgt. Når så brugeren vælger noget nyt i "kategoriboksen" skulle den gerne opdatere indholdet af "underkategori" så det passer til den nye kategori!

:) håber det er forklaret så det ikke kun er mig der forstår det!
Avatar billede nattevagten Nybegynder
24. maj 2003 - 21:20 #16
okay - men så lad høre hvad dit problem er nu!
Avatar billede bombur Nybegynder
24. maj 2003 - 21:43 #17
Jammen mit problem er jo sådan set det det hele tiden har været... jeg kan ikke finde ud af hvordan jeg skal gøre det der. :) For det skal vel være en blanding af serverside og clientside!
Avatar billede nattevagten Nybegynder
24. maj 2003 - 23:08 #18
Jamen du kan godt lave noget smart med Clientside (spørg under javaScript). Men med ren serverside kan det gøre sådan her:
<%
'// 1. dropdown
katRS = conn.Execute("SELECT * FROM kategori ORDER BY id ASC");
%>

<select name="kategori" class="tekstfelt" id="kategori">
<%
while(!katRS.EOF) {
idk = katRS.Fields("id");
kat = katRS.Fields("kategori");
%>
<option value="<%=idk%>"><%=kat%></option>
<%
katRS.MoveNext();
}
%>
</select>



<%
'// 2. dropdown
if Len(Request("Kategori"))>0 then
    katRS2 = conn.Execute(""SELECT * FROM underkategori WHERE " +Request("Kategori") +" ORDER BY id ASC"");
   
    Response.Write ("<select name='kategori' class='tekstfelt' id='kategori'>");
    while(!katRS2.EOF) {
        Response.Write ("<option value='" +katRS2.Fields("id") +"'>" +katRS2.Fields("underkategori") +"</option>");
    katRS2.MoveNext();
    }
    Response.Write("</select>");
end if
%>
Avatar billede bombur Nybegynder
25. maj 2003 - 09:32 #19
Det er altså en underlig blanding kode du har der, noget er VBScript og noget er Javascript som jo er det jeg skal bruge! :D
Den der Len funktion er vist ikke javascript!?
Avatar billede nattevagten Nybegynder
25. maj 2003 - 14:14 #20
sorry ! - det er rigtigt. Plejer at kode i VB for det meste.
I JScript hedder den vist:
Kategori = Request("Kategori");
if (Kategori.lenght>0) {
  ...
}
Avatar billede bombur Nybegynder
25. maj 2003 - 15:23 #21
Det virker delvist :)
Stort spring fremad... men desværre opdaterer den jo ikke når man vælger noget nyt i "kategori" drop downen. Det vil sige at man i nummer to kun har de muligheder den har loadet fra starten!
Men det går da den rigtige vej!
Avatar billede bombur Nybegynder
25. maj 2003 - 15:30 #22
Jeg har lige opdaget at det egentligt ikke virker som jeg troede alligevel! Der har været nogen inde og slette nogle informationer i db'en så det bare så ud som om den havde sorteret :D
Så kan man jo lade være med at ligge linket frit ud på sådan en side her!
Avatar billede bombur Nybegynder
25. maj 2003 - 15:33 #23
Den har stadig problemer med at fange kategori! Den får simpelt hen ikke noget resultat af:
Kategori = Request("Kategori");
Avatar billede nattevagten Nybegynder
25. maj 2003 - 16:32 #24
Kunne du ikke prøve at sende mig din database (Access?), så skal jeg lige strikke noget sammen.
claus_at_danlogic_dot_dk
Avatar billede bombur Nybegynder
25. maj 2003 - 16:54 #25
Det er Access ja... er det der din E-mail?? Det ligner ikke een! :)
Jeg kan ikke se den her på eksperten nemlig, der er åbantbart nogle problemer lige nu!
Avatar billede nattevagten Nybegynder
25. maj 2003 - 17:49 #26
det er min email. Du skal bare skifte _at_ ud med @ og _dot_ ud med et punktum.
Avatar billede nattevagten Nybegynder
25. maj 2003 - 18:48 #27
Prøv med denne kode. Den virker hos mig:


<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
//-->
</script>

<%
Kategori = Request("Kategori");
// 1. dropdown
katRS = conn.Execute("SELECT * FROM kategori ORDER BY id ASC");
%>

<select name="kategori" class="tekstfelt" id="kategori" onChange="MM_jumpMenu('parent',this,0)">
<%
while(!katRS.EOF) {
idk = katRS.Fields("id");
kat = katRS.Fields("kategori");
%>
<option value="NAVN_PÅ_SIDE.asp?Kategori=<%=idk%>" <%if(parseInt(idk)==parseInt(Kategori)) Response.write("selected");%>><%=kat%></option>
<%
katRS.MoveNext();
}
%>
</select>




<%
// 2. dropdown
if (Kategori>0) {

    katRS = conn.Execute("SELECT * FROM Overskrift WHERE Kategoriid=" +Kategori +" ORDER BY id ASC");
   
    Response.Write ("<select name='kategori' class='tekstfelt' id='kategori'>");
    while(!katRS.EOF) {
        Response.Write ("<option value='" +katRS.Fields("Kategoriid") +"'>" +katRS.Fields("overskrift") +"</option>");
    katRS.MoveNext();
    }
    Response.Write("</select>");
}
%>
Avatar billede bombur Nybegynder
25. maj 2003 - 21:43 #28
Wee... det virker! Men jeg har dog stadig et problem!

value="admin1.asp?Kategori=<%=idk%>"

Det sender jo en totalt underlig value med til næste side! Hvordan piller jeg det sidste tal ud af teksten?

Jeg er glad for at du har fået det til at virke, du har også fået brugt noget tid på det nu! Så jeg sætter altså lønnen op til dig. Selvom det kun er point.
Avatar billede nattevagten Nybegynder
25. maj 2003 - 21:56 #29
Sådan:
Kategori = Request("Kategori");
Avatar billede bombur Nybegynder
25. maj 2003 - 22:01 #30
Jammen da ikke på næste side... for at jeg kan putte det rigtige kategoriid i databasen skal jeg jo have det med til næste side! Når jeg fanger det på næste side sådan:
kat = Request.Form("kategori");
Kommer det til at se ud sådan:
admin1.asp?Kategori=1

Det kan den ikke æde... jeg skal have filtreret tallet fra det andet!?
Avatar billede nattevagten Nybegynder
25. maj 2003 - 22:04 #31
Giv den et andet navn, eller lig den i en session: Session("kategori) = Request("Kategori");
Så har du den ved hånden hele tiden.
Avatar billede bombur Nybegynder
25. maj 2003 - 22:15 #32
Ja det kunne jeg gøre... tak for hjælpen!
Avatar billede nattevagten Nybegynder
26. maj 2003 - 04:52 #33
u r welcome
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
Kurser inden for grundlæggende programmering

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