webForumDet fria alternativet

Någon

ASP

35 svar · 467 visningar · startad av Kent · sida 2 av 2

Frågan, av Kent

Någon vänlig själ som skulle kunna fixa till den här koden så den funkar, kommer ifrån boken Läd dig active server pages 2:0 på 3 veckor. \<%@ Language=VBScript %\> \<html\> \<% Dim RSAdd Dim SQL \<!--#include file="conn.asp"--\> SQL = "Select \ from Forum WHERE 1=2" Set RS = databas.execute(SQL) RS.Add.Open SQL, Conn, 1, 2 RSAdd.AddNew RSAdd("Namn") = Request.Form("txtNamn") RSAdd("Epost")

Läs frågan i sin helhet →
Medlem sedan juli 2000355 inlägg
#21

Att lägga till data till ex en gästbok kan jag, men detta är ju ´till ett forum, då ska insert.asp se skillnad på om det är ett svarsinlägg eller ett nytt inlägg, har försökt med alla era tipps men får det inte att funka.
Så lite mer hjälp vore kanon.

Medlem sedan juli 2000355 inlägg
#22

Ingen som kan.

Medlem sedan mars 20001 266 inlägg
#23

Du kan göra det med en if sats ex länken
insert.asp?value=svara&id=5

<% If request.querystring("value") = "svara"  then
%>

Osv, sen när man gör själva inserten så får du ha antingen ha två tabeller, en med svar en med frågor.
Eller så har du en kryssruta, som visar ifall det är ett nytt meddelande eller inte inte är ju då en fortsättning på tråden och kan då lämpligt vara ikryssad.

Kort, men hoppas du fick ut nåt av det.
Andreas

Medlem sedan juli 2000355 inlägg
#24

Du har inget kodexemplel för att visa hur du menar.
Varför funkar inte min kod då,
den är ju från en bok, då borde den ju vara rätt tycker man.

[Redigerat av Kent den 07 sep 2000]

Medlem sedan juli 2000355 inlägg
#25

Ingen som har någon lösning på problemet?

Medlem sedan juli 20003 825 inlägg
#26

Våga Vägra RsADD & Co! Nu blir jag säkert halshuggen men det skiter jag i. Jag har byggt databaser i över ett år och jag tycker de där rs.add (alltså liknande kod du använder ovan) är förjävla jobbiga och jag fattade aldrig hur dom fungerade. Det gör jag fortfarande inte (kanske om jag tänker tillräckligt mycke, men vem orkar tänka!? ;-) )

Gör så här: Skicka med en parameter, dbaction (databas) och sätt den antingen till "insert" eller till "update" beroende på om det är en ny post eller om du redigerar en befintlig.

Sen kollar du helt enkelt vilket värde dbaction har:

<%
IF session("x_links") = "" THEN response.redirect "/admin/login.asp"
%>

<!--#include virtual="/admin/open.asp" -->

<%
dbaction = request("dbaction")
x_name = request("x_name")
x_name = replace(x_name, "'", "''" )
x_url  = request("x_url")
x_url  = replace(x_url, "'", "''" )
x_text = request("x_text")
x_text = replace(x_text, "'", "''" )

IF dbaction = "UPDATE" THEN
' UPDATE CURRENT DATABASE
	SQL = "UPDATE [links] SET "
	SQL = SQL & "[x_created] =#" & date() & "#, "
	SQL = SQL & "[x_creator] ='" & session("x_name") & "' "
	SQL = SQL & "[x_links_topic] = " & request("x_links_topic") & ", "
	SQL = SQL & "[x_name] ='" & x_name & "', "
	SQL = SQL & "[x_url] ='" & x_url & "', "
	SQL = SQL & "[x_text] ='" & x_text & "', "
	SQL = SQL & "WHERE [x_ID] =" & request("x_ID") & ";"
'	response.write SQL
	Conn.Execute(SQL)
	x_ID = "?x_ID=" & request("x_ID")
