08. maj 2006 - 21:35
Der er
21 kommentarer og 1 løsning
Funktion flere gange på en side
Hej eksperter! Jeg har denne her funktion... Den regner ud hvor gammel personen er: <% SQL = "SELECT * FROM users WHERE kon='Dame' ORDER BY id DESC LIMIT 3 " set RS = objConn.Execute(SQL) if rs.eof then response.write("<br><br><b>Der er desværre opstået en fejl!/b>") else Do Until rs.eof Dato = rs("birthday") Function GetAge(Dateofbirth) GetAge = Year(Date) - Year(Dateofbirth) If DateDiff("s", Now, Replace(Dateofbirth, Year(Dateofbirth), Year(Date))) > 0 Then GetAge = GetAge - 1 End If End Function %> <tr> <td height="23" class="Left" width="110" style="padding-left:6px;"><b>» </b><a title="Oprettet d. <%=rs("created")%>" target="_self" href="/Users/Profile.asp?ID=<%=rs("id")%>"><%=rs("username")%></a></td> <td height="23" class="Right" align="right" width="40" style="padding-right:3px;"><b> år</b></td> </tr> <% rs.movenext loop rs.close end if %> Men når den bliver kørt 3 gange på en side går den amok - den siger syntax error ud for 'Function'
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Skriv Function ... End Function een gang på siden, fx. før du går i gang med at bruge den.
<table border="0" width="100%" id="table2" cellspacing="0" cellpadding="0" height="0" bgcolor="#FFFFFF"> <% Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=users; UID=root; PWD=" & MySQLPWD & ";" SQL = "SELECT * FROM users WHERE kon='Dame' ORDER BY id DESC LIMIT 3 " set RS = objConn.Execute(SQL) if rs.eof then response.write("<br><br><b>Der er desværre opstået en fejl!/b>") else Do Until rs.eof GetAge = Year(Date) - Year(Dateofbirth) If DateDiff("s", Now, Replace(Dateofbirth, Year(Dateofbirth), Year(Date))) > 0 Then GetAge = GetAge - 1 End If %> <tr> <td height="23" class="Left" width="110" style="padding-left:6px;"><b>» </b><a title="Oprettet d. <%=rs("created")%>" target="_self" href="/Users/Profile.asp?ID=<%=rs("id")%>"><%=rs("username")%></a></td> <td height="23" class="Right" align="right" width="40" style="padding-right:3px;"><b> år</b></td> </tr> <% rs.movenext loop rs.close end if %> <!-- / 5 nyeste piger --> </table>
Så viser den slet ikke noget i den tabel hvor det skal være - den skriver heller ikke ngoet i kildekoden...
Jeg er nok ved at blive blind, men hvor indsætter du GetAge henne i din tabel?
Det gør jeg ikke nogen steder - men den kommer med fejl lige gyldigt hvad...
Hvad er det nu lige for en fejlmeddelelse du får?
Jeg får egentlig ikke nogen fejlmeddelse, der kommer bare ingen ting frem. <table border="0" width="100%" id="table2" cellspacing="0" cellpadding="0" height="0" bgcolor="#FFFFFF"> <% Function GetAge(Dateofbirth) SQL = "SELECT * FROM users WHERE kon='Dame' ORDER BY id DESC LIMIT 3 " set RS = objConn.Execute(SQL) if rs.eof then response.write("<br><br><b>Der er desværre opstået en fejl!/b>") else Do Until rs.eof GetAge = Year(Date) - Year(Dateofbirth) If DateDiff("s", Now, Replace(Dateofbirth, Year(Dateofbirth), Year(Date))) > 0 Then GetAge = GetAge - 1 End If %> <tr> <td height="23" class="Left" width="110" style="padding-left:6px;"><b>» </b> <a title="Oprettet d. <%=rs("created")%>" target="_self" href="Users/Profile.asp?ID=<%=rs("id")%>"><%=rs("username")%></a></td> <td height="23" class="Right" align="right" width="40" style="padding-right:3px;"><b> år</b></td> </tr> <% rs.movenext loop rs.close end if End Function %> </table>
Er variablen "Dateofbirth" defineret et andet sted end den kode du har vist her? Det skulle vel ikke være rs("Dateofbirth") i stedet for...?
ok, dvs. resultatet fra databasen er tomt...?
Nej, for denne her funktion virker på en side hvor den bare ser ud som følgende: <% Dato = rs("birthday") Function GetAge(Dateofbirth) GetAge = Year(Date) - Year(Dateofbirth) If DateDiff("s", Now, Replace(Dateofbirth, Year(Dateofbirth), Year(Date))) > 0 Then GetAge = GetAge - 1 End If End Function Response.Write GetAge(Dato) %>
Du skal også kalde funktionen for at den bliver udført, altså <% Function GetAge(Dateofbirth) SQL = "SELECT * FROM users WHERE kon='Dame' ORDER BY id DESC LIMIT 3 " set RS = objConn.Execute(SQL) if rs.eof then response.write("<br><br><b>Der er desværre opstået en fejl!/b>") else Do Until rs.eof GetAge = Year(Date) - Year(Dateofbirth) If DateDiff("s", Now, Replace(Dateofbirth, Year(Dateofbirth), Year(Date))) > 0 Then GetAge = GetAge - 1 End If %> <tr> <td height="23" class="Left" width="110" style="padding-left:6px;"><b>» </b> <a title="Oprettet d. <%=rs("created")%>" target="_self" href="Users/Profile.asp?ID=<%=rs("id")%>"><%=rs("username")%></a></td> <td height="23" class="Right" align="right" width="40" style="padding-right:3px;"><b> år</b></td> </tr> <% rs.movenext loop rs.close end if End Function %> <table border="0" width="100%" id="table2" cellspacing="0" cellpadding="0" height="0" bgcolor="#FFFFFF"> <% GetAge(DateofBirth) %> </table> Jeg synes nu ikke den er helt færdig, men lad os tage et skridt ad gangen... :)
Som du kan se i koden du skriver af efter, skal du hente den aktuelle fødselsdato i et felt i tabellen, dvs. via dit recordset: rs - det gør du ikke i nogle af dine egne eksempler.
Ja, men du har jo også lagt hele renderingen af tabellens indhold ind i den funktion der hedder GetAge, så med mindre du kalder den, så vil den ikke blive udført... Jeg er lidt forvirret, så lad os lige se om vi ikke kan få synkroniseret vores beskeder :)
Når jeg sætter den kode ind siden den bare: Microsoft VBScript runtime error '800a000d' Type mismatch: '[string: ""]' /online2.asp, line 28 Linie 28 er: If DateDiff("s", Now, Replace(Dateofbirth, Year(Dateofbirth), Year(Date))) > 0 Then
Jamen, det er ikke så svært ;) Jeg vil æde 2 kiks på at den her virker: <% Function GetAge(Dateofbirth) GetAge = Year(Date) - Year(Dateofbirth) If DateDiff("s", Now, Replace(Dateofbirth, Year(Dateofbirth), Year(Date))) > 0 Then GetAge = GetAge - 1 End If End Function SQL = "SELECT * FROM users WHERE kon='Dame' ORDER BY id DESC LIMIT 3 " set RS = objConn.Execute(SQL) if rs.eof then response.write("<br><br><b>Der er desværre opstået en fejl!/b>") else Do Until rs.eof Dato = rs("birthday") %> <tr> <td height="23" class="Left" width="110" style="padding-left:6px;"><b>» </b><a title="Oprettet d. <%=rs("created")%>" target="_self" href="/Users/Profile.asp?ID=<%=rs("id")%>"><%=rs("username")%></a></td> <td height="23" class="Right" align="right" width="40" style="padding-right:3px;"><b> <%=GetAge(Dato)%> år</b></td> </tr> <% rs.movenext loop rs.close end if %>
Til sidst går jeg ud fra vi har tænkt os at skrive noget i stil med GetAge(rs("birthday")) - men det finder vi nok ud af :-)
Så må du gerne begynde at spise 2 kiks erikjacobsen :-) Den virker faktisk - smider du et svar?
Det var hvis den ikke virkede, jeg ville spise 2 kiks. Du kan få dem i stedet for. Jeg samler slet ikke på point, tak.
Nårh ok - tak skal du ha :-) Skal vi dele softspot?
Nej, tag du dem bare tilbage - jeg synes ikke rigtig at jeg kom helt igennem som jeg gerne ville - ellers tak for buddet :)
Svar - tak for hjælpen drenge ;)
Kurser inden for grundlæggende programmering