Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 20:07 Der er 56 kommentarer og
1 løsning

Mønt pr. min.

Hejsa.

Jeg vil forsøge mig ud i at lave et Mønt system. I det mønt system der skulle man kunne få EN mønt pr. Min. man er online.

Nogle der vil bidrage med sådan en kode?
Avatar billede alister_crowley Nybegynder
03. april 2005 - 20:09 #1
Du kan ihvertfald få lidt psudo

// session med start_tid = start tid
// session med mønter = 0

ved side opdatering:

// mønter = nu_tid - start_tid

Hvis det skal ændres dynamisk skal du både bruge javascript, og asp, men det er vist lovlig advanceret, hvis overhovedet muligt.
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 20:12 #2
Æhm forstod jeg ærglig talt ikke meget af det der :p
Avatar billede busschou Praktikant
03. april 2005 - 20:17 #3
I din log ind side hvor personen logger ind sætter du en session ved følgende:
Session("start") = Now
I din log ud side hvor personen logger ud finder du tidsforskellen ved
Moenter = DateDiff("n", Now, Session("start"))
Så må du derudover jo gemme mønterne i en database?
Avatar billede hjemmeskoen Nybegynder
03. april 2005 - 22:41 #4
Hvad så hvis den skal opdatere hver gang man får en mønt i det sted man skal trække det ud? Eks. i en brugers profil.

Og hvordan vil i lige sætte tingene ind i min:

Login.asp:

<html>
<!--#Include file="../Plus/title.asp"-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title><%=titlen%></title>
<link rel="stylesheet" href="../Skrift/css.css">
</head>

<% if request.querystring("mode") = "fejl" then
response.write "Fejl."
else%>

<!--#Include file="Tjek.asp"-->

<form action="login.asp?admin=tjek" method="post">
<b>

Brugernavn:</b><!--webbot bot="Validation" S-Data-Type="String"
B-Allow-Letters="TRUE" --><input type="text" name="brugernavn" size="9" style="border-width: 1px; border-style: solid; color:#00A84D;">
<b>Kode:</b>
<!--webbot bot="Validation" S-Data-Type="String" B-Allow-Letters="TRUE"
B-Allow-Digits="TRUE" B-Allow-WhiteSpace="TRUE" -->
<input type="password" name="kode" size="10" style="border-width: 1px; border-style: solid; color:#00A84D;">
<input type="submit" value="Log ind!" style="background-color:#EB2D2E; border-color:#000000; border-style:solid; "></form>
<form action="Opret.asp" method="post">
<input type="submit" value="Opret" style="background-color:#EB2D2E; border-color:#000000; border-style:solid; ">


<% end if %>

<b><br>
<%
If Request.QueryString("admin") = "tjek" then
navn = trim(replace(Request.Form("brugernavn"), "'", ""))
kode = trim(replace(Request.Form("kode"), "'", ""))
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
sql = "SELECT * from admin WHERE brugernavn = '" & navn & "' AND kode = '" & kode & "'"
Set rs = Conn.Execute(sql)
if not rs.eof then

Set gw = Server.CreateObject("ADODB.RecordSet")
MySQL = "Select * From admin WHERE ID = " & rs("ID")
gw.Open MySQL, Conn, 1, 3           
gw.Update
gw("ip") = Request.ServerVariables("REMOTE_ADDR")
gw.Update

Session("brugeradgang") = "1"
Session("brugernavn") = rs("brugernavn")
Session("id") = rs("id")
Session("status") = rs("status")
Session("IP") = Request.ServerVariables("REMOTE_ADDR")
Response.Redirect "../Plus/Menu.asp"
else
response.redirect "../Plus/Fejl.asp"
end if
end if
Set conn = Nothing
Set rs = Nothing
%>
</b>


</html>



-------------------------------------------------------------------------------------


Og i min Logud.asp:

<%
' slet værdierne i alle sessions
Session.Abandon
' og videresend brugeren
Response.Redirect "Login.asp"
%>

------------------------------------------------------------------------------------
Avatar billede l0w Nybegynder
04. april 2005 - 10:17 #5
Jeg vil anbefale at man ikke opdatere database hver minut, hvis det er det du har tænkt dig. Jeg ville umiddelbart gemme dato og klokken for hvornår brugeren har oprettet sin profil, samt en oversigt over hvor han har brugt mønter (i databasen). Så ville jeg udregne det hele når der var brug for det.

