Avatar billede shatillum Nybegynder
20. maj 2003 - 09:47 Der er 19 kommentarer

Frem og tilbage knapper

Hjælp hjælp Jeg har et stort problem og jeg håber der er nogen som kan hjælpe mig. problemet går ud på at jeg ikke kan få frem og tilbage knapper til at virke.

Det skal funger sådan at man har en menu som henter sin data fra en database en af dem ser fx. sådan ud:

svømning
  Mandag
      Hold A
      Hold B
      Hold C
      Hold D
  Tirsdag
  Onsdag
  Torsdag
  Fredag

når man så går ind og trykke på fx. Hold B ser man en beskrivelse af holdet og så skal der være en frem og tilbage knap så man kan blader mellen de forskellig svømme hold om mandagen, men det er her jeg ikke kan få den til ar virke. VIGTIGT HUSK på at menu bliver hente fra en database

Hvor hoved menu er fx Mandag.
Hvor under menu er fx. Hold A.

Jeg ved ikke hvordan jeg ellers skal forklar dette, men hvis i er usikker på noget så bare skrive

på forhånd tak
med venlig hilsen
shatillum
Avatar billede jgp Nybegynder
20. maj 2003 - 14:14 #1
Hej Shatillum,

Jeg kunne forestille mig din menu ligger i en træstruktur!?

Hvis: skal du lave en funktion som finder den forrige hold og en funktion den finder det næste hold. Disse funktioner kan du så bruge til dine frem og tilbage knapper.

Håber dette hjælper lidt.

Mvh
JGP
Avatar billede shatillum Nybegynder
21. maj 2003 - 09:07 #2
Hej JGP

Menu ligger i en drop-down

og jeg er med på at jeg skal lave en funktion, men hvordan det ved jeg ikke for jeg kan ikke få det til at virke.

med venlig hilsen
shatillum
Avatar billede jgp Nybegynder
21. maj 2003 - 09:14 #3
Jeg er ikke med på hvad du mener med at menuen ligger i en drop-down? Kan du forklare hvordan database strukturen ser ud?
Avatar billede shatillum Nybegynder
21. maj 2003 - 09:37 #4
det er næsten en menu lige som den på www.danskbank.dk

der er bare en del mere.fx man har den øverste menu som du ser her:den er ikke i databasen.
Batminton  Håndbold Svømning
når man så fx køre musen over svømning kommer der følgende menu frem nedunder:de er i en tabel som hedder MENU
Mandag
Tirsdag
Onsdag
Torsdag
Fredag
Hvis man så køre musen hen på fx Mandag kommer der:de er i en tabel som hedder UNDERMENU
Hold A
Hold B
Hold C
Hold D

når man så klikker på fx Hold B kommer den frem på skærmen og man kan se oplysningerne om hold B der er her jeg vil have frem og tilbage knapperne.Så jeg har fra tabel UNDERMENU valgt hold B og derefter kunne jeg så forstille mig at man skal vælge alt fra UNDERMENU som har Svømning og Mandag fordi så får man den liste som heder

Hold A
Hold B
Hold C
Hold D

men den starter automatisk på den først post Hold A og jeg kan ikke den til at starte på Hold B og derefter rykke en frem hvis jeg fx klikker på Frem linket

Håber det hjælp lidt

MVH
shatillum
Avatar billede jgp Nybegynder
21. maj 2003 - 09:53 #5
Er det problemet med den starter på Hold A istedet for B vi skal løse? eller er det frem og tilbage knapperne?

Har du mulighed for at lave et recordSet indeholdene de relavante undermenuer tilknyttet den vaglte menu?
Avatar billede shatillum Nybegynder
21. maj 2003 - 10:16 #6
problemet er at denne ikke starter på fx det Hold som er er blevet klikket på da når man så klikker på fx frem knappen så er det den forkert man kommer frem til.Og det hænger vel sammen??

hvad mener du med recordset??
Avatar billede jgp Nybegynder
21. maj 2003 - 10:20 #7
Hvis din menuer ligger i en database, hvordan henter du dem ud fra databasen? (Dette gør man typisk via et recordSet)
Avatar billede shatillum Nybegynder
21. maj 2003 - 10:47 #8
jeg gør det på denne måde med to select sætninger

