Avatar billede pluginbaby Nybegynder
29. juli 2005 - 20:02 Der er 12 kommentarer og
1 løsning

efter 15 indlæg springer rækkefølgen rundt?

Hej.

Jeg er ny i asp, og ny her, så bær over med mig hvis jeg ikke forstår tingene ved første øjekast eller poster forkert :-)

Jeg har denne kode som jeg skal bruge til en gæstebog, men ved besked nr 16 i gæstebogen springer rækkefølgen rundt fra at være 16,15,14,13,12,..... til at være 9,2,3,4,5,6,8,16,10,11,12,13,14,15,7 hvilket er meget underligt synes jeg... Nogen der har en forklaring?
Her er koden jeg bruger:

<% @LANGUAGE = "VBScript" %>
<%Option Explicit%>
<!--#include file="adovbs.inc"-->
<html>
<head>
<title>Nyt</title>
<link REL="STYLESHEET" HREF="standard.css" TYPE="text/css">

</head>
<body>
<center><h2>Seneste Nyhed</h2></center>
<%

dim i,RS, objRS, sqlstring, beskrivelse, header
dim conn, ODBCpath, nydato

header = TRIM(Request("header"))
beskrivelse = TRIM(Request("beskrivelse"))

function OpenConn( DBName )
Set Conn = Server.CreateObject("ADODB.Connection")
ODBCpath = left(request.servervariables("PATH_TRANSLATED"), instrrev(request.servervariables("PATH_TRANSLATED"), "\"))
Conn.Open "DBQ=" & ODBCpath & DBName & ";DefaultDir=" & ODBCpath & ";Driver={Microsoft Access Driver (*.mdb)}"
end function

function draw

nydato = RS("Oprettet")
Response.Write "<tr><td><b>" & RS("Header") & " - </b>(" & Day(nydato) & "/" & Month(nydato) & "/" & Year(nydato) & ")</td></tr>"
Response.Write "<tr><td>" & RS("Beskrivelse") & "<hr width=70% color=#000000 size=1></td></tr>"

End function


OpenConn("nyheddb.mdb")

IF (header = "") THEN
%>

<form action=nyhed.asp name=addNews>
<center>
<table>
<tr><td><b>Overskrift:<br><input type=text size=50 name=header></td></tr>
<tr><td>Beskrivelse:<br>
<textarea cols=50 rows=3 name=beskrivelse></textarea></td></tr>
<tr><td><input type=submit value="Tilføj nyhed til listen"></td></tr>
</table>
</form>

<div align="center">
  <table border="0" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111" width="70%">

<%

    Set RS = Server.CreateObject("ADODB.Recordset")
    Set RS.ActiveConnection = Conn

    Sqlstring = "SELECT * FROM News ORDER BY oprettet DESC"
    RS.Open sqlString

    While NOT RS.EOF
        draw
        RS.MoveNext
    Wend
    Response.Write "</table></div>"


ELSE

Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.CursorLocation = adUseServer
    objRS.CursorType = adOpenKeyset
    objRS.LockType = adLockOptimistic
    objRS.Open "News", Conn, , adCMdTable
   
    objRS.AddNew
    objRS("Beskrivelse") = beskrivelse
    objRS("header") = header
    objRS("Oprettet") = Date

    objRS.Update
    objRS.Close

Response.Redirect "nyhed.asp"

END IF

%>

</body>
</html>
Avatar billede nielle Nybegynder
29. juli 2005 - 20:11 #1
Hvordan er dit felt "oprettet" defineret i din "News" tabel?
Avatar billede pluginbaby Nybegynder
29. juli 2005 - 21:53 #2
"Oprettet" er defineret med egenskab Date/time.
Avatar billede nielle Nybegynder
29. juli 2005 - 23:34 #3
Når du skriver:

16,15,14,13,12,..... til at være 9,2,3,4,5,6,8,16,10,11,12,13,14,15,7

- er det så rigtigt forstået at nogle af de tidligere indlæg kommer flere gange? F.eks. 15, 16 og 12?
Avatar billede pluginbaby Nybegynder
30. juli 2005 - 09:07 #4
Nej tallene er ment som ID numrene, altså den bytter rundt på rækkefølgen af indlægne på nyhedssiden. Se her:
http://www.liselarsen.dk/aksel/nyhed.asp
Prøv at skrive 16 eller hvad du nu vil som nyhed, når du tilføjer den vil rækkefølgen på de forrige bytte rundt til den jeg har beskrevet.
( jeg har indtastet nyhederne selv, og kaldt dem numre for at finde ud af hvilken rækkefølge den byttede til)
Avatar billede pluginbaby Nybegynder
30. juli 2005 - 09:09 #5
Efter indlæg nr 16 holder rækkefølgen startende med nr 9 (ved ikke hvor længe) men de nye beskeder som skulle komme ind i toppen kommer ind midt i rækkefølgen. Jeg synes det er meget ulogisk :-D
Avatar billede nielle Nybegynder
30. juli 2005 - 09:37 #6
Hvordan ser de enkelte værdier i oprettet ud? Er der både en dato og et klokkeslet, eller er klokkeslettet bare 00:00:00?
Avatar billede pluginbaby Nybegynder
30. juli 2005 - 10:17 #7
7/30/2005 på de indlæg du har lavet. altså mm/dd/yyyy.
Kan jeg ændre koden til at lave rækkefølgen efter ID nummer, startende med det højeste? Ville det måske ikke løse problemet?
Avatar billede nielle Nybegynder
30. juli 2005 - 10:24 #8
Er der ikke klokkeslet på posterne som de ligger i databasen? Det ville i hvertfald kunne forklare hvad der sker.
Avatar billede nielle Nybegynder
30. juli 2005 - 10:46 #9
En database er optimeret med hastighed for øje, Når man udtrækker data via et SQL-kald, så betyder dette at man ikke kan være sikker på at rækkerne kommer ud i sammerækkefølge som de ser ud til at ligge i tabellen. For det er sikkert hurtigere at gøre det på en anden måde (for databaseprogrammet).

Det er sikkert det du er ude for her. Med dit kald:

SELECT * FROM News ORDER BY oprettet DESC

- er du sikret at alle poster bliver sorteret på dato. Du kan f.eks. se at de poster jeg har oprettet her i dag (30/7/2005) ikke er blandet sammen med dem du selv oprettede i går (29/7/2005). Derimod har du ingen garanti for at poster som har *samme* datostempel kommer i den samme rækkefølge de er blevet lagt ind i – og det gør de jo rent faktisk heller ikke.

Hvorfor det så lige begynder at gå galt ved 16 poster skyldes mere den måde databasen er sat sammen på internt end noget andet.

En løsning på dit problem kunne være at du ikke kun loggede datoen for hvornår en nyhed var oprettet, men også tidspunktet. Så ville

... ORDER BY oprettet DESC

- fungere som du forventede det.

En anden løsning kunne være at sortere efter id som du selv siger. Dette ville dog kræve at dit id var et felt af typen autoincrement sådan at du er sikker på at det altid stiger med nye artikler.

Som sagt er dette en mulig løsning, men efter min menig så er det en mere korrekt løsning at sortere efter dato+tidspunkt.
Avatar billede pluginbaby Nybegynder
30. juli 2005 - 11:41 #10
Det må klart være der fejlen ligger, fedt. Man kan bare se sig blank på sådan et problem, Tak for hjælpen.
Mit ID er autonumber, og jeg har lige prøvet at sortere efter det, og det virker tilsyneladende uden problemer. Ellers ved jeg hvor jeg skal rette. Igen Tak for hjælpen, hvordan får du dine fortjente point.
Avatar billede nielle Nybegynder
30. juli 2005 - 14:35 #11
... ved at lægge et svar :^)
Avatar billede pluginbaby Nybegynder
30. juli 2005 - 15:15 #12
Det skulle være accepteret, tak for det
Avatar billede nielle Nybegynder
30. juli 2005 - 15:25 #13
Det lykkedes ikke helt i første omgang - husk at du skal markere navnet på dem, som skal have point, før at du kan acceptere svaret.
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