Først udregningen for hvor mange mønter han har totalt, ved at hente datoen fra hans profil og finde antal minutter fra dengang til nu ved hjælp af datediff. Herefter ville jeg hente hans total brug fra databasen ved hjælp af SQL. For eksempel.

oprettelsesdato = RS("oprettelsesdato")
coints = datediff("n", oprettelsesdato, now())

sql = "SELECT SUM(Totalbeloeb) as forbrug FROM betalinger WHERE brugerID = " & brugerID

coints = coints - RS("forbrug")

Måske lidt hullet, men jeg håber det giver lidt mening. (bemærk det er ikke testet)
Avatar billede hjemmeskoen Nybegynder
04. april 2005 - 14:15 #6
Hmm.. Fatter det ikke :s
Avatar billede l0w Nybegynder
04. april 2005 - 14:27 #7
Hmm, jeg mistforstod vist noget, der skal kun tjenes en mønt per minut, så længe man er online?

Så skal du lave det hele i global.asa, når brugere kommer ind på siden starter du en session som af busschou, og når sessionen dør tæller du op hvor mange mønter man har tjænt og gemmer det i databasen.
Avatar billede l0w Nybegynder
04. april 2005 - 14:29 #8
tænke tænke... Der er et timeout på 20 minutter på sessioner, så spørgsmålet er om du vil tage den fra sidste gang brugeren kaldte en side, eller når hans session døde.
Avatar billede busschou Praktikant
04. april 2005 - 14:31 #9
sessionen kan man jo sætte en timeout på på fx Session.Timeout = 60 for en time
Eller mere...
Avatar billede hjemmeskoen Nybegynder
04. april 2005 - 14:44 #10
Jep. Korrekt man skal tjene en mønt pr. min. men jeg vil gerne have der hvor man viser mønterne der opdatere den hvergang man får en mønt.
Avatar billede l0w Nybegynder
04. april 2005 - 14:45 #11
Jeg har prøvet at lave et lille eksempel:
Lave en fil ved navn moent.asp og udfyld følgende:
<%
Session("moent_total") = DateDiff("n", Session("moent_start"), Now())

Response.Write "Du har nu " & Session("moent_total") & " mønt(er)."
%>

Lav en fil med navnet global.asa, og udfyld med følgende:
<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">
</OBJECT>
<script language=VBScript RUNAT=Server>

sub Session_OnStart
    Session("moent_start") = Now()
End Sub

Sub Session_OnEnd
    strSQL = "UPDATE brugerprofil SET moenter = " & Session("moent_total") & " WHERE ID = " & Session("brugerID")
End Sub
</script>
Avatar billede l0w Nybegynder
04. april 2005 - 14:47 #12
Så kan du under sub Session_OnEnd indsætte de optjænte mønter i brugerens profil, jeg har prøvet at lave en lille SQL streng for at vise hvordan det kunne se ud.
Avatar billede hjemmeskoen Nybegynder
04. april 2005 - 18:38 #13
Skal der includeres noget på nogle sider og hvad skal indsættes i profilen? Og skal der ikke stå noget i login.asp og logud.asp ?
Avatar billede l0w Nybegynder
05. april 2005 - 09:33 #14
Det smateste ville nok være at lave en includefil med følgen i:
Session("moent_total") = DateDiff("n", Session("moent_start"), Now())

og så include det i toppen på alle sider.

Skal optællingen kun begynde når man er logget ind? Så skal der nemlig flyttes lidt rundt og rettes til.

Ret foreksempel:
If Session("brugeradgang") = "1" Then Session("moent_total") = DateDiff("n", Session("moent_start"), Now())

Flyt Session("moent_start") = Now() fra global.asa til dit login script, hvor du sætter brugeren sessions variabler.
Avatar billede hjemmeskoen Nybegynder
05. april 2005 - 12:27 #15
Jep den skal først starte når man er logget ind hvilket hvis også er nævnt nogle sider oppe :) Og hvordan skal det se ud når man trækker det ud i Profil.asp hvis den skal opdatere hvergang men får en mønt?