con = Server.CreateObject("ADODB.Connection");
    con.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" +
    Server.MapPath("../../database/saif.mdb"));
   
    sql = ("SELECT * FROM Undremenu WHERE ID = '"+Request.QueryString("Id")+"'");
    res = con.execute(sql);
    sql4 = ("SELECT * FROM Undremenu WHERE meid = '"+res.Fields("meid")+"' AND Id = '"+res.Fields("Id")+"'");
    res4 = con.execute(sql4);

først vælger alt jeg fra undermenu som er lig med den der er blevet klikket på fx Hold B, derefter vælger jeg alt fra undermenu som har de tilknytninger som Hold B fx. Svømning og Mandag.

Er det sådan, du mener??
Avatar billede jgp Nybegynder
21. maj 2003 - 10:54 #9
Ja, denne linie "res = con.execute(sql)" laver 'res' til et recordSet som indeholder de records fra databasen, som SQL har fundet. Altså et REcordSet

Er det rigtigt at res4 indeholder de Undermenuer, som du skal gå frem og tilbage i?
Avatar billede shatillum Nybegynder
24. maj 2003 - 10:31 #10
ok så er jeg med.

ja det er her jeg ikke kan komme videre har du nogen ide??
Avatar billede shatillum Nybegynder
24. maj 2003 - 17:57 #11
oki nu har jeg side og prøve om jeg kunne finde ud af det og jeg har fået lavet  en frem knap. Men jeg har et problem, når jeg kommer til den sidst post skal den jo ikke vises mere. Det jeg har lavet ser sådan ud:

<%@Language=JavaScript %>
<%
    con = Server.CreateObject("ADODB.Connection");
    con.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" +
    Server.MapPath("../../database/saif.mdb"));
    sql = ("SELECT * FROM Undremenu WHERE Vare = '"+Request.QueryString("Id")+"'");
    res = con.execute(sql);
    toid = res.Fields("Vare");
    sql4 = ("SELECT * FROM Undremenu WHERE meid = '"+res.Fields("meid")+"' AND Id = '"+res.Fields("Id")+"'");
    res4 = con.execute(sql4);
    vaid = res4.Fields("Vare");
%>
<HTML>
<BODY>
<%while(vaid<=toid){%>
<%res4.Move(1);}%>
<%st = "test1.asp?Id="+vaid;%>
<a href="<%=st%>">Frem</a>
</BODY>
</HTML>

Det virker godt nok, men som sagt den skal jo ikke visses når den er ved den sidste post og hvordan gøre man det?? og hvordan får man en Tilbage knap for sådan en kan jeg slet ikke får til at virke??

Håber det nogen som gider og svare hurtigt

på forhånd tak
shatillum
Avatar billede jgp Nybegynder
26. maj 2003 - 10:03 #12
Jeg har meget svært ved at gennemskue din navne standard.

Ud fra hvordan jeg forstår din database struktur, ville jeg lave noget ligende dette:

undermenuRS = "SELECT alle undermenuer for dette menu punkt"

While Not (undermenuRS.eof Or undermenuRS.bof)
  If SelectedUndermenuID = undermenuRS("undermenuID") Then
    ' Udskriv en tilbage knap med checkID som ID
    NextIDIsFremID = true
  End If
  If NextIDIsFremID Then
    ' Udskriv frem knap med undermenuRS("undermenuID")
  End If
  checkID = undermenuRS("undermenuID") 
  undermenuRS.movenext
Wend

Håber du kan bruge det til noget.
Avatar billede shatillum Nybegynder
26. maj 2003 - 11:06 #13
Hejsa..

Jeg har selv fået Frem knappe til at virke ved at gøre sådanne:
<%@Language=JavaScript %>
<%
    con = Server.CreateObject("ADODB.Connection");
    con.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" +
    Server.MapPath("../../database/saif.mdb"));
    id = Request.QueryString("Id");
    sql = ("SELECT * FROM Undremenu WHERE Vare= '"+id+"'");
    res = con.execute(sql);
    toid = res.Fields("Vare");
    sql3 = ("SELECT * FROM Undremenu WHERE meid = '"+res.Fields("meid")+"' AND Id = '"+res.Fields("Id")+"'");
    res3 = con.execute(sql3);
    varid = res3.Fields("Vare");
    sql4 = ("SELECT * FROM Undremenu WHERE meid = '"+res.Fields("meid")+"' AND Id = '"+res.Fields("Id")+"'");
    res4 = con.execute(sql4);
    vaid = res4.Fields("Vare");
    %>
