Classic ASP question

M

Mike P

I have very little experience of Classic ASP, but I need to take some
data from a table, write it to the screen in a tabular format, show a
check box at the end of every row, and write some code to enable the
user to check all check boxes, and then some code to respond to a button
click to find out which rows were checked.

I know how to read data from a recordset and put it into a <table>
object, but the rest, particularly the check box bits, are giving me
problems. Can somebody please help me out?
 
O

Old Pedant

Mike P said:
I have very little experience of Classic ASP, but I need to take some
data from a table, write it to the screen in a tabular format, show a
check box at the end of every row, and write some code to enable the
user to check all check boxes, and then some code to respond to a button
click to find out which rows were checked.

Well, the "check all check boxes" will be JavaScript code, in the browser,
nothing to do with ASP.

And you don't say *WHAT* the code that "respond to a button click" is
supposed to do. Just say "You checked boxes 17, 33, and 42"??? Or delete
records from the DB? Or copy records?

In other words, does the response need to be JS in the browser or ASP code
on the server?

*ASSUMING* you mean that you want to (say) delete all the checked records,
it's pretty easy.

Since you give us so little info about your app, I'll make some simplistic
assumptions. I'm doing it all on one page. So the <form> submits back to
the same page and, if there are an records to be deleted, they are deleted.
Whether a delete occurred or not, all the non-deleted records are shown with
checkboxes.

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "...your connection string..."

If Trim( Request("DELETE") ) <> "" Then
' submit was pushed, delete all checked records
SQL = "DELETE FROM people WHERE id IN (" & Request("ZAP") & ")"
howMany = -1
conn.Execute SQL, howMany
Response.Write "<h2>Deleted " & howMany & " records</h2><P>"
End If
%>
<form method="POST">
<table border=1 cellpadding=5>
<%
SQL = "SELECT ID, Name, Address FROM people"
Set RS = yourAlreadyOpenConnection.Execute( SQL )
Do Until RS.EOF
%>
<tr>
<td><%=RS("Name")%></td>
<td><%=RS("Address")%></td>
<td><input type=checkbox name="ZAP" value="<%=RS("ID"%>"></td>
</tr>
<%
RS.MoveNext
Loop
%>
</table>
<input type=submit value="Delete checked people" name="DELETE">
</form>

And that's all there is to it. Presto.

p.s.: Assumes the the ID field is a numeric field. Minor change needed if
it's a text field.
 
O

Old Pedant

Oh, what the heck...

Here's the code for adding a "CHECK ALL" button:

<HTML>
<HEAD>
<SCRIPT>
function checkAll( cbs )
{
if ( cbs.length == null )
{
// if only one checkbox
cbs.checked = true;
return; // only one to do
}
for ( var c = 0; c < cbs.length; ++c )
{
cbs[c].checked = true;
}
}
</SCRIPT>
</HEAD>
<BODY>
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "...your connection string..."

If Trim( Request("DELETE") ) <> "" Then
' submit was pushed, delete all checked records
SQL = "DELETE FROM people WHERE id IN (" & Request("ZAP") & ")"
howMany = -1
conn.Execute SQL, howMany
Response.Write "<h2>Deleted " & howMany & " records</h2><P>"
End If
%>
<form method="POST">
<INPUT Type=Button Value="Check all" onClick="checkAll(this.form.ZAP);">
<table border=1 cellpadding=5>
<%
SQL = "SELECT ID, Name, Address FROM people"
Set RS = yourAlreadyOpenConnection.Execute( SQL )
Do Until RS.EOF
%>
<tr>
<td><%=RS("Name")%></td>
<td><%=RS("Address")%></td>
<td><input type=checkbox name="ZAP" value="<%=RS("ID"%>"></td>
</tr>
<%
RS.MoveNext
Loop
%>
</table>
<input type=submit value="Delete checked people" name="DELETE">
</form>
</BODY></HTML>

Should have mentioned that this is all off the top of my head, utterly
untested. But it's warranted against bugs, anyway!

Guaranteed to be free of carpenter ants and dung beetles for 30 picoseconds
or 30 picometers, whichever comes first.
 
A

Anthony Jones

Old Pedant said:
Oh, what the heck...

Here's the code for adding a "CHECK ALL" button:

<HTML>
<HEAD>
<SCRIPT>
function checkAll( cbs )
{
if ( cbs.length == null )
{
// if only one checkbox
cbs.checked = true;
return; // only one to do
}
for ( var c = 0; c < cbs.length; ++c )
{
cbs[c].checked = true;
}
}
</SCRIPT>
</HEAD>
<BODY>
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "...your connection string..."

If Trim( Request("DELETE") ) <> "" Then
' submit was pushed, delete all checked records
SQL = "DELETE FROM people WHERE id IN (" & Request("ZAP") & ")"
howMany = -1
conn.Execute SQL, howMany
Response.Write "<h2>Deleted " & howMany & " records</h2><P>"
End If
%>
<form method="POST">
<INPUT Type=Button Value="Check all" onClick="checkAll(this.form.ZAP);">
<table border=1 cellpadding=5>
<%
SQL = "SELECT ID, Name, Address FROM people"
Set RS = yourAlreadyOpenConnection.Execute( SQL )
Do Until RS.EOF
%>
<tr>
<td><%=RS("Name")%></td>
<td><%=RS("Address")%></td>
<td><input type=checkbox name="ZAP" value="<%=RS("ID"%>"></td>
</tr>
<%
RS.MoveNext
Loop
%>
</table>
<input type=submit value="Delete checked people" name="DELETE">
</form>
</BODY></HTML>

Should have mentioned that this is all off the top of my head, utterly
untested. But it's warranted against bugs, anyway!

What happens if there no records and the user presses the button ;)
 
M

Mike P

Thank you both for your help! What I was looking to do when submitting
the page is to add all the records that are checked to an array, because
I will need to pass the information to another page and then populate a
dropdown with the email addresses of all the people who were checked on
the previous page.

Cheers,

Mike
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,819
Latest member
masterdaster

Latest Threads

Top