Og hvad skulle jeg gøre med:

If Session("brugeradgang") = "1" Then Session("moent_total") = DateDiff("n", Session("moent_start"), Now())


Og skal Session("moent_start") = Now() erstattes med noget i global.asa?
Avatar billede hjemmeskoen Nybegynder
05. april 2005 - 12:28 #16
Og hvilke kolonner skal jeg indsætte i min database? :s
Avatar billede l0w Nybegynder
05. april 2005 - 12:36 #17
Hvis du har en database med brugerprofiler, skal du oprette en colonne til total mønter, det skal nok være en int.

Hvis du laver en include fil med:
If Session("brugeradgang") = "1" Then Session("moent_total") = DateDiff("n", Session("moent_start"), Now())

Denne fil skal du så includere på alle sider (som tæller mønter).

global.asa kommer til at se sådan her ud:
<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">
</OBJECT>
<script language=VBScript RUNAT=Server>

Sub Session_OnEnd
    strSQL = "UPDATE brugerprofil SET moenter = " & Session("moent_total") & " WHERE ID = " & Session("brugerID")
End Sub
</script>

Og du skal opdatere strSQL med følgende:
brugerprofil skal skiftes ud med tabelnavnet.
moenter skal skiftes ud med colonnen med total mønter.
ID skal skiftes ud med primary key indexet.
Avatar billede hjemmeskoen Nybegynder
05. april 2005 - 13:07 #18
Også opretter jeg en kolonne med navnet "Total moent" også? Prøv lige og vis hvordan du vil skrive det ind i profil.asp:

<!--#Include file="../Plus/title.asp"-->

<html><head>
<title><%=titlen%></title>
<link rel="stylesheet" href="../Skrift/css.css">
</head>

<!--#include file="../Plus/Tjek.asp" -->

<SCRIPT type="text/javascript" language="JavaScript">
function CaricaFoto(img){
  foto1= new Image();
  foto1.src=(img);
  Controlla(img);
}
function Controlla(img){
  if((foto1.width!=0)&&(foto1.height!=0)){
    viewFoto(img);
  }
  else{
    funzione="Controlla('"+img+"')";
    intervallo=setTimeout(funzione,20);
  }
}
function viewFoto(img){
  largh=foto1.width+20;
  altez=foto1.height+20;
  stringa="width="+largh+",height="+altez;
  finestra=window.open(img,"",stringa);
}
</script>
<%
mode = Request("mode")
Response.Buffer = True
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
strSQL = "select * from admin WHERE id=" & Request.QueryString("id") & " ORDER BY id"
set rs = Conn.execute(strSQL)

if rs.EOF then
  Response.write "Brugeren findes ikke"
else
  while not rs.EOF %>




    <b>
    Hej <%=session("brugernavn")%> velkommen til <%=Server.HtmlEncode(rs("brugernavn"))%>´s Profil :</b><br><br>

    <table border="0" width="325" id="table1" cellspacing="0" cellpadding="0" height="106">
    <tr>
      <td width="94" height="21"><b>Brugernavn:</b></td><td width="446" height="21"><%=Server.HtmlEncode(rs("brugernavn"))%></td>
    </tr>
    <tr>
      <td height="23" width="94"><b>Navn:</b></td><td height="23" width="446"><%=Server.HtmlEncode(rs("navn"))%></td>
    </tr>
    <tr>
      <td height="21" width="94"><b>Alder:</b></td><td height="21" width="446"><%=Server.HtmlEncode(rs("alder"))%></td>
    </tr>
    <tr>
      <td height="21" width="94"><b>Status:</b></td>
      <td height="21" width="446"><%=Server.HtmlEncode(rs("status"))%>
      </td>
    </tr>
    <tr>
      <td height="24" width="94"><b>Online?:</b></td><td height="24" width="446"><% if rs("online") = "Ja" then response.write "Ja" else response.write "Nej" end if %></td></td>
    </tr>
    <tr>
      <td height="24" width="94"><b>MSN:</b></td><td height="24" width="446"><%=Server.HtmlEncode(rs("MSN"))%></td>
    </tr>
    </table>




<table border="0" width="325" id="table2" cellspacing="0" cellpadding="0" height="41">
  <tr>
    <td width="323" height="18"><b>Fri tekst:</b></td>
  </tr>
  <tr>
    <td width="323" height="23"><%
