hellomoto Postad 23 november, 2006 Share Postad 23 november, 2006 hej igen! Den här gången hoppas jag att mitt problem blir enklare att lösa Jag har en sida som visar alla gjorda anmälningar till olika kurser. Jag vill att man genom en rullist som listar alla kurserna från tblKurs, ska kunna välja en kurs och se alla som är anmälda till den (deras info finns i tblDeltagare). Själva funktionen då. Där frågetecknet är undrar jag vad som ska stå för att den ska ta det id som blir beroende på vilken kurs man väljer att se. [log]<% Dim sortera If Request.QueryString("sortera") = "" Then sortera = "id" 'standradkolumnen Else sortera = Request.QueryString("sortera") End If Set Connect = Server.CreateObject("ADODB.Connection") Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("/db/anmalan.mdb") sql = "Select * From tblDeltagare WHERE id = ?" %>[/log] Den här koden hämtar kurserna från tblKurs. Den röda koden visar mitt misslyckade försök till att länka. [log]<% Set Connect = Server.CreateObject("ADODB.Connection") Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("/db/anmalan.mdb") strSQL = "SELECT id, strKursnamn FROM tblKurs ORDER BY id ASC" Set RecSet = Connect.Execute(strSQL) %> <select name="dans" id="dans"> <% RecSet.MoveFirst() %> <% Do Until RecSet.Eof %> <option value="visa.asp?sortera=<% =RecSet("id") %>"><% =RecSet("strKursnamn") %></option> <% RecSet.MoveNext Loop RecSet.Close Set RecSet= nothing Connect.Close Set Connect = nothing %> </select>[/log] Hoppas jag har kunnat förklara någorlunda begripligt. [inlägget ändrat 2006-11-23 14:32:29 av hellomoto] Länk till kommentar Dela på andra webbplatser More sharing options...
Codler Postad 23 november, 2006 Share Postad 23 november, 2006 så här skulle jag ha gjort: <% Dim sortera If not Request.QueryString("sortera") = "" Then sortera = Request.QueryString("sortera") Set Connect = Server.CreateObject("ADODB.Connection") Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("/db/anmalan.mdb") sql = "Select * From tblDeltagare WHERE id = " & sortera else Set Connect = Server.CreateObject("ADODB.Connection") Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("/db/anmalan.mdb") strSQL = "SELECT id, strKursnamn FROM tblKurs ORDER BY id ASC" Set RecSet = Connect.Execute(strSQL) %> <select name="sortera" id="sortera"> <% RecSet.MoveFirst() %> <% Do Until RecSet.Eof %> <option value="<% =RecSet("id") %>"><% =RecSet("strKursnamn") %></option> <% RecSet.MoveNext Loop RecSet.Close Set RecSet= nothing Connect.Close Set Connect = nothing %> </select> End If %> om du kan berätta hur din form taggen ser ut så kanska jag kan utveckla koden ngt bättre. Länk till kommentar Dela på andra webbplatser More sharing options...
Cluster Postad 23 november, 2006 Share Postad 23 november, 2006 Hoppas jag har kunnat förklara någorlunda begripligt.Nja, hyfsat att förstå (tror jag) om man följt din tidigare tråd. Jag tolkar ditt önskemål som: Du vill ha en sida som har en dropdownlista. Dropdownlistan skall lista alla kurser som finns i databastabellen tblKurs. När man väljer (ska det vara på onChange eller onSubmit?) någon kurs i denna lista så skall sidan visa namnet på alla som är anmälda till den valda kursen. Personer som kan vara anmälda till en kurs finns i tabellen tblDeltagare. Personer som är anmälda till en kurs har kursens id sparat i fältet kursid. Stämmer det (i så fall varför skrev du inte det)? Om det är så du vill ha det kan du testa:[log] [MÄRK]<%[/MÄRK] strKursid = [b]Request[/b]([GRÅ]"kursid"[/GRÅ]) [color="#0000ff"]Set[/color] conn = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.Connection"[/GRÅ]) connStr = [GRÅ]"Provider=Microsoft.Jet.OLEDB.4.0; Data Source="[/GRÅ] & [b]Server[/b].MapPath([GRÅ]"/db/anmalan.mdb"[/GRÅ]) conn.open connStr [color="#0000ff"]Set[/color] RS = conn.[color="#0000ff"]Execute[/color]([GRÅ]"SELECT id, strKursnamn FROM tblKurs ORDER BY id ASC"[/GRÅ]) [color="#0000ff"]If[/color] [color="#0000ff"]Not[/color] RS.EOF [color="#0000ff"]Then[/color] [MÄRK]%>[/MÄRK] <form method=[GRÅ]"post"[/GRÅ] action=[GRÅ]"?"[/GRÅ]> <[color="#0000ff"]Select[/color] name=[GRÅ]"kursid"[/GRÅ]> [MÄRK]<%[/MÄRK] [color="#0000ff"]Do[/color] Until RS.EOF [color="#0000ff"]If[/color] [color="#0000ff"]CStr[/color](strKursid)=[color="#0000ff"]CStr[/color](RS([GRÅ]"id"[/GRÅ])) [color="#0000ff"]Then[/color] strSel=[GRÅ]"SELECTED"[/GRÅ] [color="#0000ff"]Else[/color] strSel=[GRÅ]""[/GRÅ] [color="#0000ff"]End[/color] [color="#0000ff"]If[/color] [MÄRK]%>[/MÄRK]<option value=[GRÅ]"<% =RS("[/GRÅ]id[GRÅ]") %>"[/GRÅ] [MÄRK]<%[/MÄRK]=strSel%>>[MÄRK]<%[/MÄRK] =RS([GRÅ]"strKursnamn"[/GRÅ]) [MÄRK]%>[/MÄRK]</option>[MÄRK]<%[/MÄRK] RS.MoveNext [color="#0000ff"]Loop[/color] [MÄRK]%>[/MÄRK] </[color="#0000ff"]Select[/color]> <input type=[GRÅ]"submit"[/GRÅ] value=[GRÅ]"Visa"[/GRÅ]> </form>[MÄRK]<%[/MÄRK] [color="#0000ff"]End[/color] [color="#0000ff"]If[/color] [color="#0000ff"]Set[/color] RS= [color="#0000ff"]Nothing[/color] [color="#0000ff"]If[/color] strSort<>[GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color] [color="#0000ff"]Set[/color] RS = conn.[color="#0000ff"]Execute[/color]([GRÅ]"SELECT COUNT(*), strFornamn, strEfternamn FROM tblDeltagare WHERE kursid="[/GRÅ]&strKursid&[GRÅ]""[/GRÅ]) [color="#0000ff"]If[/color] [color="#0000ff"]Not[/color] RS.EOF [color="#0000ff"]Then[/color] [b]Response[/b].Write([GRÅ]"<p>"[/GRÅ]&RS(0)&[GRÅ]"st anmälda till kursen</p><hr>"[/GRÅ]) [color="#0000ff"]Do[/color] Until RS.EOF i=i+1 [b]Response[/b].Write(i&[GRÅ]". "[/GRÅ]&RS([GRÅ]"strFornamn"[/GRÅ])&[GRÅ]" "[/GRÅ]&RS([GRÅ]"strEfternamn"[/GRÅ])&[GRÅ]"<br>"[/GRÅ]) RS.MoveNext [color="#0000ff"]Loop[/color] [b]Response[/b].Write([GRÅ]"<hr>"[/GRÅ]) [color="#0000ff"]Else[/color] [b]Response[/b].Write([GRÅ]"Inga anmälda till kursen!"[/GRÅ]) [color="#0000ff"]End[/color] [color="#0000ff"]If[/color] [color="#0000ff"]Set[/color] RS = [color="#0000ff"]Nothing[/color] [color="#0000ff"]End[/color] [color="#0000ff"]If[/color] conn.Close [color="#0000ff"]Set[/color] conn = [color="#0000ff"]Nothing[/color] [MÄRK]%>[/MÄRK] [/log]Ladda ned från: http://eforum.kicks-ass.net/codeview/?file=anmalan.asp'>http://eforum.kicks-ass.net/codeview/?file=anmalan.asp [edit:]Är det meningen att en deltagare enbart ska kunna vara anmäld till en kurs i taget eller är det: a) Jag som inte förstått hur man anmäler sig till en kurs? Dålig databasdesign? /Cluster ------------------------------------------------------------ Ditt vetande är värdelöst om inte andra vet att du vet -----------> http://eforum.kicks-ass.net <------------ [inlägget ändrat 2006-11-24 01:01:10 av Cluster] Länk till kommentar Dela på andra webbplatser More sharing options...
hellomoto Postad 24 november, 2006 Trådskapare Share Postad 24 november, 2006 Det var precis så jag menade Cluster. Ska testa din kod, tack! De flesta kommer bara anmäla sig till en kurs, men om någon vill vara med på flera så går det. Då fyller man i anmälningsformuläret en gång till. Det är säkerligen inte bästa databasdesignen men det funkar iaf. [inlägget ändrat 2006-11-24 09:11:11 av hellomoto] Länk till kommentar Dela på andra webbplatser More sharing options...
Cluster Postad 24 november, 2006 Share Postad 24 november, 2006 Då fyller man i anmälningsformuläret en gång till. Det är säkerligen inte bästa databasdesignen men det funkar iaf.Nej det är det nog inte eftersom du då kan få "oändligt" många dubbletter av deltagare. Jag skulle nog ha satt upp tre tabeller för att hantera detta. En för Deltagare En för Kurser En för KursDeltagare Tabeller kursdeltagare har då DeltagarId kopplat till KursId vilka tillsammans skapar unik nyckel. På så sätt kan varje deltagare delta i flera kurser och varje kurs kan ha flera deltagare. Vill man vidareutveckla detta så kan man ju lägga till en tabell för Kurstillfällen som har kursid som främmande nyckel och där tabellen för kursdeltagare istället för kursid har kurstillfälles-id. Innan man sätter igång med ett sådant här projekt är det bra om man lägger en hel del tid på sin databas design så att man inte målar in sig i ett hörn. Det är bra mycket jobbigare att göra om än att göra rätt från början. /Cluster ------------------------------------------------------------ Ditt vetande är värdelöst om inte andra vet att du vet -----------> http://eforum.kicks-ass.net <------------ Länk till kommentar Dela på andra webbplatser More sharing options...
hellomoto Postad 26 november, 2006 Trådskapare Share Postad 26 november, 2006 Innan man sätter igång med ett sådant här projekt är det bra om man lägger en hel del tid på sin databas design så att man inte målar in sig i ett hörn. Det är bra mycket jobbigare att göra om än att göra rätt från början. Ja verkligen! Tyvärr är det är svårt att tänka några steg framåt innan man har fått lite rutin. Och man har gärna för stora planer som man inte har kunskap att kunna genomföra på ett bra sätt... (jag vet Tur att det finns snälla personer med tålamod att hjälpa oss tröga! För att återgå till sortera-funktionen... <form method="post" action="?"> Action är väl där adressen?sortera= ska va för att det ska funka, men hur ska jag skriva den för att det ska blir rätt? [inlägget ändrat 2006-11-26 12:09:40 av hellomoto] Länk till kommentar Dela på andra webbplatser More sharing options...
Codler Postad 26 november, 2006 Share Postad 26 november, 2006 För att återgå till sortera-funktionen... <form method="post" action="?"> Action är väl där adressen?sortera= ska va för att det ska funka, men hur ska jag skriva den för att det ska blir rätt? typ så här fungerar det med form(se bilden): http://www.itgymnasiet-k.se/lh6haya/etc/formtag.jpg Länk till kommentar Dela på andra webbplatser More sharing options...
hellomoto Postad 26 november, 2006 Trådskapare Share Postad 26 november, 2006 Fin bild Jag tror jag förstår vad du menar, get syns i adressfältet, post gör det inte. Men jag undrar fortfarande vad jag ska ha för action så att den sorterar när jag trycker på submit. För jag måste väl ha en action? Länk till kommentar Dela på andra webbplatser More sharing options...
Codler Postad 26 november, 2006 Share Postad 26 november, 2006 tack! action är bara till för vilken sida den ska skicka "info" till. du kan lägga till en input som är hidden, så här: <input type="hidden" name="sortera" value="ja"> I "value" kan du ha det du vill ha På det exempel så får du så här när du skickar: ?sortera=ja Länk till kommentar Dela på andra webbplatser More sharing options...
Cluster Postad 26 november, 2006 Share Postad 26 november, 2006 För att återgå till sortera-funktionen...Måste erkänna att jag inte riktigt förstod vad du menade med sortera. Vad är det som du vill sortera? Dvs. utöver dropdownlistan som ju skall vara sorterad i både din och min kod. /Cluster ------------------------------------------------------------ Ditt vetande är värdelöst om inte andra vet att du vet -----------> http://eforum.kicks-ass.net <------------ Länk till kommentar Dela på andra webbplatser More sharing options...
hellomoto Postad 26 november, 2006 Trådskapare Share Postad 26 november, 2006 Väljer man första kursen på dropdownlistan ska man se alla anmälningar till den. Dvs man sorterar ut de anmälningarna ur databasen. Precis som på en del sidor när man klickar på rubriken Namn och listan sorteras i namn-ordning, fast via en dropdown istället. visa.asp?sortera=kurs1 typ. Länk till kommentar Dela på andra webbplatser More sharing options...
Micke_skane Postad 26 november, 2006 Share Postad 26 november, 2006 Utan att ha läst igenom hela tråden så får du hämta kurserna med ungefär såna här villkor: WHERE kursId = Request.QueryString("kursId") Order By kursName ASC Se dock till att säkerställa vad det är som finns i din QueryString innan du använder den. Lägg gärna den i en variabel och använd variabeln istället i din SELECT-fråga. Är din QueryString tom kan du ju ge variebeln ett eget värde, typ 0. Mina namn på kolumnerna är bara påhittade men du förstår hur jag menar. Länk till kommentar Dela på andra webbplatser More sharing options...
Cluster Postad 26 november, 2006 Share Postad 26 november, 2006 Ok, filtrering snarare än sortering med andra ord. Är det inte det som min kod gör? //eforum.idg.se/viewmsg.asp?EntriesId=888830#889003 /Cluster ------------------------------------------------------------ Ditt vetande är värdelöst om inte andra vet att du vet -----------> http://eforum.kicks-ass.net <------------ Länk till kommentar Dela på andra webbplatser More sharing options...
Rekommendera Poster
Arkiverat
Det här ämnet är nu arkiverat och är stängt för ytterligare svar.