Avatar billede larsen45 Juniormester
24. juli 2004 - 19:17 Der er 56 kommentarer og
1 løsning

slet flere rækker checkbox

Jeg har en form på http://www.floorballlife.com/gaestbog/testoversigt.asp som viser nogle poster i min access-database. Nu ønsker jeg at kunne vælge de enkelte rækker ud og fjerne dem i min database. Hvordan?
Avatar billede thesurfer Nybegynder
24. juli 2004 - 19:34 #1
For at gøre det nemmere, her er en rettelse til din form:

<input type="checkbox" name="Visindlaeg" value="12">24/7-2004 - 18:20:26<br>
<input type="checkbox" name="Visindlaeg" value="5">24/7-2004 - 18:20:30<br>
<input type="checkbox" name="Visindlaeg" value="2">24/7-2004 - 18:20:33<br>
<input type="checkbox" name="Visindlaeg" value="7">24/7-2004 - 18:20:38<br>
<input type="checkbox" name="Visindlaeg" value="8">24/7-2004 - 18:20:44<br>

Tallet der står i "value"-parameteren, er selve id'et fra database.
Linierne genereres sådan her:


"<input type=""checkbox"" name=""Visindlaeg"" value=""" & rs("id") & """>""" & rs("NOGET") & "<br>"

På den måde indsættes id ("12", "5", osv) og dato ("24/7-2004 - 18:20:26", "24/7-2004 - 18:20:30" osv) automatisk.


Når formen submittes, aflæses værdierne af checkboxene, og poster slettes via en loop.
Mht aflæsning af checkboxe: http://www.codehungry.com/asptut/checkboxes.asp

Så laver du en loop, der sletter indholdet af checkbox-arrayen:


for i = 0 to ubound(arrChk)
  strSQL = "Delete from personer where Id = " & arrChk(i)
  conn.execute(strSQL)
next
Avatar billede thesurfer Nybegynder
24. juli 2004 - 19:40 #2
Mht strSQL = "Delete from personer where Id = " & arrChk(i):

"personer" er navnet på din tabel (skal rettes)
arrChk(i) indeholder id'en fra "value"-parameteren
Avatar billede larsen45 Juniormester
24. juli 2004 - 19:53 #3
Vi må hellere lige få det helt præcist sat sammen.

se lige min testoversigt.asp side med paging her:
------------------------------------------
<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From gaest"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("gaestbogenfloorball.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
    rs.PageSize = 5
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount 

for each x in Request.querystring
If instr(x, "id") > 0 Then
  response.write x & "=" & Request.querystring(x)
End if
next
%>
<form action="Deleteall.asp?id=<%=rs("id")%>" method="post">
<p style="margin-top: 0; margin-bottom: 0">
<input type="submit" value="Slet" name="sletnu">
<input type="reset" value="Nulstil" name="Resetindhold"></p>
<p style="margin-top: 0; margin-bottom: 0">&nbsp;<%
Do While Not rs.EOF And intRecCount > 0
%>
<input type="checkbox" name="Visindlaeg" value="<%=rs("Visindlaeg")%>"><%=rs("Dato")%><br>

<%
    intRecCount = intRecCount - 1
    rs.MoveNext
    Loop
End If
%>
</p>
</form>
<%
rs.Close
Set rs = Nothing
%>

 
 
    <table border="0" width="100%" id="table13">
        <tr>
            <td>
      &nbsp;</td>
        </tr>
        <tr>
            <td>
      <font face="Verdana" size="1">
        <p style="margin-top: 0; margin-bottom: 0">
<% Response.Write "Side " & intPage & " af " & intPageCount %>
|
<%
If Clng(intPage) > 1 Then
    Response.Write "<a href=testoversigt.asp?page=" & intPage - 1 & "><b>« Forrige</b></a>"
Else
    Response.Write "« Forrige"
End If
%>
|
<%
If Clng(intPage) < Clng(intPageCount) Then
    Response.Write "<a href=testoversigt.asp?page=" & intPage + 1 & "><b>Næste »</b></a> "
Else
    Response.Write "Næste »"
End If
%>

og så selve den side som skal slette de indlæg som jeg har markeret.
deleteall.asp
-----------------------------------------------------
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("gaestbogenfloorball.mdb")
Conn.Open DSN

for each x in Request.querystring
If instr(x, "id") > 0 Then
  Conn.Execute("delete from gaest where id = "&Request.Querystring(x))
End if
next

'Luk database
Conn.Close
Set Conn = Nothing

Response.Redirect("testoversigt.asp")       
%>
Avatar billede thesurfer Nybegynder
24. juli 2004 - 20:01 #4
Prøv det her (slette-delen):

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("gaestbogenfloorball.mdb")
Conn.Open DSN

dim valgte
valgte = ""

valgte = Request.Form("Visindlaeg")

if valgte <> "" then

  valgte = Split(valgte, ",")

  for i = 0 to ubound(valgte)
    Conn.Execute("delete from gaest where id = " & valgte(i))
  next

end if

'Luk database
Conn.Close
Set Conn = Nothing