If rs("Status") = "Admin" then
Response.Write "" & rs("info") & ""
Else
Response.Write "" & Server.HTMLEncode(rs("info")) & ""
End if
%>
    </td>
  </tr>
</table>




</html>






<%  RS.Movenext
  Wend
End If %>


-------------------------------------------------------------------------------------

Så du flink :)
Avatar billede l0w Nybegynder
05. april 2005 - 13:11 #19
Jeg ville lave en fil ved navn moent.inc og udfylde følgende:
<%
If Session("brugeradgang") = "1" Then Session("moent_total") = DateDiff("n", Session("moent_start"), Now())
%>
Avatar billede l0w Nybegynder
05. april 2005 - 13:14 #20
I profil.asp ville jeg tilføje øverst:
<!--#Include file="moent.asp"-->

  <tr>
      <td height="24" width="94"><b>Mønter:</b></td><td height="24" width="446"><%=rs("Total moent") %></td></td>
    </tr>
Avatar billede hjemmeskoen Nybegynder
05. april 2005 - 13:14 #21
Også i profil.asp?
Avatar billede hjemmeskoen Nybegynder
05. april 2005 - 13:14 #22
Okay :)
Avatar billede l0w Nybegynder
05. april 2005 - 13:15 #23
Hvis siden er til brugeren selv, kan du tilføje dette under informationer:

<tr>
      <td height="24" width="94"><b>Mønter:</b></td><td height="24" width="446"><%=rs("Total moent") + Session("moent_total") %></td></td>
    </tr>
Avatar billede l0w Nybegynder
05. april 2005 - 13:21 #24
<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">
</OBJECT>
<script language=VBScript RUNAT=Server>

Sub Session_OnEnd
Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
    SQL = "UPDATE admin SET [total moent] = [total moent] + " & Session("moent_total") & " WHERE ID = " & Session("ID")
    Conn.execute(strSQL)
    Conn.Close
    Conn = Nothing
  End Sub
</script>
Avatar billede l0w Nybegynder
05. april 2005 - 13:22 #25
Og som altid er dette ikke testet, så der skal nok rettes nogle fejl og sådan noget :)
Avatar billede hjemmeskoen Nybegynder
05. april 2005 - 13:26 #26
Siden er en side som alle kan se :)
Avatar billede hjemmeskoen Nybegynder
05. april 2005 - 13:48 #27
Hmm.. Det funker hvis ikke helt kan vi lige samle det for at lige tjekke om det er mig der har gjort en fejl :s Prøv og nævn de forskellige filnavne også indholdet.
Avatar billede l0w Nybegynder
05. april 2005 - 13:51 #28
Ok, vil prøve:
moent.inc
<%
If Session("brugeradgang") = "1" Then Session("moent_total") = DateDiff("n", Session("moent_start"), Now())
%>

global.asa
<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">
</OBJECT>
<script language=VBScript RUNAT=Server>

Sub Session_OnEnd
Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
    SQL = "UPDATE admin SET [total moent] = [total moent] + " & Session("moent_total") & " WHERE ID = " & Session("ID")
    Conn.execute(strSQL)
    Conn.Close
    Conn = Nothing
  End Sub
</script>

profil.asp
<!--#Include file="moent.asp"-->
<!--#Include file="../Plus/title.asp"-->

<html><head>
<title><%=titlen%></title>
<link rel="stylesheet" href="../Skrift/css.css">
</head>

<!--#include file="../Plus/Tjek.asp" -->

<SCRIPT type="text/javascript" language="JavaScript">
function CaricaFoto(img){
  foto1= new Image();
  foto1.src=(img);
  Controlla(img);
}
function Controlla(img){
  if((foto1.width!=0)&&(foto1.height!=0)){
    viewFoto(img);
  }
  else{
    funzione="Controlla('"+img+"')";
    intervallo=setTimeout(funzione,20);
  }
}
function viewFoto(img){
  largh=foto1.width+20;
  altez=foto1.height+20;
  stringa="width="+largh+",height="+altez;
  finestra=window.open(img,"",stringa);
}
</script>
<%
mode = Request("mode")
Response.Buffer = True
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
strSQL = "select * from admin WHERE id=" & Request.QueryString("id") & " ORDER BY id"
set rs = Conn.execute(strSQL)

