webForumDet fria alternativet

Slå ihop 2 forms

4 svar · 376 visningar · startad av CatZ

CatZMedlem sedan jan. 20022 440 inlägg
#1

Jag har nu 2 forms. Ett för att skriva in Information om tävlingar och ett för att ladda upp html filer med resultat.

<%
		Case "addform"
	%>
	<form name="" method="post" action="Mall.asp?cmd=addsubmit">
	Namn, Vad tävlingen heter.
<br>
	<input type="text" name="Namn" size="50">
<br>
<br>
	Datum, det datum då tävlingen ska spelas-.
<br>
	<input type="text" name="Datum" size="50">
<br>
<br>
	Jourspelare om någon finns annars lämnas detta blankt.
<br>
	<input type="text" name="Jour" size="50">
<br>
<br>
	Spelform, Typ Barometer, LAgtävling Imp, Across the Field.
<br>
	<input type="text" name="Spelform" size="50">
<br>
<br>
	Ansvarig, Ansvarig för tävlingen eller Tävlingsledare:<br>
	<input type="text" name="Ansvarig" size="50">
<br>
<br>
	Övrig Info, Om det behövs föranmälan eller om det är en annan dag än planerat.<br>
	<input type="text" name="Anmarkning" size="50">
<br>
<br>
<input type="submit" value="Skicka">
</form>
	<%
		Case "addsubmit"

		Set rs = Server.CreateObject("ADODB.Recordset")
		SQL = "INSERT INTO Mall (Namn, Datum, Jour, Spelform, Ansvarig, Anmarkning) VALUES ('" & CharConvert(Request.Form("Namn")) & "', '" & CharConvert(Request.Form("Datum")) & "', '" & Request.Form("Jour") & "', '" & Request.Form("Spelform") & "', '" & Request.Form("Ansvarig") & "', '" & Request.Form("Anmarkning") & "')"
		rs.Open SQL, OBJdbConnection, 3, 3
		Response.Redirect("Mall.asp")
	%>

Den koden använder jag för att skriva in information om tävlingar och lägga till nya tävlingar. För att ladda upp resultat använder jag följande kod:

	<form method="post" enctype="multipart/form-data" action="mall.asp?cmd=resultat">
		file:<br><input type=file name="fil"><p>
	<input type=submit value="upload!">
	</form>

<%
		Case "resultat"

Set Upload = Server.CreateObject("Persits.Upload")

Upload.SetMaxSize 100000, True

Count = Upload.Save

Set File = Upload.Files("fil")

If Not File Is Nothing Then

	Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath(".\databas\wbbas.mdb")
   	Set rs = Server.CreateObject("adodb.recordset")

   Hash = File.MD5Hash
   rs.Open "SELECT * from Upload WHERE Hash='" & Hash & "'", Connect, 2, 3
   If Not rs.EOF Then
      Response.Write "This file already exists in the database."
      Response.End
   End If
   rs.Close

   rs.Open "Upload", Connect, 2, 3

   rs.AddNew
   rs("FBlob") = File.Binary
   rs("FNamn") = File.FileName
   rs("FStor") = File.Size
   rs("hash") = Hash
   rs.Update

	UdId= rs("UdId")

   rs.Close
   rs.Open "Mall", Connect, 2, 3

   rs.AddNew
   rs("FId") = FId
   rs("FNamn") = File.FileName
   rs.Update

   Response.Write "File saved."
Else
   Response.Write "File not selected."
End If
%>

Kan jag lägga ihop dom i samma form så att jag kan skriva in info om tävlingar utan att behöva ladda upp resultat eller ladda upp resultat om informationen redan finns om tävlingen ?

Jesper TMedlem sedan nov. 20017 144 inlägg
#2

Ja, det går bra!

Eftersom att du använder Aspupload så måste du använda:
Upload.Form istället för request.form, byt ut alla dem.

ex. ...

...Ansvarig") & "', '" & upload.Form("Anmarkning") & "')"

Sedan tar du bort ena case satsen och smackar ihop koderna!

Kom ihåg att "file" kräver: <form method="post" enctype="multipart/form-data" action="Mall.asp?cmd=addsubmit">

MVH Jesper T

CatZMedlem sedan jan. 20022 440 inlägg
#3

Lite längre

Ok nu har jag skrivit ihop det så att det fungerar att både skicka resultat och skriva info samtidigt. MEN!

Bara ett litet problem :) Jag använder ett download script för att besökarna ska kunna visa html sidan direkt i browsern utan att behöva spara den på disk först.

Den koden ser ut så här:

<%
Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath(".\databas\wbbas.mdb")
Set db = Server.CreateObject("ADODB.Connection")
db.Open Connect
SQL = "SELECT * FROM Mall where SmId = " & Request("SmId")
Set rs =db.Execute( SQL )
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment;filename=" & Trim(rs("FNamn"))
Response.AddHeader "Content-Length", rs("FStor")
Response.BinaryWrite rs("FBlob")
%>

Men den vill inte funka x(
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'Id ='.
/wexiobridgen/download.asp, line 6

Måste jag ge filen 1 id och tävlingen 1 id ? hur löser jag detta ?

solbulleMedlem sedan mars 20015 287 inlägg
#4

Vad innehåller Request("SmId") ?
Hur får den sitt värde?

Felet pekar på: 'Id ='.
Ser inte någon Id i din kod!?!

Btw tycker jag inte det stämmer med din tidigare kod, är det rätt tabellnamn, sparade du inte filen i upload?

Samt som sagt att du använde ett annat id tidigare.

(Sen att det kanske är överkurs att lägga in hela sidan eller bilden eller vad det nu var i databasen är en annan sak.)

CatZMedlem sedan jan. 20022 440 inlägg
#5

...

Jag har fixat så att det fungerar att lägga in filerna i databasen, jag har fixat så att det går ta bort dem och jag har fixat så det går att länken till filerna fungerar.

Men det som är knepigt nu är hur tusan ska man kunna ändra på något som är inlagt redan ?

Jag behöver ju hämta ID på det som är inlagt men ASPUpload så som jag kör det i "Lägg till ny" använder sig av rs.AddNew
och det fungerar inte när man ska uppdatera.


<a href="Mall.asp?cmd=editform&id=<%= rs1.fields("SmId")%>">Uppdatera</a>

	<%
		Case "editform"
		Set rs1 = Server.CreateObject("ADODB.Recordset")
		SQL1 = "SELECT * FROM Mall WHERE SmId =" & Request.QueryString("id")
		rs1.Open SQL1, OBJdbConnection, 3, 3
	%>

<form method="post" enctype="multipart/form-data" action="mall.asp?cmd=editsubmit">
<input type="hidden" name="SmId" value="<%= rs1.fields("SmId")%>">
Namn, Vad tävlingen heter.
<br>
	<input type="text" name="SmNamn" value="<%= rs1.fields("SmNamn")%>" size="50">
<br>
<br>
	Datum, det datum då tävlingen ska spelas.
<br>
	<input type="text" name="SmDatum" value="<%= rs1.fields("SmDatum")%>" size="50">
<br>
<br>
	Jourspelare om någon finns annars lämnas detta blankt.
<br>
	<input type="text" name="SmJour"  value="<%= rs1.fields("SmJour")%>" size="50">
<br>
<br>
	Spelform, Typ Barometer, LAgtävling Imp, Across the Field.
<br>
	<input type="text" name="SmForm"  value="<%= rs1.fields("SmForm")%>" size="50">
<br>
<br>
	Ansvarig, Ansvarig för tävlingen eller Tävlingsledare:<br>
	<input type="text" name="SmAnsv"  value="<%= rs1.fields("SmAnsv")%>" size="50">
<br>
<br>
	Övrig Info, Om det behövs föranmälan eller om det är en annan dag än planerat.<br>
	<input type="text" name="SmAnm"  value="<%= rs1.fields("SmAnm")%>" size="50">
<br>
<br>
Resultat:
<br>
<input type=file name="FResultat">
<br>
<br>
<input type="submit" value="Skicka">
</form>

<%
		Case "editsubmit"
		Set Upload = Server.CreateObject("Persits.Upload")

		Upload.SetMaxSize 100000, True

		Count = Upload.Save

		Set File = Upload.Files("FResultat")

		If Not File Is Nothing Then
		   	Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath(".\databas\wbbas.mdb")
		   	Set rs = Server.CreateObject("adodb.recordset")

		   	Hash = File.MD5Hash
		   	rs.Open "SELECT * from Mall WHERE Hash='" & Hash & "'", Connect, 2, 3
		   	If Not rs.EOF Then
		      	Response.Write "This file already exists in the database."
		      	Response.End
		   	End If
		   	rs.Close

		   	rs.Open "Mall", Connect, 2, 3

		   	rs.AddNew
		   	rs("SmId") = Upload.Form("id")
		   	rs("FBlob") = File.Binary
		   	rs("FNamn") = File.FileName
		   	rs("FStor") = File.Size
		   	rs("hash") = Hash
		   	rs("SmNamn") = Upload.Form("SmNamn")
		   	rs("SmDatum") = Upload.Form("SmDatum")
		   	rs("SmJour") = Upload.Form("SmJour")
		   	rs("SmForm") = Upload.Form("SmForm")
		   	rs("SmAnsv") = Upload.Form("SmAnsv")
		   	rs("SmAnm") = Upload.Form("SmAnm")
		   	rs.Update
			Response.Redirect("Mall.asp")
		Else
			Connect = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath(".\databas\wbbas.mdb")
			Set rs = Server.CreateObject("adodb.recordset")

			rs.Open "Mall", Connect, 3, 3
			rs.Update
						rs("SmId") = Upload.Form("SmId")
						rs("SmNamn") = Upload.Form("SmNamn")
					   	rs("SmDatum") = Upload.Form("SmDatum")
					   	rs("SmJour") = Upload.Form("SmJour")
					   	rs("SmForm") = Upload.Form("SmForm")
					   	rs("SmAnsv") = Upload.Form("SmAnsv")
					   	rs("SmAnm") = Upload.Form("SmAnm")
		   	rs.Update
		Response.Redirect("Mall.asp")
	End If
	%>

Skulle ju starkt tro att jag måste ändra lite på denna koden... ersätta rs.AddNew på något sätt... men jag vet verkligen inte hur!

139 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)