Husk det med id'erne..
Avatar billede larsen45 Juniormester
24. juli 2004 - 20:15 #5
Den sletter kun et felt Hvis jeg markere flere og så trykker slet
Avatar billede thesurfer Nybegynder
24. juli 2004 - 20:16 #6
Hvordan ser din HTML kode ud?
Avatar billede thesurfer Nybegynder
24. juli 2004 - 20:17 #7
Jeg sagde jo, at der skulle stå rs("id") :-)

Se her:
<input type="checkbox" name="Visindlaeg" value="<%=rs("Visindlaeg")%>"><%=rs("Dato")%><br>
Avatar billede larsen45 Juniormester
24. juli 2004 - 20:23 #8
det ser sådan her ud nu:

<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From gaest"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("gaestbogenfloorball.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
    rs.PageSize = 5
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount 

for each x in Request.querystring
If instr(x, "id") > 0 Then
  response.write x & "=" & Request.querystring(x)
End if
next
%>
<form action="Deleteall.asp?id=<%=rs("id")%>" method="post">
<p style="margin-top: 0; margin-bottom: 0">
<input type="submit" value="Slet" name="sletnu">
<input type="reset" value="Nulstil" name="Resetindhold"></p>
<p style="margin-top: 0; margin-bottom: 0">
<%
Do While Not rs.EOF And intRecCount > 0
%>
<input type="checkbox" name="Visindlaeg" value="<%=rs("Visindlaeg")%>"><%=rs("Dato")%><br>

<%
    intRecCount = intRecCount - 1
    rs.MoveNext
    Loop
End If
%>
</p>
</form>
<%
rs.Close
Set rs = Nothing
%>

 
 
    <table border="0" width="100%" id="table13">
        <tr>
            <td>
      &nbsp;</td>
        </tr>
        <tr>
            <td>
      <font face="Verdana" size="1">
        <p style="margin-top: 0; margin-bottom: 0">
<% Response.Write "Side " & intPage & " af " & intPageCount %>
|
<%
If Clng(intPage) > 1 Then
    Response.Write "<a href=testoversigt.asp?page=" & intPage - 1 & "><b>« Forrige</b></a>"
Else
    Response.Write "« Forrige"
End If
%>
|
<%
If Clng(intPage) < Clng(intPageCount) Then
    Response.Write "<a href=testoversigt.asp?page=" & intPage + 1 & "><b>Næste »</b></a> "
Else
    Response.Write "Næste »"
End If
%>
Avatar billede thesurfer Nybegynder
24. juli 2004 - 20:24 #9
Det er stadig forkert :-)

Det skal være:

<input type="checkbox" name="Visindlaeg" value="<%=rs("id")%>"><%=rs("Dato")%><br>

..og hvor blev slette-delen af..?
Avatar billede larsen45 Juniormester
24. juli 2004 - 20:40 #10
Det virker perfekt nu efter at jeg fik rettet dette her til:
<input type="checkbox" name="Visindlaeg" value="<%=rs("id")%>"><%=rs("Dato")%><br>

Takker mange gange for hjælpen.
Det eneste jeg egenligt godt kunne bruge nu var en
oversigt foroven som kunne fortælle mig hvor mange indlæg der rent faktisk ligger i databasen. nået med: (Der ligger 40 indlæg ialt i databasen)
Som så skulle stå lige over <formen
Avatar billede thesurfer Nybegynder
24. juli 2004 - 20:45 #11
hvad med?: Der er <%=rs.count%> indlæg ialt i databasen
Avatar billede thesurfer Nybegynder
24. juli 2004 - 20:46 #12
eller er det rs.RecordCount?
Avatar billede thesurfer Nybegynder
24. juli 2004 - 20:54 #13
Eller kunne man være lidt kreativ:

dim antal
antal = 0

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From gaest"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("gaestbogenfloorball.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then

do while not rs.eof
antal = antal + 1
loop
rs.movefirst

    rs.PageSize = 5
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount
Avatar billede larsen45 Juniormester
24. juli 2004 - 21:12 #14
Ja undskyld jeg ikke lige har svaret tilbage men har fået en meget underlig fejl
efter at jeg prøve at oploade det sidste du skrev til mig:

se lige her:


Oversigt

Active Server Pages error 'ASP 0113'

Script timed out

/gaestbog/testoversigt.asp

The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.
Avatar billede thesurfer Nybegynder
24. juli 2004 - 21:13 #15
dammit.. jeg glemmer det hver gang :-)
Det skal være:

do while not rs.eof
antal = antal + 1
rs.movenext
loop
rs.movefirst

linien "rs.movenext" er MEGET vigtig.. hvis den ikke tilføjes, sidder den bare fast :-)
Avatar billede larsen45 Juniormester
24. juli 2004 - 21:20 #16
Ja så virker siden igen, men den viser ikke nået antal ialt.
er det nu mig som laver ged iden:

<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If


dim antal
antal = 0

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From gaest"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("gaestbogenfloorball.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then

do while not rs.eof
antal = antal + 1
rs.movenext
loop
rs.movefirst

    rs.PageSize = 5
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount 


for each x in Request.querystring
If instr(x, "id") > 0 Then
  response.write x & "=" & Request.querystring(x)