if rs.EOF then
  Response.write "Brugeren findes ikke"
else
  while not rs.EOF %>




    <b>
    Hej <%=session("brugernavn")%> velkommen til <%=Server.HtmlEncode(rs("brugernavn"))%>´s Profil :</b><br><br>

    <table border="0" width="325" id="table1" cellspacing="0" cellpadding="0" height="106">
    <tr>
      <td width="94" height="21"><b>Brugernavn:</b></td><td width="446" height="21"><%=Server.HtmlEncode(rs("brugernavn"))%></td>
    </tr>
    <tr>
      <td height="23" width="94"><b>Navn:</b></td><td height="23" width="446"><%=Server.HtmlEncode(rs("navn"))%></td>
    </tr>
    <tr>
      <td height="21" width="94"><b>Alder:</b></td><td height="21" width="446"><%=Server.HtmlEncode(rs("alder"))%></td>
    </tr>
    <tr>
      <td height="21" width="94"><b>Status:</b></td>
      <td height="21" width="446"><%=Server.HtmlEncode(rs("status"))%>
      </td>
    </tr>
    <tr>
      <td height="24" width="94"><b>Online?:</b></td><td height="24" width="446"><% if rs("online") = "Ja" then response.write "Ja" else response.write "Nej" end if %></td></td>
    </tr>
    <tr>
      <td height="24" width="94"><b>MSN:</b></td><td height="24" width="446"><%=Server.HtmlEncode(rs("MSN"))%></td>
    </tr>
    </table>




<table border="0" width="325" id="table2" cellspacing="0" cellpadding="0" height="41">
  <tr>
    <td width="323" height="18"><b>Fri tekst:</b></td>
  </tr>
  <tr>
    <td width="323" height="23"><%
If rs("Status") = "Admin" then
Response.Write "" & rs("info") & ""
Else
Response.Write "" & Server.HTMLEncode(rs("info")) & ""
End if
%>
    </td>
  </tr>
</table>




</html>






<%  RS.Movenext
  Wend
End If %>
Avatar billede hjemmeskoen Nybegynder
05. april 2005 - 19:47 #29
Hvilken fil var det jeg skulle include på alle sider hvor den skulle tælle mønter?
Avatar billede l0w Nybegynder
06. april 2005 - 09:04 #30
Det var
<!--#Include file="moent.asp"-->
Avatar billede hjemmeskoen Nybegynder
06. april 2005 - 09:56 #31
Bortset fra den ikke viser det i Profil.asp og at den genstarter ens mønter hver gang men logger på og den skriver "Du har nu X mønt(er)" på alle de sider den skal tælle så virker det da fint ;) Vil du ikke være sød og hjælpe med at rette de sidste "fejl"? :)
Avatar billede l0w Nybegynder
06. april 2005 - 11:02 #32
Din moent.inc skulle gerne se sådan her ud:

<%
If Session("brugeradgang") = "1" Then Session("moent_total") = DateDiff("n", Session("moent_start"), Now())
%>
Avatar billede l0w Nybegynder
06. april 2005 - 11:04 #33
Skal man logge ud for at kunne logge ind, eller kan man logge ind selv om man er logget ind?

Du skal eventuelt have denne med i logud funktionen:

Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
    SQL = "UPDATE admin SET [total moent] = [total moent] + " & Session("moent_total") & " WHERE ID = " & Session("ID")
    Conn.execute(strSQL)
    Conn.Close
    Conn = Nothing
Avatar billede hjemmeskoen Nybegynder
06. april 2005 - 14:45 #34
Ja man skal trykke på "Log ud" eller det vil sige man kan også bare trykke på F5 Men altså..

Også ved jeg ikke helt hvordan jeg skal smide den der database fætter ind i min logud.asp. Måske kan du hjælpe. Min nuværende logud.asp ser sådan ud:

<%
' slet værdierne i alle sessions
Session.Abandon
' og videresend brugeren
Response.Redirect "Login.asp"
%>


