Just nu i M3-nätverket
Gå till innehåll

Visa eller inte visa


sjohan

Rekommendera Poster

Jag har en nyhetssida där jag vill kunna välja om nyheten ska visas eller inte. Den ska inte ta bort nyheten. Jag har därför lagt in en kryssruta i databasen. När den är ikryssad så visas nyheten när den inte är ikryssad så visas inte nyheten. Sedan så har jag på administrations sidan lagt till en kryssruta. När den är ikryssad så är det meningen att nyheten ska visas och tvärt om. När man trycket på uppdatera så skickas man vidare till spara2.asp som innehåller.

 

<% Set Conn = Server.CreateObject("ADODB.Connection") %>

<!--#include file="../../db.dat"-->

<%

Set RecSet = Server.CreateObject("ADODB.Recordset")

Uppdatera = "SELECT * FROM nyhet WHERE ID = " & Request.Form("ad") & " "

RecSet.Open Uppdatera, Conn, 3, 3

RecSet("Nyhet") = Request.Form("Nyhet")

 

If Request.Form("ruta") = "True" Then

RecSet("Visa") = "True"

ElseIf Request.Form("ruta") = "False" Then

RecSet("Visa") = "False"

End If

 

RecSet.Update

RecSet.Close

Conn.Close

Response.Redirect "default.asp"

%>

 

Iclude filen innehåller sökvägen till databasen. ad är en gömd ruta som innehåller Id nummret, nyhet innehåller nyheten och ruta är kryssrutan. Varför fungerar det inte?

 

Tacksam för svar

//Johan

Länk till kommentar
Dela på andra webbplatser

vet inte riktigt om jag förstår vad du menar, men är det detta som är problemet:

 

Response.Redirect "default.asp

 

Vill du tillbaka till default.asp???

 

Länk till kommentar
Dela på andra webbplatser

Nej jag vill att den ändrar värdet i ja/nej rutan i databasen berodende på om den kryssrutan på adminsidan är ikryssad eller inte

 

Länk till kommentar
Dela på andra webbplatser

nu tror jag att jag förstår. Det var detta du skrev som förbryllade mig:

Den uppdaterar nyheten utan att protestera och sedan så är det inget mer

 

Men kan du inte skippa spara2.asp och fllytta över denna kod till vanliga uppdateringsfilen (gissningsvis spara.asp). Kan inte se verför man måste uppdatera i två steg som du gör.

 

Länk till kommentar
Dela på andra webbplatser

spara.asp är den som lägger till informationen när man skapar en ny nyhet. Då får man inte välja om den ska visas eller inte. Sedan så har jag en redigerins sida ifall man vill ändra något i nyheten. Där kan man även välja om nyheten ska visas eller inte. Den sidan skickas då till spara2.asp

 

Länk till kommentar
Dela på andra webbplatser

Men du kommer åt spara2.asp på annan väg än när du lägger till en ny nyhet?? Alltså om du nu vill redigera en befintlig nyhet, fungerar det?

 

Om det är OK så är koden OK

 

Länk till kommentar
Dela på andra webbplatser

Det är inga problem med att uppdatera själva nyheten. Problemet är att uppdatara rutom som bestämmer om nyheten ska visas eller inte.

 

Länk till kommentar
Dela på andra webbplatser

Är inte säker på vad som skulle kunna vara fel, men att klarare defuiniera vad i db:n som ska uppdateras borde inte vara fel. kanske du kan lägga till

RecSet("ruta") = Request.Form("ruta")

 

Detta för att visa var TRUE resp FALSE ska sättas ini db:n.

 

Länk till kommentar
Dela på andra webbplatser

I databasen så har jag en ruta som heter ruta och är av sorten Ja/Nej eller även kallad kryssruta. Denna är det som ska ändras och det har jag fått veta att det är True respektive False som gör.

 

Länk till kommentar
Dela på andra webbplatser

vad jag ville säga var att du inte definierat vad request.form("ruta") ska uppdatera i databasen. Vilken kolumnen datan ska sättas in i. Du har ju gjort det med ett fält:

RecSet("Nyhet") = Request.Form("Nyhet")

 

Alltså det du skrev in formulärfältet som hette Nyhet ska uppdatera databasfältet som heter Nyhet. Ska du inte göra likadant trots att det är kryssrutor. Hur ska datorn veta vad han´ska göra?

 

Länk till kommentar
Dela på andra webbplatser

Ja oj jag tänkte fel. Informationen från Request.Form ska in i RecSet("Visa")

[inlägget ändrat 2002-12-02 18:38:31 av sjohan]

Länk till kommentar
Dela på andra webbplatser

Jag förstår inte varför folk envisas med att använda RecordSet när man skall uppdatera något i en databas.

 

Följande borde fungerar smärtfritt:

 

1. På din "admin" sida listar du alla nyheter i en lång rad med en checkbox till varje nyhet, denna checkbox döper du till showNews och sätter value till postens-idnummer.

 

När du sedan väljer säg 4 olika nyheter som du vill visa så när du trycker på submit så kommer showNews innehålla en kommaseparerad sträng med 4 id-nummer, ex 3,5,1,18

 

Om du sedan har följande kod på nästa sida så kommer nyheter med id-nummer 1,3,5 och 18 att updateras så att visa = true

 

sSQL = "UPDATE [nyhet] SET [Visa] = True WHERE ID IN (" & Request.Form("showNews") & ")"
oConn.execute sSQL,,128

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Länk till kommentar
Dela på andra webbplatser

Jag lyckas inte få det att fungera. Har fixat allt. Men den säger ändå:

 

Microsoft JET Database Engine error '80040e14'

 

Syntax error (missing operator) in query expression 'ID IN ()'.

 

/sjohan/spara.asp, line 7

 

Rad 7 innehåller:

SQL = "UPDATE [nyhet] SET [Visa] = True WHERE ID IN (" & Request.Form("showNews") & ")"

 

Namnen stämmer. Vad kan vara fel?

 

<% Set Conn = Server.CreateObject("ADODB.Connection") %>

<!--#include file="../../db.dat"-->

<%

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "UPDATE [nyhet] SET [Visa] = True WHERE ID IN (" & Request.Form("showNews") & ")"

Conn.execute SQL,,128

RecSet.Update

RecSet.Close

Conn.Close

Response.Redirect "default.asp"

%>

db.dat innehåller sökvägen till databasen

 

Länk till kommentar
Dela på andra webbplatser

1. Ta bort allt som har med RecSet att göra eftersom det inte behövs.

 

2. det verkar som din request.form("showNews") inte innehåller några värden.

 

Skriv ut din SQL sats innan du kör så kan du se om den ser bra ut.

 

sSQL = "...."
response.write sSQL
response.flush()
oConn.execute sSQL,,128

 

Kom också ihåg att den koden endast sätter värden till true, alltså du kan inte få någon som redan är true att bli false med den koden, utan så fall måste du lägga till ytterliggare en SQL sats.

 

typ

sSQL = "UPDATE [nyhet] SET [visa] = False;"

sSQL = sSQL & "UPDATE [nyhet] SET [Visa] = True WHERE ID IN (" & Request.Form("showNews") & ")"

 

Borde fungera rätt bra..

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...