ELSE
' INSERT, MAKE A NEW POST
	SQL = "INSERT INTO [links] (x_created, x_creator, x_links_topic, x_view, x_name, x_url, x_text) VALUES "
	SQL = SQL & "(#" & date() & "#, '" & session("x_name") & "', '" & request("x_links_topic")
	SQL = SQL &  "', FALSE, '" & x_name & "', '" & x_url & "', '" & x_text & "');"

'	response.write SQL
	Conn.Execute(SQL)
	SQL = "SELECT * FROM [links_topic] ORDER BY [x_ID] DESC"
	set mySQL = Conn.Execute(SQL)
	x_ID = "?x_ID=" & mySQL("x_ID")
END IF
%>

<!--#include virtual="/admin/close.asp" -->

<%
response.redirect "index.asp" & x_ID
%>

Jag vet inte om du fattar ovanstående. Jag har en ASP fusk sida i word som du kan få av mig. Den har jag alltid brevid mig just in case... Den mailar jag gärna till dig, jakob@olailindgren.se

Kan du göra FYRA saker med SQL kan du göra väldigt mycket. Du måste kunna skriva till databasen, läsa från databasen, uppdatera en befintlig post samt givetvis radera från databasen.

Kör hårt!! ;-)

------------------
Life is a bitch... and then you marry one.

Medlem sedan sep. 200061 inlägg
#27

Eclipse:
Personligen tycker jag det är mycket lättare att få översikt med rs.add och rs.update än med en lång harang till SQL kommando.

Just my 2 cents

Medlem sedan mars 20002 836 inlägg
#28

Hello,
Insert eller AddNew? det är väl ändå beroende på vad man ska göra för ngt i databasen.

Det var någon som sa något om databas integritet, när det gällde att uppdatera ett värde med 1 så fort det kom ett nytt inlägg för att veta hur många inlägg tex som gjorts i tex detta forum.

Med insert hela vägen får man inte den "integriteten" men med rs.AddNew och rs.Update så får man det.

Kolla och testa denna kod:

strTexten = "Detta är ett Test"
strKategori = 1

' Create a Database Connection object
'------------------------------------
Set objConn = Server.CreateObject("ADODB.Connection")
		objConn.Provider = "Microsoft.Jet.OLEDB.4.0"
		objConn.ConnectionString = "Data Source=c:\dbaser\test.mdb"
		objConn.Open

' SQL query to update database and insert new data
'-------------------------------------------------
strSQL = "SELECT t1.Id, t1.Total, t2.Id2, t2.Texten, t2.Kategori " & _
		"FROM TBL_1 t1, TBL_2 t2 WHERE t1.Id = t2.Kategori " & _
		"AND t2.Kategori = strKategori"

' Create Recordset object
'------------------------
Set objRS = Server.CreateObject("ADODB.Recordset")
	objRS.Open strSQL, objConn, 1, 2

	intTotal = objRS(1)
	objRS(1) = intTotal + 1
	objRS.AddNew
	objRS(3) = strTexten
	objRS(4) = strKategori
	objRS.Update
	objRS.Close

	objConn.Close
Set objRS = nothing
Set objConn = nothing

Här uppdateras ett fält i en tabell samtidigt som en annan tabell får in en ny post.

Undrar om det är möjligt att göra med INSERT metoden med att endast öppna och köra ett Recordset med samma SQL-fråga?

/PatrikB

------------------
=================================
** ZWGdesign **
=================================

[Redigerat av PatrikB den 10 sep 2000]

Medlem sedan dec. 19998 577 inlägg
#29

Kanske... :) Det finns ju Select Into... men den har jag inte försatt mig i, så jag kan inte säga om den funkar så som du beskriver med din kod här ovan...

------------------
Kom hem till mig...

Medlem sedan juni 200032 967 inlägg
#30