Og kan man ikke ændre det andet der så den tæller mønterne men ikke skriver "Du har nu X mønt(er)" ?
Avatar billede l0w Nybegynder
06. april 2005 - 15:33 #35
Du skal finde og fjerne det sted du har følgende linie:
Response.Write "Du har nu " & Session("moent_total") & " mønt(er)."

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
SQL = "UPDATE admin SET [total moent] = [total moent] + " & Session("moent_total") & " WHERE ID = " & Session("ID")
Conn.execute(strSQL)
Conn.Close
Conn = Nothing

' slet værdierne i alle sessions
Session.Abandon
' og videresend brugeren
Response.Redirect "Login.asp"
%>
Avatar billede hjemmeskoen Nybegynder
06. april 2005 - 16:45 #36
Hmm hvis jeg nu retter det der i Logud.asp så får jeg fejlen:

Microsoft OLE DB Provider for ODBC Drivers error '80040e0c'

Command text was not set for the command object.

/Plus/Logud.asp, line 5

Og hvad skal jeg skrive i Profil.asp for at få den til at vise mønterne?
Avatar billede l0w Nybegynder
07. april 2005 - 09:16 #37
Logud.asp skal se sådan her ud i stedet.
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
SQL = "UPDATE admin SET [total moent] = [total moent] + " & Session("moent_total") & " WHERE ID = " & Session("ID")
Conn.execute(SQL)
Conn.Close
Conn = Nothing

' slet værdierne i alle sessions
Session.Abandon
' og videresend brugeren
Response.Redirect "Login.asp"
%>


Du kan tilføje dette i listen over informationer i profil.asp

  <tr>
      <td height="24" width="94"><b>Mønter:</b></td><td height="24" width="446"><%=rs("Total moent") %></td></td>
    </tr>
Avatar billede hjemmeskoen Nybegynder
07. april 2005 - 13:38 #38
Hmm Ny fejl i Logud.asp:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/Plus/Logud.asp, line 5

-------------------------------------------------------------------------------------

Og det er korrekt opfattet at Profil.asp skal se sådan ud ik?:


<!--#Include file="../Moentsystem/moent.asp"-->
<!--#Include file="../Plus/title.asp"-->

<html><head>
<title><%=titlen%></title>
<link rel="stylesheet" href="../Skrift/css.css">
</head>

<!--#include file="../Plus/Tjek.asp" -->

<SCRIPT type="text/javascript" language="JavaScript">
function CaricaFoto(img){
  foto1= new Image();
  foto1.src=(img);
  Controlla(img);
}
function Controlla(img){
  if((foto1.width!=0)&&(foto1.height!=0)){
    viewFoto(img);
  }
  else{
    funzione="Controlla('"+img+"')";
    intervallo=setTimeout(funzione,20);
  }
}
function viewFoto(img){
  largh=foto1.width+20;
  altez=foto1.height+20;
  stringa="width="+largh+",height="+altez;
  finestra=window.open(img,"",stringa);
}
</script>
<%
mode = Request("mode")
Response.Buffer = True
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
strSQL = "select * from admin WHERE id=" & Request.QueryString("id") & " ORDER BY id"
set rs = Conn.execute(strSQL)

if rs.EOF then
  Response.write "Brugeren findes ikke"
else
  while not rs.EOF %>




    <b>
    Hej <%=session("brugernavn")%> velkommen til <%=Server.HtmlEncode(rs("brugernavn"))%>´s Profil :</b><br><br>

    <table border="0" width="325" id="table1" cellspacing="0" cellpadding="0" height="106">
    <tr>
      <td width="94" height="21"><b>Brugernavn:</b></td><td width="446" height="21"><%=Server.HtmlEncode(rs("brugernavn"))%></td>
    </tr>
    <tr>
      <td height="23" width="94"><b>Navn:</b></td><td height="23" width="446"><%=Server.HtmlEncode(rs("navn"))%></td>
    </tr>
    <tr>
      <td height="21" width="94"><b>Alder:</b></td><td height="21" width="446"><%=Server.HtmlEncode(rs("alder"))%></td>
    </tr>
    <tr>
      <td height="21" width="94"><b>Status:</b></td>
      <td height="21" width="446"><%=Server.HtmlEncode(rs("status"))%>
      </td>
    </tr>
    <tr>
      <td height="24" width="94"><b>Mønter:</b></td><td height="24" width="446"><%=rs("Total_moent")%></td>
    </tr>
    <tr>
      <td height="24" width="94"><b>MSN:</b></td><td height="24" width="446"><%=Server.HtmlEncode(rs("MSN"))%></td>
    </tr>
    </table>




