Avatar billede Slettet bruger
06. april 2007 - 19:03 Der er 8 kommentarer

Tilføj til database trods ikke udfyldte felter

Jeg har følgende script hvor mine brugere kan uploade et billede eller et videoklip.
Problemet er at alt skal udfyldes før teksten tilføjes i databasen. Jeg vil gerne have at det der er blevet udfyldt kommer i databasen, selvom der er nogle felter der ikke er udfyldt.
Nogle der kan hjælpe mig?

<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Server.ScriptTimeout = 2200
Upload.OverwriteFiles = False
On Error Resume Next

Upload.SetMaxSize 10048576 ' Limit files to 1MB
Count = Upload.Save(Server.MapPath("/images"))
%>
<HTML>
<BODY BGCOLOR="#FFFFFF">
<CENTER>

<% If Err <> 0 Then %>

<FONT SIZE=3 FACE="Arial" COLOR=#0020A0>
<H3>The following error occured while uploading:</h3>
</FONT>

<h2>"<% = Err.Description %>"</h2>
</FONT>

<FONT SIZE=2 FACE="Arial" COLOR="#0020A0">
Please <A HREF="aspupload.asp">try again</A>.
</FONT>

<% Else %>
<h2>Success! <% = Count %> file(s) have been uploaded.</h2>
</FONT>

<% For Each File in Upload.Files
filename = File.FileName %>
<TD><B><% = File.OriginalPath %></B></TD>
<TD ALIGN=RIGHT VALIGN="TOP"><% =File.Size %> bytes</TD>
<TD ALIGN=RIGHT VALIGN="TOP"><% =File.OriginalSize %> bytes</TD><TR>

<%
t = t + 1
    strbeskrivelse = Replace(Upload.Form("spilbesk"), "'", "''")
path = file.originalpath 
strspil = 1
    stroverskrift = Replace(Upload.Form("spiln"), "'", "''")
    strnews = Replace(Upload.Form("news"), "'", "''")
    strkategori = Replace(Upload.Form("kategori"), "'", "''")

    strmoviekategori = Replace(Upload.Form("spilkat"), "'", "''")

' Tilfojer til databasen
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("myupload.mdb")
Conn.Open DSN


If t = 1 Then
    strSQL = "INSERT INTO seneste (pic) VALUES ('"& File.Filename &"')"
    Conn.Execute(strSQL)
    set sID = Conn.Execute("SELECT @@IDENTITY AS NewID")
    Session("senesteid") = sID("NewID")
Else
    strUpdate = "UPDATE seneste SET filnavn = '"& File.Filename &"', beskrivelse = '"& strbeskrivelse &"', flashnavn = '"& path &"', kategori = '"& strkategori &"', moviekategori = '"& strmoviekategori &"', visnyhed = '"& strnews &"', overskrift = '"& stroverskrift &"', spil = '"& strspil &"' WHERE id = "& Session("senesteid") &""

    Conn.Execute(strUpdate)
    Session("senesteid") = ""


End If
Next
End If
%>
Avatar billede Slettet bruger
06. april 2007 - 19:44 #1
Det nemmeste og hurtigste er vel at bruge et javascript, som chekker om alle felter er korrekt udfyldt, før data sendes til serveren og databasen...
Det er tilmed også clientside. ;-)
Avatar billede eagleeye Praktikant
06. april 2007 - 19:48 #2
Der er to metoder enten 1. udelade kolonnen fra SQL sætningen eller 2. sætte den til NULL via SQL sætningen dog uden ' omkring. Så koden kommer til at fylde lidt mere.

1. udelade kolonnen fra SQL sætningen

Du skal sikre at du har sat kolonerne til Obligatorik = Nej i Access design del for tagellen. Og hvis du bruger samme SQL sætning til en opdatering så vil data i den udeladne kolonne ikke blive overskrevet.