<HTML>
<BODY>
<%for(i=-1;!res3.EOF;i++){
res3.Move(1);}%>
<%res3.MoveFirst;%>
<%res3.Move(i);%>
<%while(vaid<toid){%>
<%res4.Move(1);}%>
<%if(vaid>=varid){%>
<%}else{%>
<%res4.Move(1);%>
<%st="test1.asp?Id="+vaid;%>
<a href="<%=st%>">Frem</a><br>
<%}%>
</BODY>
</HTML>

Men jeg kan ikke få en Tilbage knap til at virke den siger hele tiden at man ikke må gå tilbage ved du hvorfor, jeg er ikke helt sikker på jeg forstår dit fordi det er i VB.
Avatar billede jgp Nybegynder
26. maj 2003 - 12:25 #14
Pga. performence kan man gå fremad i RS i ASP (mener måske man kan lave RSne med nogle parametere, så man kan gå både frem og tilbage, men så vidt jeg husker er de meget lansomme at arbejde med)

Uden at være ekspert i Jscript, så synes jeg ikke dette giver den store mening:
for(i=-1;!res3.EOF;i++){
  res3.Move(1);
}
Hvad gør den?

<%res3.MoveFirst;%> // gå til den første record i RS
<%res3.Move(i);%> // Gå en record frem??
<%while(vaid<toid){%> // imens vaid er større end toid?

Jeg er ikke sikker på din løsning vil virke i alle tilfælde.
Avatar billede shatillum Nybegynder
26. maj 2003 - 12:58 #15
for(i=-1;!res3.EOF;i++){
  res3.Move(1);} // den gør det at den tæller ind til den er efter den sidste post og så give den i den værdi fx hvis den sidste post er 4. tæller den 0
1
2
3
4
5 nu er  den efter den sidte post så i er 5:
Jeg gør så det at jeg beder den om at starte fra -1, så når den tæller ender den på 4 det vil sige at når jeg sætter i ind <%res3.Move(i);%> får jeg den sidste post som jeg så kan bruge senere.
<%res3.MoveFirst;%> // ja den gå til den først.

<%while(vaid<toid){%> // så længe vaid er mindre ind toid ryk en frem i record RS det betyder så at jeg får den samme værdi som toid når den er færdig.

<%if(vaid>=varid){%>// tjek om den står ved den sidste post hvis den gør det skal der ikke ske nogen. Men hvis den ikke gør den skal den rykke en record frem og lave knappen Frem

Håber det er til at forstå. den virker nu, men der er nogen gang den ikke virke ved du hvorfor??
Avatar billede jgp Nybegynder
26. maj 2003 - 13:59 #16
Jeg må indrømme jeg er lidt forviret omkring denne.

Når den ikke virker, hvad fejler den emd så?

Disse linie kan giver problemer:
sql = ("SELECT * FROM Undremenu WHERE Vare= '"+id+"'");
    res = con.execute(sql);
    toid = res.Fields("Vare");
    sql3 = ("SELECT * FROM Undremenu WHERE meid = '"+res.Fields("meid")+"' AND Id = '"+res.Fields("Id")+"'");
    res3 = con.execute(sql3);
    varid = res3.Fields("Vare");
    sql4 = ("SELECT * FROM Undremenu WHERE meid = '"+res.Fields("meid")+"' AND Id = '"+res.Fields("Id")+"'");
    res4 = con.execute(sql4);
    vaid = res4.Fields("Vare");

Hvis 1 af RSne ikke indeholder en record, vil din kode fejle.
Du bruger 'er rundt om dine IDer, vil det sige de er tekstfelter indeholdene en tekst?
Avatar billede shatillum Nybegynder
27. maj 2003 - 09:23 #17
så laver den ikke nogen knapper og jeg kna ikke finde ud af hvorfor den ikke gør, det er kun to steder den gør det har du nogen ide om hvad det kan være??
Avatar billede jgp Nybegynder
27. maj 2003 - 10:04 #18
Shatillum, Jeg tror desvære ikke jeg er i stand til at hjælpe dig. Tror blot vi begge bliver mere forvirret.

Men et godt råd er for at lave noget, kræver det næsten altid at man forstår hvordan det virker.

Håber du får løst din udfordring.
JGP
Avatar billede shatillum Nybegynder
27. maj 2003 - 10:37 #19
oki men mange tak fordi du prøvet
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