<table border="0" width="325" id="table2" cellspacing="0" cellpadding="0" height="41">
  <tr>
    <td width="323" height="18"><b>Fri tekst:</b></td>
  </tr>
  <tr>
    <td width="323" height="23"><%
If rs("Status") = "Admin" then
Response.Write "" & rs("info") & ""
Else
Response.Write "" & Server.HTMLEncode(rs("info")) & ""
End if
%>
    </td>
  </tr>
</table>




</html>






<%  RS.Movenext
  Wend
End If %>

-------------------------------------------------------------------------------------

For den skriver stadig ikke mønterne :s
Avatar billede l0w Nybegynder
07. april 2005 - 13:59 #39
Logud.asp skal se sådan her ud i stedet.
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
SQL = "UPDATE admin SET [total moent] = [total moent] + " & Session("moent_total") & " WHERE ID = " & Session("ID")
Conn.execute(SQL)
Conn = Nothing

' slet værdierne i alle sessions
Session.Abandon
' og videresend brugeren
Response.Redirect "Login.asp"
%>

I profil.asp skal du skrive:
<%=rs("Total moent") %>

og ikke
<%=rs("Total_moent") %>
Avatar billede hjemmeskoen Nybegynder
07. april 2005 - 14:12 #40
Jamen tabellen hedder jo Total_Moent?
Avatar billede hjemmeskoen Nybegynder
07. april 2005 - 14:14 #41
Fejl i Logud.asp:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '[total moent] +'.

/Plus/Logud.asp, line 5
Avatar billede l0w Nybegynder
07. april 2005 - 14:35 #42
ahh okay. så skal du rette i logout.asp istedet:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
SQL = "UPDATE admin SET total_moent = total_moent + " & Session("moent_total") & " WHERE ID = " & Session("ID")
Conn.execute(SQL)
Conn = Nothing

' slet værdierne i alle sessions
Session.Abandon
' og videresend brugeren
Response.Redirect "Login.asp"
%>

Og I global.asa:
<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">
</OBJECT>
<script language=VBScript RUNAT=Server>

Sub Session_OnEnd
Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
    SQL = "UPDATE admin SET total_moent = total_moent + " & Session("moent_total") & " WHERE ID = " & Session("ID")
    Conn.execute(strSQL)
    Conn = Nothing
  End Sub
</script>
Avatar billede l0w Nybegynder
07. april 2005 - 14:36 #43
Jeg prøver lige igen:

Logud.asp
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
SQL = "UPDATE admin SET total_moent = total_moent + " & Session("moent_total") & " WHERE ID = " & Session("ID")
Conn.execute(SQL)
Set Conn = Nothing

' slet værdierne i alle sessions
Session.Abandon
' og videresend brugeren
Response.Redirect "Login.asp"
%>

Og I global.asa:
<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">
</OBJECT>
<script language=VBScript RUNAT=Server>

Sub Session_OnEnd
Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db/System.mdb")
    SQL = "UPDATE admin SET total_moent = total_moent + " & Session("moent_total") & " WHERE ID = " & Session("ID")
    Conn.execute(strSQL)
    Set Conn = Nothing
  End Sub
</script>
Avatar billede hjemmeskoen Nybegynder
07. april 2005 - 14:54 #44
Det virker :) Nu mangler det der profil pis bare.
Avatar billede l0w Nybegynder
07. april 2005 - 15:16 #45
Hmm, den skulle virke. det eksempel du viste så i hvert fal fint ud. Står der ikke noget med mønter: ?
Avatar billede hjemmeskoen Nybegynder
07. april 2005 - 15:37 #46
Nej. Eller jo når man lige har oprettet en bruger står der 0 men så når man begynder at få mønter så er det bare tomt. Prøv og tjek www.hjemmeskoen.dk også en profil.
Avatar billede l0w Nybegynder
07. april 2005 - 16:03 #47
Virker fint her, jeg har optjent 1 mønt :D
Avatar billede hjemmeskoen Nybegynder
07. april 2005 - 16:22 #48
Ja okay det min fejl det virker fint men det virker så åbenbart ikke lige på en af mine brugere. Nå men kan du så lige fortælle hvad jeg skal sætte ind for at den opdatere hver gang man får en mønt? Så man er fri for at logge ud og ind hele tiden :)
Avatar billede l0w Nybegynder
08. april 2005 - 09:44 #49
Umiddelbart ville jeg ikke opdatere en access database hver minut, det er simpelhen ikke hensigtsmæssigt og du vil højest sandsynligt begynde at opleve stabilitets problemer.