End if
next
%>
<form action="Deleteall.asp?id=<%=rs("id")%>" method="post">
<p style="margin-top: 0; margin-bottom: 0">
<input type="submit" value="Slet" name="sletnu">
<input type="reset" value="Nulstil" name="Resetindhold"></p>
<p style="margin-top: 0; margin-bottom: 0">
<%
Do While Not rs.EOF And intRecCount > 0
%>
<input type="checkbox" name="Visindlaeg" value="<%=rs("id")%>"><%=rs("Dato")%><br>

<%
    intRecCount = intRecCount - 1
    rs.MoveNext
    Loop
End If
%>
</p>
</form>
<%
rs.Close
Set rs = Nothing
%>

 
 
    <table border="0" width="100%" id="table13">
        <tr>
            <td>
      &nbsp;</td>
        </tr>
        <tr>
            <td>
      <font face="Verdana" size="1">
        <p style="margin-top: 0; margin-bottom: 0">
<% Response.Write "Side " & intPage & " af " & intPageCount %>
|
<%
If Clng(intPage) > 1 Then
    Response.Write "<a href=testoversigt.asp?page=" & intPage - 1 & "><b>« Forrige</b></a>"
Else
    Response.Write "« Forrige"
End If
%>
|
<%
If Clng(intPage) < Clng(intPageCount) Then
    Response.Write "<a href=testoversigt.asp?page=" & intPage + 1 & "><b>Næste »</b></a> "
Else
    Response.Write "Næste »"
End If
%>
Avatar billede thesurfer Nybegynder
24. juli 2004 - 21:22 #17
ahh.. det er fordi, jeg har glemt at fortælle dig, hvordan du udskriver antallet :-)

Det gør du sådan her:

Der er <%=antal%> indlæg i databasen
Avatar billede larsen45 Juniormester
24. juli 2004 - 21:31 #18
Fint det var lige hvad jeg manglede nu virker det Super godt som det skal.
Jeg takker mange gange for din geniale hjælp.
Du skulle vel ikke være at træffe på MSN eller ICQ også??

Point er på vej....
Avatar billede thesurfer Nybegynder
24. juli 2004 - 21:35 #19
Jo, men jeg foretrækker at holde Eksperten-relaterede spørgsmål, på Eksperten :-)
Plus at jeg ikke oplyser messenger/icq/email på et offentligt forum :-)

-- Takker for points :-)
Avatar billede larsen45 Juniormester
24. juli 2004 - 21:39 #20
Okay
men så kan du da få mine her.
ICQ:259566168
MSN:dsl52640@vip.cybercity.dk
Avatar billede thesurfer Nybegynder
24. juli 2004 - 21:49 #21
Det er op til dig, om du vil oplyse dine data..
Men man skal passe på, med at gøre det, pga spam og spambots.

Definitioner:
- Spam: http://searchsecurity.techtarget.com/gDefinition/0,,sid14_gci213031,00.html
"Spam is unsolicited e-mail on the Internet. From the sender's point-of-view, it's a form of bulk mail, often to a list obtained from a spambot or to a list obtained by companies that specialize in creating e-mail distribution lists. To the receiver, it usually seems like junk e-mail. It's roughly equivalent to unsolicited telephone marketing calls except that the user pays for part of the message since everyone shares the cost of maintaining the Internet. Spammers typically send a piece of e-mail to a distribution list in the millions, expecting that only a tiny number of readers will respond to their offer. Spam has become a major problem for all Internet users."

- Spambot: http://searchsecurity.techtarget.com/gDefinition/0,294236,sid14_gci896167,00.html
"A spambot is a program designed to collect, or harvest, e-mail addresses from the Internet in order to build mailing lists for sending unsolicited e-mail, also known as spam. A spambot can gather e-mail addresses from Web sites, newsgroups, special-interest group (SIG) postings, and chat-room conversations. Because e-mail addresses have a distinctive format, spambots are easy to write."
Avatar billede larsen45 Juniormester
24. juli 2004 - 21:59 #22
ja det er rigtigt nok man skal da passe på men nu ville jeg jo gerne hvis muligt
kunne kontakte dig på andre måder end lige eksperten.dk
Jeg har forresten lige givet dig nået Karma.
Avatar billede thesurfer Nybegynder
24. juli 2004 - 22:13 #23
Jeg er kan godt se ideen i det :-)

Men hvis alle gjorde det, ville jeg ikke bestille andet, end at chatte med en masse folk, og løse probs udenfor Eksperten :-)

Jeg har allerede en del på listen.. :-)
Avatar billede thesurfer Nybegynder
24. juli 2004 - 22:14 #24
"er kan" = "kan"

Det der "er" må være en fejl fra Ekspertens side ;-)
Avatar billede larsen45 Juniormester
24. juli 2004 - 22:21 #25
ja præcis angående fejlen......

Nå men det var da ærgeligt at jeg ikke kunne komme på din liste.
Det må jeg leve med.
Avatar billede larsen45 Juniormester
25. juli 2004 - 00:41 #26
Ahh pokkers nu skal jeg have 2 stk. <Form ind i dette her
hvordan klare jeg det??? de skal begge være i loopet
Avatar billede thesurfer Nybegynder
25. juli 2004 - 16:02 #27
uhm... hvad er det du vil? :-)
Avatar billede larsen45 Juniormester
25. juli 2004 - 16:13 #28
Jo Det jeg gerne vil er at kunne have de samme slags checkboxe som står ved siden slette bokse som skal bruges til at kunne fjerne indlæg så de ikke er læse bare i gæstebogen. Hvis jeg så gerne vil give mulighed for at folk kan læse indlægget igen fjerner jeg bare fluebenet i boksen og så trykker opdater og så kan alle igen se indlægget i gæstebogen.