Koden vil se ud som dette:


    strUpdate = "UPDATE seneste SET filnavn = '"& File.Filename & "'"
    if strbeskrivelse <> "" then strUpdate = strUpdate & ", beskrivelse = '" & strbeskrivelse &"'"
    if path <> "" then strUpdate = strUpdate & ", flashnavn = '"& path &"'"
    if strkategori <> "" then strUpdate = strUpdate & ", kategori = '"& strkategori &"'"
    if strmoviekategori <> "" then strUpdate = strUpdate & ", moviekategori = '"& strmoviekategori &"'"
    if strnews <> "" then strUpdate = strUpdate & ", visnyhed = '"& strnews &"'"
    if stroverskrift <> "" then strUpdate = strUpdate & ", overskrift = '"& stroverskrift &"'"
    if strspil <> "" then strUpdate = strUpdate & ", spil = '"& strspil &"'"

    strUpdate = strUpdate =  " WHERE id = "& Session("senesteid")





2. sætte den til NULL

Hvis du flytter denne SQL til en ren update senre vil NULL slette det som står i kolonnerne.

Koden vil blive i stil med:



    strUpdate = "UPDATE seneste SET filnavn = '"& File.Filename & "'"
    if strbeskrivelse <> "" then
      strUpdate = strUpdate & ", beskrivelse = '" & strbeskrivelse &"'"
    else
      strUpdate = strUpdate & ", beskrivelse = NULL"
    if path <> "" then
      strUpdate = strUpdate & ", flashnavn = '"& path &"'"
    else
      strUpdate = strUpdate & ", flashnavn = NULL"
    if strkategori <> "" then
      strUpdate = strUpdate & ", kategori = '"& strkategori &"'"
    else
      strUpdate = strUpdate & ", kategori = NULL"
    if strmoviekategori <> "" then
      strUpdate = strUpdate & ", moviekategori = '"& strmoviekategori &"'"
    else
      strUpdate = strUpdate & ", moviekategori = NULL"
    if strnews <> "" then
      strUpdate = strUpdate & ", visnyhed = '"& strnews &"'"
    else
      strUpdate = strUpdate & ", visnyhed = NULL"
    if stroverskrift <> "" then
      strUpdate = strUpdate & ", overskrift = '"& stroverskrift &"'"
    else
      strUpdate = strUpdate & ", overskrift = '"& stroverskrift &"'"
    if strspil <> "" then
      strUpdate = strUpdate & ", spil = '"& strspil &"'"
    else
      strUpdate = strUpdate & ", spil = NULL"

    strUpdate = strUpdate =  " WHERE id = "& Session("senesteid")



du kan nøjes med at if sætnniger ved de kolonner som må være tomme?
Avatar billede eagleeye Praktikant
06. april 2007 - 19:54 #3
Mine to løsninger kan bruges hvis du tillader tomme felter :-)
Tillader du ikke tomme felter er det extend løsning med et javascript.
Avatar billede hostgirl Nybegynder
06. april 2007 - 20:48 #4
lige som kommentar:

strUpdate = strUpdate =  " WHERE id = "& Session("senesteid")

Den linje giver nok en lille error. Prøv i stedet

strUpdate = strUpdate & " WHERE id = "& Session("senesteid")
Avatar billede Slettet bruger
07. april 2007 - 09:28 #5
Mange tak for hjælpen, synes dog ikke det giver noget resultat... Min database er stadig tom i alle tekstfelterne, hvis jeg prøver at fylde alt ud virker det fint.

Jeg tog løsning nr. 1, prøver jeg med nr. 2 giver den fejl.

Mvh.
Henrik
Avatar billede eagleeye Praktikant
07. april 2007 - 10:33 #6
hviklen fejl får du?
Avatar billede vaisgaard Nybegynder
08. april 2007 - 10:43 #7
I table design i Access har du sat:

Required: No
Allow zero length: Yes
Avatar billede eagleeye Praktikant
14. april 2007 - 09:50 #8
Det kunne tyde på der kommer er en fejl et sted på siden..

Prøv at fjerne denne linie:

On Error Resume Next
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