Avatar billede ferstin Nybegynder
30. december 2002 - 10:51 Der er 8 kommentarer og
1 løsning

mit script overskriver fil

Jeg har lavet en funktion som kan uploade billeder til min server og slette dem igen. Jeg kan ved hjælp af en session både oprette billede og vedhæfte en beskrivelse.

Nu er jeg stødt på problemer, som på en eller anden måde opstår periodisk, så jeg tror det har noget med min session at gøre.

Nogle gange når jeg vil uploade et nyt billede, så overskrives den der allerede eksisterer. (filerne bliver omdøbt til id-nummeret under upload). Derfor har jeg lige 2 spørgsmål:

1.: Kan der være problemer med lukning af session'en ved at bruge Set session("ID") = nothing?
2.: Kan en automatisk ID-nøgle fra en database anvende samme nummer mere end en gang?
Avatar billede ferstin Nybegynder
30. december 2002 - 10:56 #1
Problemet forsvinder når jeg fjerner alle poster fra databasen og uploader billerne på ny. Men nogle gange sker der et eller andet ... som om der ikke bliver tildelt ny ID-nummer i databasen, men overskrevet en eksisterende post....
Avatar billede dgivoni Nybegynder
30. december 2002 - 11:09 #2
Saa vidt jeg ved er det nej til baade 1 og 2.
Men maaske kan det have noget at goere med hvordan du faar fat i det id som det nye billede faar? Proev at poste lidt af koden herinde...
Avatar billede ferstin Nybegynder
30. december 2002 - 11:26 #3
Hvilken del af koden? den er ret lang...
Avatar billede dgivoni Nybegynder
30. december 2002 - 12:05 #4
der hvor du henter det nye id...
Har du i oevrigt tjekket i databasen at billedet som overskriver det forrige billede faktisk ogsaa har faaet det forrige billedes id?
Avatar billede ferstin Nybegynder
30. december 2002 - 12:22 #5
hmm.... ja, den får det forrige ID, hele posten overskrives. Både selve filen og billedets og ID i databasen.

Her henter jeg ID'en:

<!-- #include file="db.asp" -->
<%
Set rs = Server.CreateObject("ADODB.Recordset")
Query = "SELECT * FROM Billeder WHERE 1 = 2"
rs.Open Query, Connect, 1, 2
rs.AddNew
rs("Opdateret") = Now()
rs.Update


Dim FindId, rs
FindId = "SELECT TOP 1 * FROM billeder ORDER BY Opdateret DESC;"
Set rs =  connect.Execute(FindId)

session("ID") = rs("ID")
Response.Redirect "uploadfunktionen.asp"
%>
Avatar billede dgivoni Nybegynder
30. december 2002 - 13:02 #6
det lyder lidt underligt. Det er jo to forskellige ting, at indsaette en ny post og updatere en eksisterende. Det har jeg ikke lige nogen forklaring paa.

Din maade at hente det sidste id paa er ikke helt 'sikker', i hvert fald ikke hvis der er flere end én bruger ad gangen. Maaske kan det ogsaa skabe problemer i dette tilfaelde, selv om jeg nu ikke tror det. Proev at tjek hvordan de anbefaler at goere det her: http://www.4guysfromrolla.com/webtech/tips/t122600-1.shtml
Avatar billede ferstin Nybegynder
02. januar 2003 - 08:39 #7
Ja, måske har det noget med valget af den nyeste record i kolonnen Opdateret. Der bliver rigtigt nok oprettet en ny record. Men den vælger ikke den nyeste, har jeg fundet ud af. Jeg har lige testet det igennem. I stedet for at vælge den nye record hvor kolonnen Opdateret indeholder "1/2/2003 8:31:12 AM" så vælger den den record hvor kolonnen indeholder den ældre dato: "12/30/2002 11:03:22 AM" i stedet for.

Jeg må have kludret i oprettelse af ny dato... jeg prøver lige at finde en løsning... det er åbenbart ikke nok med rs("Opdateret") = now()
Avatar billede ferstin Nybegynder
02. januar 2003 - 08:56 #8
yes, jeg fant fejlen, tak for hjælpen. Jeg skulle lade være at oprette den nye dato i Opdateret ved brug af ASPen, men inde i selve databasen. Feltet skulle være et 'dato og klokkeslet' felt, og standartværdien skulle være =now(). Nu lader det til at mit problem er løst.
Avatar billede dgivoni Nybegynder
02. januar 2003 - 09:10 #9
det lyder godt og tak for point
/David
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