Håber jeg er til at forstå.

Så en ny form med checkbox som så sender en til en asp update side som herefter opdatere alt som er blevet hakket af eller ikke hakket af med et flueben i checkboxe.
Avatar billede thesurfer Nybegynder
25. juli 2004 - 16:28 #29
Så opretter du bare et ekstra felt i databasen (f.eks. "vises"), som er af type Ja/Nej (True/False).

Når du så skal vise indlægget, checker du om indlæggets "vises"-felt er Ja eller Nej.
Hvis den er Ja, vises indlægget. Ellers vises den ikke.

Mht formen:
Indsæt ekstra checkboxe med name="vises" OG id="<%=rs("id")%>. Derefter checker du om "vises" er krydset af for værdien (som i 24/07-2004 20:01:26).
Hvis den er det, skal den ikke slettes, med "vises" (feltet i databasen) sættes til "Ja".

SQL'en ser sådan ud: Update tabelnavn Set kolonne = 'værdi' Where betingelse

Eksempel: Conn.execute("Update gaest set vises = True where id = " & arrVises(i))
Hvis indlægget ikke skal vises, skal True naturligvis erstattes af False :-)

Jeg mener at Ja/Nej (True/False) felter, skal sættes til True (altså uden '' tegn), og ikke 'True'.
Avatar billede thesurfer Nybegynder
25. juli 2004 - 16:30 #30
Et par fejl:

- OG id="<%=rs("id")%>... skal skal være: "OG id="<%=rs("id")%>". (glemte et " tegn)
- skal den ikke slettes, med "vises" ... "med" skal være "men"

Nu ved du hvordan man kan (der er sikkert andre måder) lave det.. men det er op til dig.
Avatar billede larsen45 Juniormester
25. juli 2004 - 17:04 #31
Det vil sige at jeg skal sætte
dette her ind ved siden af den anden checkbox:
<input type="checkbox" name="Vises" value="id="><%=rs("id")%>

Jeg har nu oprettet en Ja/nej felt i databasen som er kaldt: Vises

Jeg forstå ikke hvordan man kan opdatere alt i databasen. Hvis formuleren kun sender en til samme asp side hvordan kommer det så til at virke??
og selve det med at opdatere er jeg heller ikke lige med hvordan det skal se ud.
Jeg har følgende felter på denne side:
id, Visindlaeg, Vises, Dato, Navn, Klub, IP.

Her er den tidligere slette side:
----------------------------------
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("gaestbogenfloorball.mdb")
Conn.Open DSN

dim valgte
valgte = ""

valgte = Request.Form("Visindlaeg")

if valgte <> "" then

  valgte = Split(valgte, ",")

  for i = 0 to ubound(valgte)
    Conn.Execute("delete from gaest where id = " & valgte(i))
  next

end if

'Luk database
Conn.Close
Set Conn = Nothing

Response.Redirect("testoversigt.asp")   
%>

Man kan ikke have 2 asp sider en som sletter alt og en som updater alt??
Avatar billede thesurfer Nybegynder
25. juli 2004 - 17:12 #32
hehe.. jeg har kludret i det.. igen :-)

sådan:
<input type="checkbox" name="Vises" value="<%=rs("id")%>">

Jeg tester lige, og skriver tilbage..
Avatar billede larsen45 Juniormester
25. juli 2004 - 17:27 #33
Det lyder godt tak
Avatar billede thesurfer Nybegynder
25. juli 2004 - 17:32 #34
Jeg går ud fra, at alle indlæg skal vises, med mindre at du vælger at de ikke skal vises?

Så skal det faktisk være sådan her:

[] (slet) 24/7-2004 - 21:32:17 [] (skjul)

Et hak i "[] (skjul)" betyder at indlægget skal skjules.

- Er det korrekt?
Avatar billede larsen45 Juniormester
25. juli 2004 - 17:35 #35
ja alle indlæg skal vises som der ikke er hak i.
Ligeså snart jeg har sat et flueben i måske 20 af dem så skal de ikke kunne læses
og hvis jeg 4 dage efter mener at de skal vises igen kan jeg fjerne alle flueben igen og trykke send / opdater så vil de igen være synlige for alle.
Avatar billede thesurfer Nybegynder
25. juli 2004 - 17:37 #36
OK.. så skal "visindlaeg"-feltet omdøbes til "skjules" :-)
Sådan vil det være i mit eksempel.. du kan bare rette det senere, hvis du vil.. bare du retter det alle stederne..
Avatar billede larsen45 Juniormester
25. juli 2004 - 17:43 #37
okay jeg retter lige visindlaeg til skjules.
Men bare så længe at jeg både kan slette og skjules indlæg.
Avatar billede larsen45 Juniormester
25. juli 2004 - 17:46 #38
Det vil sige at jeg har 2 checkboxe ved siden af hinanden en som sletter
og så en anden som skjuler indlæg.
Avatar billede thesurfer Nybegynder
25. juli 2004 - 18:17 #39
Jeg har lavet nogle ændringer, og tilføjet nogle ting:

- formen har nu fået navnet "frmOptions"
- et script er tilføjet (funktionen "RemoveAll")
- knapper er ændret, og ny knap tilføjet: "Fjern ALLE hak!" (fjerner alle hak)

Koderne skal bare erstatte det gamle kode.. husk dog at indsætte "der er x antal.." det rigtige sted..


---------------- Koden til siden med checkboxe:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From gaest"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("gaestbogenfloorball.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
%>

<form name="frmOptions" action="Deleteall.asp?id=<%=rs("id")%>" method="post">
<!-- Dette er en test form: --><!-- <form name="frmOptions" action="doit.asp" method="post"> -->
<p style="margin-top: 0; margin-bottom: 0">
<input type="submit" value="Opdater databasen" name="Opdater">
<input type="reset" value="Nulstil til orginale vaerdier" name="Resetindhold">
<input type="button" value="Fjern ALLE hak!" name="btnRemoveAll" onclick="RemoveAll()">
</p>
<p style="margin-top: 0; margin-bottom: 0">
<%
Do While Not rs.EOF
%>
<input type="checkbox" name="Visindlaeg" value="<%=rs("id")%>"> (slet) <%=rs("Dato")%>
<input type="checkbox" name="Vises" value="<%=rs("id")%>"<% if rs("skjules") = True then response.write " checked"%>> (skjul)<br>
<%
rs.MoveNext
Loop

rs.close
Set rs = Nothing
set conn = nothing

else
  response.write "Nothing in the database."
end if
%>

<script type="text/JavaScript">
function RemoveAll()
{
var el = document.frmOptions.elements;
for (i=0; i< el.length;i++) {
  if (el[i].type == "checkbox") (el[i].checked = false);
}
}
</script>



---------------- Koden til "opdater"-delen:

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("gaestbogenfloorball.mdb")
Conn.Open DSN


' ---------- hent alle id'erne:
set rs = conn.execute("select * from gaest")

dim id_all
id_all = ""

if not (rs.bof or rs.eof) then
do while not rs.eof
  id_all = id_all & rs("id") & ","
  rs.movenext
loop
end if

' fjern det sidste ",":
id_all = left(id_all, len(id_all) - 1)
response.write "<br>id_all: " & id_all & "<br>"


' ---------- nulstil alle "skjules"-felter:
id_all = split(id_all, ",")
for i = 0 to ubound(id_all)
  conn.execute("update gaest set skjules = false where id = " & id_all(i))
next


' ---------- her skjules de valgte indlæg:
dim arrSkjules
arrSkjules = ""
arrSkjules = request.form("vises")

if arrSkjules <> "" then
arrSkjules = split(arrSkjules, ",")

response.write "Skjules:<br><br>"

for i = 0 to ubound(arrSkjules)
  response.write arrSkjules(i) & "<br>"
  conn.execute("update gaest set skjules = true where id = " & arrSkjules(i))
next
end if


' ---------- her slettes de valgte indlæg:

dim valgte
valgte = ""

valgte = Request.Form("Visindlaeg")

if valgte <> "" then

  valgte = Split(valgte, ",")

  for i = 0 to ubound(valgte)
    Conn.Execute("delete from gaest where id = " & valgte(i))
  next

end if



'Luk database
Conn.Close
Set Conn = Nothing
Avatar billede thesurfer Nybegynder
25. juli 2004 - 18:18 #40
*** Opdatering:

Jeg har lavet nogle ændringer, og tilføjet nogle ting:

- formen har nu fået navnet "frmOptions"
- et script er tilføjet (funktionen "RemoveAll")
- knapper er ændret, og ny knap tilføjet: "Fjern ALLE hak!" (fjerner alle hak)

Koderne skal bare erstatte det gamle kode.. husk dog at indsætte "der er x antal.." det rigtige sted..


---------------- Koden til siden med checkboxe:


<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From gaest"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("gaestbogenfloorball.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
%>

<form name="frmOptions" action="Deleteall.asp?id=<%=rs("id")%>" method="post">
<!-- Dette er en test form: --><!-- <form name="frmOptions" action="doit.asp" method="post"> -->
<p style="margin-top: 0; margin-bottom: 0">
<input type="submit" value="Opdater databasen" name="Opdater">
<input type="reset" value="Nulstil til orginale vaerdier" name="Resetindhold">
<input type="button" value="Fjern ALLE hak!" name="btnRemoveAll" onclick="RemoveAll()">
</p>
<p style="margin-top: 0; margin-bottom: 0">
<%
Do While Not rs.EOF
%>
<input type="checkbox" name="Visindlaeg" value="<%=rs("id")%>"> (slet) <%=rs("Dato")%>
<input type="checkbox" name="Vises" value="<%=rs("id")%>"<% if rs("skjules") = True then response.write " checked"%>> (skjul)<br>
<%
rs.MoveNext
Loop

rs.close
Set rs = Nothing
set conn = nothing

else
  response.write "Der er ikke noget i databasen!"
end if
%>

<script type="text/JavaScript">
function RemoveAll()
{
var el = document.frmOptions.elements;
for (i=0; i< el.length;i++) {
  if (el[i].type == "checkbox") (el[i].checked = false);
}
}
</script>





---------------- Koden til "opdater"-delen:

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("gaestbogenfloorball.mdb")
Conn.Open DSN