Hvis brugere gerne vil vide hvor mange mønter de selv har i alt, så kan du lave et tjek og vise dem den samlede udregning, for eksempel sådan her:

  <tr>
      <td height="24" width="94"><b>Mønter:</b></td><td height="24" width="446"><%
      If session("brugernavn") = rs("brugernavn") Then
        Response.write CInt(rs("Total moent") + Session("moent_total"))
      Else
        Response.write CInt(rs("Total moent"))
      End If
      %></td></td>
    </tr>
Avatar billede hjemmeskoen Nybegynder
08. april 2005 - 15:59 #50
Hmm.. Er du en milliard procent sikker på der ikke er andre muligheder? Jeg mener bare dengang der stod det der "Du har nu X antal mønt(er)" der opdaterede den jo hvergang man tjente en mønt. Gjorde den det på den måde som nævnt oven over eller?
Avatar billede hjemmeskoen Nybegynder
08. april 2005 - 16:05 #51
Altså via

If session("brugernavn") = rs("brugernavn") Then
        Response.write CInt(rs("Total moent") + Session("moent_total"))
      Else
        Response.write CInt(rs("Total moent"))
      End If
Avatar billede l0w Nybegynder
11. april 2005 - 10:48 #52
Altså sådan det fungere er at alle informationerne ligger i sessionerne, det vil sige at man kan hente værdien ud fra sessionerne og se resultatet med det samme (uden at opdatere databasen), problemet med sessions er at man kun kan se informationerne for en selv (altså ens egen session) og ikke andre brugere på hjemmesiden.

I dette eksempel tager jeg lidt fra databasen og lidt fra sessionen til at udregne det totalt antal mønter man har:

If session("brugernavn") = rs("brugernavn") Then
  Response.write CInt(rs("Total moent") + Session("moent_total"))
Else
  Response.write CInt(rs("Total moent"))
End If

Den udregner dog kun det totale antal mønter hvis du kigger på profilen for din egen bruger (netop fordi du ikke har sessions værdierne for andre brugere).

Du spørger om der ikke er andre måder. Jo det er der da, men det ville blive mere besværligt, for der skulle vi lege med globale variabler som Application og dictonary variablerne. Spørgsmålet er, hvor langt er du villig til at gå (Vil anbefale at du læser videre på det, så du kan danne en forståelse af hvordan kan virke).
Avatar billede hjemmeskoen Nybegynder
11. april 2005 - 14:48 #53
Jep forstår det godt. Andre kan ikke se ens egen session. Men ville det være svært og udbygge med nogle af de ting som du foreslår? Altså "globale variabler som Application og dictonary variablerne"
Avatar billede l0w Nybegynder
12. april 2005 - 10:33 #54
Jeg ville sige det var meget udbygning for lille effekt.

Du kan prøve at kigge på dictonary:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comsrv2k/htm/CS_RP_Dictionary_KPSX_b.asp

Og application:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_foxhelp9/html/6856704f-b100-4a72-9ac6-028572de063d.asp

Applications ville nok være nemmest at bruge, da det mindre mest om session variablerne. Men jeg vil anbefale at du prøver at læse lidt videre på det. :)
Avatar billede hjemmeskoen Nybegynder
12. april 2005 - 12:00 #55
Er det noget du vil kunne lave måske for lidt ekstra point? ;)
Avatar billede hjemmeskoen Nybegynder
12. april 2005 - 12:00 #56
Eller nej egentlig ikke kan være okay. Mange tak for hjælpen. Lad mig få et svar :)
Avatar billede l0w Nybegynder
12. april 2005 - 12:11 #57
Tada :D
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