vide, select into skapar alltid en ny tabell, så det är nog inte ett alternativ i det här fallet.

------------------
<A HREF="http://www.cartman.nu" TARGET=_blank>
det man inte minns har inte hänt.
hit med en berka!</A>

Medlem sedan dec. 19998 577 inlägg
#31

Ah... hehe, oki... :r

------------------
Kom hem till mig...

Medlem sedan juli 20003 825 inlägg
#32

Jag måste försvara SQL! Till min livsuppgift gäller även att försvara tydlig, läsbar och återanvändbar kod. Till vilket pris som helst, det är sanningen, måste man skriva tydlig kod framför snabbare och kortare kod. Alternativet är att man inte fattar vad man gjorde förra veckan och då kanske man måste göra om skiten...

SQL är läckert no matter what! ;-) Jag skiter i om man kan uppdatera 15 databaser samtidigt med ett enda kommando på en rad med något annat verktyg / språk. Jag kommer fortfarande hålla fast vid SLQ. Varför???

Därför att det är mycket viktigt för mig och företaget att projekt inte är knutna till mig som person. Jag vill att andra ska förstå vad jag har tänkt... Nu kanske dom inte gör det iallafall, men om jag skulle uppdatera 15 databaser på en gång skulle dom definitivt inte göta det! Inte jag heller! ;-)

Dagens servrar är så snabba så dom fixar några rader extra. Jag har ingen förståelse för folk som döper fält till t1, t2, t3 osv. Fan, fade ni tänkt man skulle fatta vad de innehåller eller?? Döp dom till vad de innehåller, namn, stad, telefon, fax! Själv sätter jag ett "x_" framför så att mina namn inte krockar med reserverade namn. Men det är mer personlig stil, x_name, x_city, c_phone...

---

En dag kanske rs.Add lyser upp min himmel också. Gärna tillsammans med t1, t2 och t3. I'm waiting for the good times and until then <B>I stick with SQL!!</B>. ;-)

/ jakob

------------------
Life is a bitch... and then you marry one.

Medlem sedan dec. 19998 577 inlägg
#33

Jag håller med dig... delvis.

Man måste (som du säger) skapa en enkel kod som andra lätt kan förstå, annars så kommer du inte att fatta vad själv har skrivit ett år senare när du skall göra en uppdatering...

MEN. Det beror helt på vad man skall göra med koden... Att skapa t.ex 'paging' med en vanlig Select-sats är mycket jobbigare än att använda ett recordset... Så det finns tillfällen då man gör det lättare för sig att använda ett recordset framför ren SQL...

------------------
Kom hem till mig...

Medlem sedan juni 200032 967 inlägg
#34

Att skapa t.ex 'paging' med en vanlig Select-sats är mycket jobbigare än att använda ett recordset

givetvis. men nu är det ju recordset-objektets metoder för förändring och nyinläggning av data vi inte tycker om.

------------------
<A HREF="http://www.cartman.nu" TARGET=_blank>
det man inte minns har inte hänt.
hit med en berka!</A>

Medlem sedan mars 20002 836 inlägg
#35

Hello,

visst gäller det att döpa tabeller och fält rätt, fast nu var det ju inte det det handlade om. Detta var endast en test kod, inget som ska användas IRL så att säga.

En annan sak som oftast glöms bort är all DOKUMENTATION för "applikationen" man skriver. Finns den, uppspaltad på rätt sätt, med funktioner, databas scheman etc så är det en enkel match att sätta sig in i en annans kod.

//PatrikB

------------------
=================================
** ZWGdesign **
=================================

Medlem sedan dec. 19996 721 inlägg
#36

Ja, detta har jag ju själv tjatat om. Självklart finns det tillfällen då addnew etc. fyller ett syfte, men i 99 fall av 100 är SQL det enda rätta. Jag tycker att det är tråkigt att så många nykomlingar får lära sig "fel" metoder först.

279 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)