' ---------- hent alle id'erne:
set rs = conn.execute("select * from gaest")

dim id_all
id_all = ""

if not (rs.bof or rs.eof) then
do while not rs.eof
  id_all = id_all & rs("id") & ","
  rs.movenext
loop
end if

' fjern det sidste ",":
id_all = left(id_all, len(id_all) - 1)
response.write "<br>id_all: " & id_all & "<br>"


' ---------- nulstil alle "skjules"-felter:
id_all = split(id_all, ",")
for i = 0 to ubound(id_all)
  conn.execute("update gaest set skjules = false where id = " & id_all(i))
next


' ---------- her skjules de valgte indlæg:
dim arrSkjules
arrSkjules = ""
arrSkjules = request.form("vises")

if arrSkjules <> "" then
arrSkjules = split(arrSkjules, ",")

response.write "Skjules:<br><br>"

for i = 0 to ubound(arrSkjules)
  response.write arrSkjules(i) & "<br>"
  conn.execute("update gaest set skjules = true where id = " & arrSkjules(i))
next
end if


' ---------- her slettes de valgte indlæg:

dim valgte
valgte = ""

valgte = Request.Form("Visindlaeg")

if valgte <> "" then

  valgte = Split(valgte, ",")

  for i = 0 to ubound(valgte)
    Conn.Execute("delete from gaest where id = " & valgte(i))
  next

end if



'Luk database
Conn.Close
Set Conn = Nothing
Avatar billede thesurfer Nybegynder
25. juli 2004 - 18:21 #41
Her er endnu en rettelse :-)

Jeg har nu fjernet alle debug-områderne:


---------------- Koden til "opdater"-delen:

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("gaestbogenfloorball.mdb")
Conn.Open DSN


' ---------- hent alle id'erne:
set rs = conn.execute("select * from gaest")

dim id_all
id_all = ""

if not (rs.bof or rs.eof) then
do while not rs.eof
  id_all = id_all & rs("id") & ","
  rs.movenext
loop
end if

' fjern det sidste ",":
id_all = left(id_all, len(id_all) - 1)

' ---------- nulstil alle "skjules"-felter:
id_all = split(id_all, ",")
for i = 0 to ubound(id_all)
  conn.execute("update gaest set skjules = false where id = " & id_all(i))
next


' ---------- her skjules de valgte indlæg:
dim arrSkjules
arrSkjules = ""
arrSkjules = request.form("vises")

if arrSkjules <> "" then
arrSkjules = split(arrSkjules, ",")

for i = 0 to ubound(arrSkjules)
  conn.execute("update gaest set skjules = true where id = " & arrSkjules(i))
next
end if


' ---------- her slettes de valgte indlæg:

dim valgte
valgte = ""

valgte = Request.Form("Visindlaeg")

if valgte <> "" then

  valgte = Split(valgte, ",")

  for i = 0 to ubound(valgte)
    Conn.Execute("delete from gaest where id = " & valgte(i))
  next

end if



'Luk database
Conn.Close
Set Conn = Nothing
Avatar billede larsen45 Juniormester
25. juli 2004 - 18:56 #42
Puha sikke en masse.

nå men jeg har lige puttet alt dette ind på min deleteall.asp side
som jeg nok også skal have kaldt nået andet.
Men Slette virker fint hvorimod jeg ikke kan få opdater til at virker?

Der sker bare ikke nået og når jeg så går ud i min gæstebog og kigger ligger alle indlæg stadig synlige.

her er koden fra deleteall.asp

<%

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("gaestbogenfloorball.mdb")
Conn.Open DSN


set rs = conn.execute("select * from gaest")

dim id_all
id_all = ""

if not (rs.bof or rs.eof) then
do while not rs.eof
  id_all = id_all & rs("id") & ","
  rs.movenext
loop
end if

' fjern det sidste ",":
id_all = left(id_all, len(id_all) - 1)


id_all = split(id_all, ",")
for i = 0 to ubound(id_all)
  conn.execute("update gaest set skjules = false where id = " & id_all(i))
next

dim arrSkjules
arrSkjules = ""
arrSkjules = request.form("vises")

if arrSkjules <> "" then
arrSkjules = split(arrSkjules, ",")

for i = 0 to ubound(arrSkjules)
  conn.execute("update gaest set skjules = true where id = " & arrSkjules(i))
next
end if


dim valgte
valgte = ""

valgte = Request.Form("Visindlaeg")

if valgte <> "" then

  valgte = Split(valgte, ",")

  for i = 0 to ubound(valgte)
    Conn.Execute("delete from gaest where id = " & valgte(i))
  next

end if

'Luk database
Conn.Close
Set Conn = Nothing

Response.Redirect("gaestbogoversigt.asp")   
%>

Jeg har forresten ændret felterne i tabellen så de stå sådan her nu de
2 checboxe:
Visindlaeg, Vises.

Jeg håber det er rigtigt...
Avatar billede larsen45 Juniormester
25. juli 2004 - 20:03 #43
Suk det virker bare ikke med opdatere hvad gør jeg galt
Avatar billede thesurfer Nybegynder
25. juli 2004 - 20:09 #44
huh?
1) Hvorfor er der en der hedder "Visindlaeg" og en der hedder "Vises"?
2) Hvad bruges felterne til?

