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.
Någon
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 →Ingen som kan.
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
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]
Ingen som har någon lösning på problemet?
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.
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
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]
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...
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>
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.
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...
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>
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 **
=================================
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.

