VVinnarenMedlem sedan sep. 2005833 inlägg kan man även göra så att kolumnen Nyheter i tabellen Redaktionen ökar med 1 för varje nyhet man lägger till? Hur gör man i så fall?
har försökt med
objConn.Execute("update redaktionen set nyheter = nyheter + 1 where namn = 'skribent')
får felet:
Kompileringsfel i Microsoft VBScript (0x800A0409)
Oavslutad strängkonstant
admin.asp, line 429, column 86
objConn.Execute("update redaktionen set nyheter = nyheter + 1 where namn = 'skribent')
-------------------------------------------------------------------------------------^
vet inte om jag la in den rätt?
' Sparar nyheten
ElseIf Request.QueryString("visa") = "nyhetspara" AND Session("Admin") = "true" Then
strDatum = now()
strRubrik = SafeSQL(Request.Form("rubrik"))
strNyhet = SafeSQL(Request.Form("nyhet"))
strSkribent = SafeSQL(Request.Form("Skribent"))
strlank = SafeSQL(Request.Form("lank"))
strlanknamn = SafeSQL(Request.Form("lanknamn"))
stremail = SafeSQL(Request.Form("email"))
strkategori = SafeSQL(Request.Form("kategori"))
objConn.Execute("INSERT INTO nyheter(Datum,Rubrik,Nyhet,Skribent, lank, lanknamn, email,kategori) VALUES('" & strDatum & "','" & strRubrik & "','" & strNyhet & "','" & strSkribent & "','" & strlank & "','" & strlanknamn & "','" & stremail & "','" & strkategori & "')")
objConn.Execute("update redaktionen set nyheter = nyheter + 1 where namn = 'skribent')
' Stänger och förstör alla objekt
Set objRS = nothing : objConn.Close : Set objConn = nothing
Response.Redirect sidnamn & "?visa=nyhet"
:stud
CcalsonMedlem sedan dec. 2003487 inlägg objConn.Execute("update redaktionen set nyheter = nyheter + 1 where namn = 'skribent'")
VVinnarenMedlem sedan sep. 2005833 inlägg nu får jag inget felmeddelande, men kolumnen nyheter uppdateras inte. Har jag formulerat den fel?
objConn.Execute("update redaktionen set nyheter = nyheter + 1 where namn = 'skribent'")
namn är kolumnen i tabellen redaktionen, o skribent är namnet på droppdown rutan och på kolumnen i tabellen nyheter.
J.N.Medlem sedan apr. 20031 660 inlägg
calson skrev:
objConn.Execute("update redaktionen set nyheter = nyheter + 1 where namn = 'skribent'")
Klassiskt fnuttfel, löses genom att räkna desamma. Lösningen är rätt i teorin, men inte i praktiken (ok, i praktiken också.)
Men, är du inte ute efter en räknare? Ändra fälttypen till räknare, så fixar det sig själv.
Vad menar du med "luft"? Får du en extra option? Utan bild på hur det ser ut, svårt att gissa.
Sedan ska du, som skrivit innan, inte spara epost, namn etc, utan en siffra, som referens till personen i skribenttabellen.
Är de andra problemen fixade? Kan inte direkt påstå att jag är med på om ditt parameter-fel är löst.
Skrev detta innan din post.
VVinnarenMedlem sedan sep. 2005833 inlägg I listrutan så blir det typ såhär:
namn1
Namn2
Namn3 osv, ett mellanslag emellen.
jag hade tänkt att ha en statistik del på varje medlem så man kan se hur många nuheter denne har skrivit.
Hur gör man när man länkar ihopp nyhetern med personens id?
Alla andra problem är lösta, utan det är dessa 2 eller 3
J.N.Medlem sedan apr. 20031 660 inläggOkej, då ger du dig in i html-koden, och ser troligen att du får med extra option-taggar. Därefter listar du ut varför de kommer med.
Vet inte om den kod som finns i http://www.webforum.nu/showthread.php?p=1196833#post1196833 är den som gäller, men där står "<option>". Det bör väl vara en avslutningstagg?
Att länka ihop person med id gör du enklast genom att skapa frågan i Access och kopiera sql-koden. Det är INNER JOIN vi är ute efter, och sådan kan man skriva själv, men enklast är att låta programmet skapa den.
http://www.devguru.com/Technologies/jetsql/quickref/inner_join.html
Bra övrigt löst sig, men vad var felet med parameter-frågan som vi höll på en stund med. ;)
http://www.webforum.nu/showthread.php?p=1196657#post1196657
VVinnarenMedlem sedan sep. 2005833 inlägg ok, nu avslutade jag med </option>, så nu är det ingen "luft" emellan.
Problemet innan med att hämta datan var att fältet hete email o inte epost.
Men hur löser jag de 2 återstående problemen?
att namnet sparas ihopp med nyheten, samt att fältet nyheter ökar med 1 efter varje nyhet man skriver?
J.N.Medlem sedan apr. 20031 660 inläggepost/email, ger det sådant fel? Okej, nu fungerar det.
Ang namn, nu märker du problemet med att inte använda relationer. Du kan spara namn och epost i value i option-taggen, ta emot, splitta på mellanslag (eller annat tecken), stoppa in dem med artikeln.
ELLER:
skapar du räknare i skribenttabellen, använder den som value, lagrar med posten. När du hämtar använder du join, enligt tidigare.
Baksidan med hur många ställen du får ändra om namn/epost ändras i första fallet förstår du säkert. Andra fallet är ett ställe.
Ang att öka med ett, skapa en räknare, som jag skrivit.
VVinnarenMedlem sedan sep. 2005833 inlägg det går inte ändra till räknare i tabellen redaktion, det kommer upp:
Det är endast tillåtet med ett enda fältmed räknare per tabell.
Men kan man göra så att emailen och skribenten sparas ihopp med nyheten i stället för ett nummer, blir så mycket man måste ändra då?
J.N.Medlem sedan apr. 20031 660 inläggVad har du räknaren till där/då har du redan en räknare, använd den!
Nja, så mycket jobb är det inte, hur ofta ändras namn/epost?
Men, för att göra på rätt och enklast sätt, bör du inte göra så. I min pseudo-kod får du exempel på hur man kan göra det.
VVinnarenMedlem sedan sep. 2005833 inlägg räknaren ligger till ID. men hur gör man för att spara id nummret istället för fälten skribent och email?
för att spara anv jag
' Sparar nyheten
ElseIf Request.QueryString("visa") = "nyhetspara" AND Session("Admin") = "true" Then
strDatum = now()
strRubrik = SafeSQL(Request.Form("rubrik"))
strNyhet = SafeSQL(Request.Form("nyhet"))
strSkribent = SafeSQL(Request.Form("Skribent"))
strlank = SafeSQL(Request.Form("lank"))
strlanknamn = SafeSQL(Request.Form("lanknamn"))
stremail = SafeSQL(Request.Form("email"))
strkategori = SafeSQL(Request.Form("kategori"))
objConn.Execute("INSERT INTO nyheter(Datum,Rubrik,Nyhet,Skribent, lank, lanknamn, email,kategori) VALUES('" & strDatum & "','" & strRubrik & "','" & strNyhet & "','" & strSkribent & "','" & strlank & "','" & strlanknamn & "','" & stremail & "','" & strkategori & "')")
objConn.Execute("update redaktionen set nyheter = nyheter + 1 where namn = 'skribent'")
' Stänger och förstör alla objekt
Set objRS = nothing : objConn.Close : Set objConn = nothing
J.N.Medlem sedan apr. 20031 660 inläggI listrutan ändrar du till RS("id") för value, namn/email bort.
På spara-sidan, ta bort allt med namn resp email, lägg till hämtning av id istället, tex skribent_id, justera INSERT också.
I databasen tas namn/email bort, lägg till tex strskribent_id.
NU förstår jag vad du vill med din addition för nyheter, du vill räkna antalet personen skrivit... :r
Du bör kunna göra som du gör.
VVinnarenMedlem sedan sep. 2005833 inlägg ok, har nu gjort följande:
gjort en kolumn med namnet skribent_id som är text.
sen ändrat till
' Sparar nyheten
ElseIf Request.QueryString("visa") = "nyhetspara" AND Session("Admin") = "true" Then
strDatum = now()
strRubrik = SafeSQL(Request.Form("rubrik"))
strNyhet = SafeSQL(Request.Form("nyhet"))
strlank = SafeSQL(Request.Form("lank"))
strlanknamn = SafeSQL(Request.Form("lanknamn"))
strskribent_id = SafeSQL(Request.Form("skribent_id"))
strkategori = SafeSQL(Request.Form("kategori"))
objConn.Execute("INSERT INTO nyheter(Datum,Rubrik,Nyhet,lank,lanknamn,skribent_id,kategori) VALUES('" & strDatum & "','" & strRubrik & "','" & strNyhet & "','" & strlank & "','" & strlanknamn & "','" & strskribent_id & "','" & strkategori & "')")
objConn.Execute("update redaktionen set nyheter = nyheter + 1 where namn = 'skribent'")
' Stänger och förstör alla objekt
Set objRS = nothing : objConn.Close : Set objConn = nothing
men hur ska jag ändra droppdownrutan?
<select name="namn" style="width: 150px;">
<%
Set objRS = objConn.Execute("SELECT * FROM redaktionen")
if not objRS.eof then
Do until objRS.EOF
response.write "<option value="""&objRS("email")&""">"&objRS("namn") & "</option>"
objRS.Movenext
Loop
objRS.close
else
objRS.close
end if
%>
</select>
tog bort rutan för email där.
J.N.Medlem sedan apr. 20031 660 inläggHmm, varför gör du fältet som text, det är väl siffror du ska ha in? :i
Ändra objRS("email") till objRS("skribent_id"), ändra också <select name="namn"> till det du frågar efter.
Sedan bör det fungera!
VVinnarenMedlem sedan sep. 2005833 inlägg ska det även stå objRS("skribent_id") i dropdownrutan?
finns ju ingen kolumne med namnet skribent_id i tabellen redaktion, utan den heter bara id?
J.N.Medlem sedan apr. 20031 660 inläggJag skrev skribent_id eftersom du kallar på Request.Form("skribent_id")).
Eftersom man oftast inte kan följa koden exakt, blir alla råd mer eller mindre exakta, och behöver anpassas. Detta är ett sådant fall.
För att få det konsekvent brukar jag ge nyheter, artiklar etc "huvudtabeller" namnet id för räknare, och "stödtabeller", skribenter, bilder, kategorier namn efter tex skribent_id.
Du får göra som du vill, men för överskådlighet är det lämpligast att hålla samma namn i alla tabeller, dvs antingen 'id' eller 'skribent_id'.
VVinnarenMedlem sedan sep. 2005833 inlägg nu hänger jag nog inte med redigt.
Jag har i tabellen Redaktion ett fält som heter ID
I tabellen Nyheter har jag ett fält som heter ID samt ett som heter skribent_id.
Är det inte i Skribent_id i nyheterna som skribentens ID nummer som man får från tabellen redaktion som ska skrivas in där?
J.N.Medlem sedan apr. 20031 660 inläggExakt!
Men, för att göra det överskådlig kan man kalla fältet samma i båda tabellerna, och eftersom du inte kan ha två fält i samma tabell med samma namn, kan du döpa det till skribent_id.
Du kan alltså ha det precis som du har det nu. Det väljer du själv.
VVinnarenMedlem sedan sep. 2005833 inlägg ok, men då är problemet att inget nummer sparas i skribent_id.
J.N.Medlem sedan apr. 20031 660 inläggOch du har bytt namn på selecten som jag skrev?
Felsökning #1:
Skriv ut variabeln där den hämtas.
Felsökning #2:
Skriv ut sql-satsen om varibeln skrivs ut ovan.
Felsökning #3:
Allt annat :h
Felsökning #4:
wF :i