Jeg har kun 1 felt: "skjules"

Den bestemmer om et felt skal vises eller ej..
Hvis et indlæg slettes, fjernes den fra databasen.. helt..
Avatar billede larsen45 Juniormester
25. juli 2004 - 20:19 #45
Jeg forklarer lige
jeg skal have 2 checkboxe fordi:
den ene skal slette de indlæg som jeg har valgt at putte et kryds i.
Den anden skal man også kunne sætte kryds i så jeg kan fjerne dem så de ikke bliver
læst eller hvis jeg igen vil gøre dem læsebare kan jeg bare fjerne krydset igen.

Det som der sker lige nu er at feltet Skjul ikke gør nået som helst når jeg f.eks.
har krydset en del felter af der og trykker opdater databasen så fjerner den ikke
indlægget fra gæstebogen.
Slette funktion virker fint nok når jeg sætter kryds i nogle bokse og så trykker på opdater databasen.

Hvis jeg har valgt at slette så skal det hele rigtigt nok bare væk. Men den anden funktion vil jeg gerne have til at virke også med opdateringen.
Avatar billede thesurfer Nybegynder
25. juli 2004 - 20:24 #46
Jeg tror at der er fejl i din form. Vis mig koden (html+asp delen) af din form.
Avatar billede larsen45 Juniormester
25. juli 2004 - 20:29 #47
Det hele står sådan her lige nu:
-------------------------------------
<%
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1
%>

<html>

<head>
<title>testoversigt</title>
</head>

<body topmargin="1" leftmargin="1" link="#0000FF" vlink="#0000FF" alink="#0000FF">

<table border="2" cellpadding="0" style="border-collapse: collapse" width="895" id="table9" bgcolor="#6680A6" bordercolor="#000000" height="126">
    <tr>
        <td bgcolor="#FFFFFF" width="610" valign="top">
<p style="margin-top: 0; margin-bottom: 0">

<font size="2" face="Verdana">
<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If


dim antal
antal = 0

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From gaest order by Dato DESC"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("gaestbogenfloorball.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then

do while not rs.eof
antal = antal + 1
rs.movenext
loop
rs.movefirst

    rs.PageSize = 200
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount 


for each x in Request.querystring
If instr(x, "id") > 0 Then
  response.write x & "=" & Request.querystring(x)
End if
next
%></font><b><font face="Verdana">Oversigt</font></b><font size="2" face="Verdana"><b>&nbsp;&nbsp;
    <i>(Antal indlæg ialt i databasen:</i>(<%=antal%>)</b></font></p>
<div style="width: 990px; height: 100px" id="lag1">

<font face="Verdana">
<div align="left">
    <font size="2">
<form name="frmOptions" action="Deleteall.asp?id=<%=rs("id")%>" method="post">
<p style="margin-top: 0; margin-bottom: 0">
<input type="submit" value="Opdater databasen" name="Opdater">
<input type="reset" value="Nulstil til orginale vaerdier" name="Resetindhold">
<input type="button" value="Fjern ALLE hak!" name="btnRemoveAll" onclick="RemoveAll()">

<%
Do While Not rs.EOF And intRecCount > 0
%></p>
<p style="margin-top: 0; margin-bottom: 0">

<input type="checkbox" name="Visindlaeg" value="<%=rs("id")%>"> (slet) <%=rs("Dato")%>
<input type="checkbox" name="Vises" value="<%=rs("id")%>"<% if rs("Skjules") = True then response.write " checked"%>> (skjul)<br>

<%
    intRecCount = intRecCount - 1
    rs.MoveNext
    Loop
End If
%>
<%
rs.Close
Set rs = Nothing
%>
</p>
</form>

    <p style="margin-top: 0; margin-bottom: 0">

<script type="text/JavaScript">
function RemoveAll()
{
var el = document.frmOptions.elements;
for (i=0; i< el.length;i++) {
  if (el[i].type == "checkbox") (el[i].checked = false);
}
}
</script>
 
 
    </p>


 
 
    <table border="0" width="100%" id="table13">
        <tr>
            <td>
      <font face="Verdana" size="2">
        <p style="margin-top: 0; margin-bottom: 0">
<% Response.Write "Side " & intPage & " af " & intPageCount %>
|
<%
If Clng(intPage) > 1 Then
    Response.Write "<a href=testoversigt.asp?page=" & intPage - 1 & "><b>« Forrige</b></a>"
Else
    Response.Write "« Forrige"
End If
%>
|
<%
If Clng(intPage) < Clng(intPageCount) Then
    Response.Write "<a href=testoversigt.asp?page=" & intPage + 1 & "><b>Næste »</b></a> "
Else
    Response.Write "Næste »"
End If
%>







</font></td>
        </tr>
    </table>
</div>
</font></div>
        </td>
    </tr>
    </table>

</body>

</html>
Avatar billede larsen45 Juniormester
25. juli 2004 - 20:33 #48
og felter i databasen stå nu sådan her:
Visindlaeg, Skjules
Avatar billede thesurfer Nybegynder
25. juli 2004 - 20:33 #49
Jeg har lige testet på dit site. Jeg tror at problemet opstår, når du skal udskrive.
Du har vist glemt at indsætte kode, der checker om rs("skjules") = true.

Vis mig asp koden, der udskriver indlæggene på siden gaestbog.asp.
Avatar billede thesurfer Nybegynder
25. juli 2004 - 20:35 #50
Du har ikke svaret på disse spm, fra indlægget "25/07-2004 20:09:16":

1) Hvorfor er der en der hedder "Visindlaeg" og en der hedder "Vises"?
2) Hvad bruges felterne til?
Avatar billede larsen45 Juniormester
25. juli 2004 - 20:36 #51
her er gæstebog siden:

<%
set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("gaestbogenfloorball.mdb")
strsql = "SELECT TOP 200 * FROM gaest WHERE Visindlaeg = False ORDER BY id DESC"

set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strsql, conn
rs.MoveFirst

If RS.EOF then

Response.write "ingen data i db endnu"

Else
Do While (NOT rs.EOF)

%>
<%
Klub = rs("Klub")
if not Klub <> "" then
output_Klub = "Anonym"
else
output_Klub = Klub
end if
%>
<%
Hjemmeside = rs("Hjemmeside")
if not Hjemmeside <> "" then
output_Hjemmeside = "Ingen"
else
output_Hjemmeside = Hjemmeside
end if
%>
<%
Email = rs("Email")
if not Email <> "" then
output_Email = "Anonym"
else
output_Email = Email
end if
%>
</p>

<table border="1" width="66%" bordercolor="#003265" id="table2" bordercolorlight="#003265" bordercolordark="#003265" style="border: 1px solid #003265" bgcolor="#EFF2F3">
    <tr>
        <td bordercolorlight="#003265" bordercolordark="#003265" width="53%" valign="top" bgcolor="#FFFFFF">
<font size="2" face="Verdana">
<p style="margin-top: 0; margin-bottom: 0">
<%=rs("Dato")%></a></font><font face="Verdana" size="1"><b><font size="2"> | Email:</font></b><font size="2"> <a href="mailto:<%=output_Email%>"><%=RS("Navn")%></a></font></font></p>
<div style="width: 639px; height: 1px" id="lag2">
<hr>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana"><b>
<font size="2">Navn:</font></b><font size="2">
<%=rs("Navn")%></font></font></p>
<font size="2" face="Verdana">
<p style="margin-top: 0; margin-bottom: 0">
    <b>Klub:</b>
<%=output_Klub%></a></p>
    </font></div>
        <font size="2" face="Verdana">
        <div style="width: 639px; height: 18px" id="lag1">
<p style="margin-top: 0; margin-bottom: 0"><b>Kommentar:</b><p style="margin-top: 0; margin-bottom: 0">
<%=rs("Kommentar")%></p>
<hr><p style="margin-top: 0; margin-bottom: 0"><b>Hjemmeside:
</b>
<%=output_Hjemmeside%></div>
        </font>
        </td>
    </tr>
    </table>

<font face="Verdana">
<table border="0" width="66%" id="table8">
    <tr>
        <td><hr></td>
    </tr>
</table>

</font>
<p style="margin-top: 0; margin-bottom: 0">


 
<font face="Verdana">



<%
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
%>
<% End If %>
Avatar billede thesurfer Nybegynder
25. juli 2004 - 20:40 #52
Linien:
strsql = "SELECT TOP 200 * FROM gaest WHERE Visindlaeg = False ORDER BY id DESC"

skal vel være:
strsql = "SELECT TOP 200 * FROM gaest WHERE Skjules = False ORDER BY id DESC"

nu hvor du har omdøbt den.


Men jeg har stadig ikke fået svar på mine spm...... :-)
Avatar billede thesurfer Nybegynder
25. juli 2004 - 20:49 #53
Se nu virker det fint :-)
Avatar billede larsen45 Juniormester
25. juli 2004 - 20:54 #54
Genialt det virker perfekt nu. (du er supermand he he)
Jeg kan nu både slette i den ene boks og i den anden kan jeg opdatere ved at hakke indlæg af. Lige som det skal være Tusind tak.

Angående:
1) Hvorfor er der en der hedder "Visindlaeg" og en der hedder "Vises"?
Ja det var min fejl angående "Vises" den skulle selvfølgelig hedde: Skjules
og så skal jeg rette Visindlaeg til f.eks. slette
2) Hvad bruges felterne til?
Så Hvad bruges felterne til er jo slette og skjule indlæg.
Det vil sige at hvis der er en gut som har skrevet nogle alvorlige banneord m.m. i min gæstenbog kan jeg fjerne indlægget.
Slette skal bruge til at fjerne alle indlæg som er ældre end 200 indlæg eller måneder det kommer an på hvad jeg sætter grænsen til at være.

Håber det besvare spm.
Avatar billede thesurfer Nybegynder
25. juli 2004 - 20:56 #55
Dvs, gamle beskeder sættes i "Visindlaeg" først, og slettes derefter?
Hvis et indlæg skal slettes, bliver det jo bare slettes direkte..
Avatar billede thesurfer Nybegynder
25. juli 2004 - 20:58 #56
..smutter.. skal se "bad boys" på tv3 :-)
Avatar billede larsen45 Juniormester
25. juli 2004 - 21:05 #57
Ja præcis som du har beskrevet.
God fornøjelse med Filmen på TV3.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester