ASP script by kasibhotla85

VIEWS: 911 PAGES: 105

									ASP script Tutorials & Code
By

Anil kumar puvvala

2

CONTENTS
Active Server Pages: What are Active Server Pages? ............................................... 6 Active Server Pages: Displaying Date, Time and Text …………………………….. 14 Active Server Pages: Using Variables, and Forms ………………………………17

Active Server Pages: If...Then...Else / For...Next Instructions……………………...19 Active Server Pages: Do...Loop / Select...Case instructions…………………………26 Active Server Pages: Session and Application……………………………………….30 Active Server Pages: Dictionary ……………………………………………………..35 Active Server Pages: Cookies ………………………………………………………...40 Active Server Pages: Open, Read and Create files …………………………………42 Active Server Pages: Global.asa …………………………………………………….47 Active Server Pages: ASP and Javascript together ………………………………..49 Active Server Pages: Using arrays ………………………………………………….54 Active Server Pages: ASP file as a picture source …………………………………63 Active Server Pages: Active Server Pages Server-Side Scripting…………………66

3

More ASP Scripts
FORMS • Basic Email Validation……………………………………………………… 70 • Basic Form Validation……………………………………………………… 72 • Form to Database …………………………………………………………….74 • Populate Form from DB ……………………………………………………75

RECORDS • Insert New Record …………………………………………………………. 77 • Update Record ………………………………………………………………. 79 • Delete Record ………………………………………………………………… 82 • Removing Beginning and Ending Spaces …………………………….. 85 • Upper and Lower Case Data …………………………………………….. 86 DATABASE • ASP Database Connection ………………………………………………… 87 • Alternate Row Color ……………………………………………………….. 88 • Count and Display Number of Records ………………………………. 90 • Display "N" Records Per Page ………………………………………….. 92 • Display Part of Field ……………………………………………………….. 94 • Display Records Horizontally …………………………………………… 96 • Display Top 10 Records …………………………………………………... 98 • Insert Record and Retrieve Unique ID ………………………………. 99 • Let Users Sort Your Displayed Records …………………………….. 101 . OPEN DATABASE CONNECTION …………………………… 103 .CLOSE DATABASE CONNECTION ………………………….. 105

4

What Are Active Server Pages? Active Server Pages (ASPs) are Web pages that contain server-side scripts in addition to the usual mixture of text and HTML (Hypertext Markup Language) tags. Server-side scripts are special commands you put in Web pages that are processed before the pages are sent from your Personal Web Server to the Web browser of someone who's visiting your Web site. . When you type a URL in the Address box or click a link on a Web page, you're asking a Web server on a computer somewhere to send a file to the Web browser (sometimes called a "client") on your computer. If that file is a normal HTML file, it looks exactly the same when your Web browser receives it as it did before the Web server sent it. After receiving the file, your Web browser displays its contents as a combination of text, images, and sounds. In the case of an Active Server Page, the process is similar, except there's an extra processing step that takes place just before the Web server sends the file. Before the Web server sends the Active Server Page to the Web browser, it runs all server-side scripts contained in the page. Some of these scripts display the current date, time, and other information. Others process information the user has just typed into a form, such as a page in the Web site's guestbook. To distinguish them from normal HTML pages, Active Server Pages are given the ".asp" extension.

What Can You Do with Active Server Pages? There are many things you can do with Active Server Pages.
 

You can display date, time, and other information in different ways. You can make a survey form and ask people who visit your site to fill it out, send emails, save the information to a file, etc

5

What Do Active Server Pages Look Like? The appearance of an Active Server Page depends on who or what is viewing it. To the Web browser that receives it, an Active Server Page looks just like a normal HTML page. If a visitor to your Web site views the source code of an Active Server Page, that's what they see: a normal HTML page. However, the file located in the server looks very different. In addition to text and HTML tags, you also see server-side scripts. This is what the Active Server Page looks like to the Web server before it is processed and sent in response to a request.

What Do Server-Side Scripts Look Like? Server-side scripts look a lot like HTML tags. However, instead of starting and ending with lesser-than ( < ) and greater-than ( > ) brackets, they typically start with <% and end with %>. The <% is called an opening tag, and the %> is called a closing tag. In between these tags are the server-side scripts. You can insert server-side scripts anywhere in your Web page--even inside HTML tags.

Do You Have to Be a Programmer to Understand Server-Side Scripting? There's a lot you can do with server-side scripts without learning how to program. For this reason, much of the online Help for Active Server Pages is written for people who are familiar with HTML but aren't computer programmers.

6

Active Server Pages: Displaying Date, Time and Text
Displaying the Current Date and Time The date and time described in this section are those that are on the server. Date To display the current date by itself in a Web page, type:
<% =date %>

at the point where you want it to appear. When you view the page in your browser, you should see something like this: Thu, Jan 23, 1997 Note: Even though "=date" is a short script, it's actually made up of two parts. The "date" part tells the server, "Get me the date." The equal sign (=) tells the server to display the date in the Web page. If you typed just:
<% date %>

the server would get the current date from your system, but that's all. It wouldn't display it. There are times when it makes sense to use an ASP function without the equal sign. Time To display the current time by itself, type:
<% =time %>

where you want it to appear. When you view the page, you should see something like this: 4:19:46 PM Now (Date and Time) To display the current date and time, type:
<% =now %>

where you want them to appear. When you view the page, you should see something like this: 1/23/97 4:19:46 PM

7 Changing the Way Date and Time are Displayed You can also use Active Server Pages (ASP) functions to customize the way the current date and time are displayed on your Web page. To do this, use the now function together with the following formatting functions. Month and Monthname To display the number of the current month in a Web page, type:
<% =month(now) %>

where you want it to appear. When you view the page in your browser, you'll see a 1 if the current month is January, 2 if it's February, and so on. To display the name of the current month, type:
<% =monthname(month(now)) %>

where you want it to appear.

Day To display the day of the current month, type:
<% =day(now) %>

where you want it to appear. When you view the page, you'll see a number between 1 and 31. Year To display the current year, type:
<% =year(now) %>

where you want it to appear.

8 Example Suppose you wanted to display today's date as day/month/year instead of month/day/year. To do so, you would use the day, month, and year ASP functions together, by typing:
<% =day(now) %>/<% =month(now) %>/<% =year(now) %>

When you viewed the page, you would see something like this: 23/1/1997 Later we'll see how you can change this so only the last two digits of the year are displayed, like this: 23/1/97 Weekday and Weekdayname To display the day of the week as a number from 1 to 7 in a Web page, type:
<% =weekday(now) %>

where you want it to appear. When you view the page in Internet Explorer, you'll see a 1 if today is Sunday, 2 if it's Monday, and so on. To display the day of the week by name, type:
<% =weekdayname(weekday(now)) %>

where you want it to appear. Hour, Minute, and Second

To display just the hour part of the current time, type:
<% =hour(now) %>

where you want it to appear. The hour function is based on a 24-hour clock. When you view the page, you'll see a number between 0 and 23. To display just the minutes part of the current time, type:
<% =minute(now) %>

where you want it to appear. When you view the page, you'll see a number between 0 and 59.

9 To display just the seconds part of the current time, type:
<% =second(now) %>

where you want it to appear. When you view the page, you'll see a number between 0 and 59. Example Try typing this into a Web page:
The time is <% =time %>. That means it's <% =minute(now) %> minutes past <% =hour(now) %> o'clock.

When you view the page in Internet Explorer, you should see something like this: The time is 1:36:05 PM. That means it's 36 minutes past 13 o'clock. Remember, the hour function is based on a 24-hour clock. Later we'll see how to convert from the 24-hour clock to a 12-hour clock. Timevalue You probably won't ever use the timevalue function. It takes the different ways you can write the time, such as "2:24PM" and "14:24," and returns them in this format: "2:24:00 PM." This can be useful if you're using a function that needs to be given the time in that exact format. Example Earlier in this section we saw how you can use the hour, minute, and second functions to break up the time into hours, minutes, and seconds. With the timevalue function, you can put them back together. Type this into a Web page:
When it's 23 minutes and 5 seconds past 4 o'clock in the afternoon, that means it's <% =timevalue("16:23:05") %>. This is the same as <% =timevalue("4:23:05PM") %> or <% =timevalue("16:23:05PM") %>.

Make sure you type "16:23:05PM" and not "16:23:05 PM." The "05" and the "PM." should be run together, not separated by a space. When you view the page in Internet Explorer, you should see: When it's 23 minutes and 5 seconds past 4 o'clock in the afternoon, that means it's 4:23:05 PM. This is the same as 4:23:05 PM or 4:23:05 PM.

10 Displaying Text len The len function tells you how many characters are in a word or sequence of words. (The name "len" is an abbreviation of "length.") All characters are counted, including the space character. For example, to find the length of the sentence "The cat is on the mat," type this into a Web page:
There are <% =len("The cat is on the mat.") %> characters in "The cat is on the mat."

When you view the page in Internet Explorer, you should see this: There are 22 characters in "The cat is on the mat." left

You can use the left function to look at the first few characters of a word or sequence of words. For example, to find the first character of "Frankenstein," type this into a Web page:
"Frankenstein" begins with the letter <% =left("Frankenstein", 1) %>.

When you view the page, you should see this: "Frankenstein" begins with the letter F. right

To look at the last few characters of a word or sequence of words, use the right function. For example, to find the last three letters of "Wednesday," type this into a Web page:
The last three letters of "Wednesday" are: <% =right("Wednesday", 3) %>.

When you view this page, you should see this:

The last three letters of "Wednesday" are: day. Example What if you wanted to take a few letters from the middle of something? How would you specify exactly where in the middle you wanted to be? For example, how would you take out just the "apple" part of the word "pineapples"? You could start with the fifth character from the left and then stop at the second character from the right. Or you could do it the following way.

11 Try typing this into a Web page:
<% =right("pineapples", 6) %> <% =left(right("pineapples", 6), 5) %>

This line takes the last six letters of the word "pineapples," which make up the word "apples." Then it takes the first five letters of the word "apples," which make up the word "apple." When you view this page in Internet Explorer, you should see this: apples apple Then try typing this into a Web page:
<% =left("pineapples", 9) %> <% =right(left("pineapples", 9), 5) %>

This line takes the first nine letters of the word "pineapples," which make up the word "pineapple." Then it takes the last five letters of the word "pineapple," which make up the word "apple." When you view this page, you should see this: pineapple apple Cool Things You Can Do with Date, Time, and Text Here are some examples of interesting things you can do with date, time, and text functions. Link of the Day What if you wanted to have a link that pointed to a different page every day of the week? Here's how you can do that. First, choose the pages (HTML files) on your Web site that you want your link to point to. Name them "Sunday.htm," "Monday.htm," and so on. (If you don't have seven different HTML files, you can copy some of the files or make aliases on your Macintosh to them. The important thing is that there has to be one file or alias for every day of the week.) To make the link, type
<a href= <% =weekdayname(weekday(now)) %>.htm>Link of the Day</a>

where you want it to appear. When you click this link in Internet Explorer, it will take you to today's page.

12

Another Way to Display Today's Date Earlier we saw how to change the date display from month/day/year to day/month/year like this: 23/1/1997 We can also change the date display so only the last two digits of the year are included. To do this, type
<% =day(now) %>/<% =month(now) %>/<% =Right((year(now)), 2) %>

Now when you view the page, you should see something like this: 23/1/97 Another Way to Display the Time

In an earlier example, we wrote a server-side script to display the current time in words, such as: "The time is 36 minutes and 5 seconds past 13 o'clock." This script used the ASP hour function, which returns just the hour part of the current time, based on a 24-hour clock. In this example, we'll see how to change 24-hour clock times such as "13 o'clock" to 12hour clock times ("1 o'clock PM"). To do this, we'll need to make the server-side script that uses the hour function a little more complicated. Instead of
<% =hour(now) %> o'clock

we'll need to write a script that looks at the hour and does one of the following:
   

If the hour is 0 (zero), the script displays "midnight." If the hour is 12, the script displays "noon." If the hour is between 1 and 11, the script doesn't change it, but it displays "AM" after "o'clock." If the hour is between 13 and 23, the script subtracts 12 (to make it a number between 1 and 11) and displays "PM" after "o'clock."

13 The script is shown below. It isn't written quite the way a programmer would write it, but it works, and it's fairly easy to understand, since it follows the items in the bulleted list above exactly.
The hour is <% if hour(now) = 0 then %> midnight. <% end if if hour(now) = 12 then %> noon. <% end if if (hour(now) >= 1) and (hour(now) <= 11) then %> <% =hour(now) %> o'clock AM. <% end if if (hour(now) >= 13) and (hour(now) <= 23) then %> <% =hour(now) - 12 %> o'clock PM. <% end if %>

If you type (or better yet, cut-and-paste) this script in a Web page, when you view the page, you should see something like this: The hour is 4 o'clock PM.

14

Active Server Pages: Using Variables, and Forms
Using Variables, and Forms in Active Server Pages
Forms are a convenient way to communicate with visitors to your Web site. Using forms, you can create a survey form and ask visitors to fill it out. When they fill out the form, you can process the results automatically. With forms, there are two steps: first you create the form, and then you process it. To create a form for an Active Server Page, just create a standard HTML form. To try out this example, create an HTML file ("form_response.html") and cut-and-paste the following text into it. form_response.html try ! <html> <head><title>Asking for information</title></head> <body> <form method="post" action="form_response.asp"> Your name: <input type="text" name="name" size="20"><BR> Your email: <input type="password" name="email" size="15"><BR> <input type="Submit" value="Submit"> </form> </body> </html> Active Server Pages provide a mechanism for processing forms that, unlike CGI scripting, doesn't involve serious programming: the Request.Form. Considering the form above, we may create the file bellow and get a response.

form_response.asp

try !

<html> <head><title>Responding to a form</title></head> <body> Your name is <% =Request.Form("name") %> <BR> Your email is <% =Request.Form("email") %> </body> </html>

15 To display the contents of each field in the form, type:
<% =Request.Form(fieldname) %>

where fieldname is the name of the field. Creating a Variable You'll probably want to do more with your forms than display their contents in a Web page. For example, based on the contents of the form, you may want to create a variable and insert that variable in different places of your response page. You may need to create a variable. To do that, just make up a name and set it equal to the contents of the field. For example, if you have a field called "CatName" in your form, you can save it into a variable called "TheName" by typing:
<% TheName = Request.Form("CatName") %>

If you want to display "VisitorName" several times within a text you only need to include the variable in the text. For example:
My cat´s name is <% =TheName %>. Do you want to see <% =TheName %>?.

Example The form in this example asks users to introduce their names and their favorite color: red, blue, or green. When the form is received, the server responds displaying these data.
nameandcolor.html
try !

<html> <head><title>Name and Color</title></head> <body> <FORM ACTION="nameandcolor.asp" METHOD=POST> Let me know your Name and Favorite Color: <P>YOUR NAME: <INPUT TYPE="TEXT" NAME="YOURNAME" SIZE=20> <P>COLOR: <INPUT TYPE="RADIO" NAME="COLOR" VALUE="1" CHECKED>Red <INPUT TYPE="RADIO" NAME="COLOR" VALUE="2">Green <INPUT TYPE="RADIO" NAME="COLOR" VALUE="3">Blue <P> <INPUT TYPE="SUBMIT" VALUE="OK">

</FORM> </body> </html>

16

Now, create an ASP file ("nameandcolor.asp") and cut-and-paste the following text into it.

nameandcolor.asp

try !

<html> <head><title>Name and Color</title></head> <body>

<% TheName = Request.Form("YOURNAME") %> <% colornumber = Request.Form("COLOR") %> Hi, <% =Thename %>.<BR> I know your favorite color is <% if colornumber = "1" then %> red <% end if %> <% if colornumber = "2" then %> green <% end if %> <% if colornumber = "3" then %> blue <% end if %>. </body> </html>

17

Active Server Pages: If...Then...Else / For...Next Instructions
If....Then...Else
The If....Then...Else instructions sequence is very similar to the one we may find in different kind of scripting languages. Let's check an example.

<% AA="water" If AA="water" Then response.write ("I want to drink water") Else response.write ("I want to drink milk") End If %>

We may use it this way: <% AA="water" If AA="water" Then %> I want to drink water <% Else %> I want to drink milk <% End If %> In both cases we have checked a condition (AA="water"), and we have get a positive instruction (to write the sentence "I want to drink water"). We are allowed to execute any kind of instructions (including If....then....Else) and as many instructions as we want .

18

For....Next
This instructions is also similar in different programming languages. Let's see a typical example.

example.asp Try ! I want to say "Hello" 10 times<BR> <% For mynumber = 1 to 10 %> <% =mynumber %> Hello<BR> <% Next %> END In this case we have defined a variable ("mynumber") and using the For...Next instruction we have repeated 10 times line 4. Similarly to If....Then....Else instruction, we are allowed to execute any kind of instructions and as many of them as we want . The For...Next instruction allows to define the value of the increment.

<% For mynumber = 1 to 20 STEP 2 response.write("Hello<BR>") Next %> <% For mynumber = 20 to 1 STEP -2 response.write("Hello<BR>") Next %> In both cases we will get the same response ("Hello" 10 times). The increment may be positive or negative as shown in the example.

19

Active Server Pages: Do...Loop / Select...Case instructions
Do While...Loop
Again, we will define a condition and one or more instructions:

<% mynumber=0 Do While mynumber<10 response.write("Hello<HR>") mynumber=mynumber+1 Loop %> In this example the condition is "mynumber<10" and the instructions defines a response text and an increment of the variable "mynumber". In the example, mynumber will be increased until it gets a value of 10. Then the loop will be abandon. Several instruction may be used within the loop.

Do Until....Loop
Quite similar to the previous one, it also includes a condition and one or more instructions:

<% mynumber=0 Do Until mynumber=10 response.write("Hello<HR>") mynumber=mynumber+1 Loop %> In this example the condition is "mynumber=10", so mynumber will increased until it is equal to 10, and then the loop will be abandon.

20 Let's see an example using this Do Until...Loop:

<% myfirstnumber=0 mysecondnumber=0 Do Until myfirstnumber=15 Do Until mysecondnumber=15 response.write("X") mysecondnumber=mysecondnumber+1 Loop Response.write ("<BR>") myfirstnumber=myfirstnumber+1 mysecondnumber=myfirstnumber Loop Response.write ("END") %> The result of the script is this one:

XXXXXXXXXXXXXXX XXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXX XXXXXXXXXX XXXXXXXXX XXXXXXXX XXXXXXX XXXXXX XXXXX XXXX XXX XX X END

21

Select Case....End Select
This is a very useful instruction in case we want to check different values for variable. Lets check an example:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

<% mynumber=3 Select Case mynumber Case 1 Response.write ("Number 1") Case 2 Response.write ("Number 2") Case 3 Response.write ("Number 3") Case 4 Response.write ("Number 4") Case 5 Response.write ("Number 5") Case Else Response write ("Mynumber is higher than 5") End Select %>

22

In this example above, we have defined mynumber as 3, so they are executed the instructions following line 8 (in this case only one instruction is executed, but they may be several instructions). Case Else is not necessary.

Let's try a second example: 1 2 3 4 5 6 7 8 9 10 11 12 13

<% username=request.form("username") Select Case username Case "Peter" Response.write ("Hello, Peter") Case "John" Response.write ("Hello, John") Case "Joe" Response.write ("Hi, Joe") Case Else Response write ("I do not know you") End Select %>

23

Let's see a different example:

backgroundform.html <html> <head><title>Chose background color</title></head> <form action="backgroundresponse.asp" method="post"> Which color do you prefer to use as your background? <BR> <input type="radio" name="kindofcolor" value="defined" checked> Defined color <select name="definedcolor"> <option value="#FFFFFF">White</option> <option value="#FF0000">Red</option> <option value="#00FF00">Green</option> <option value="#0000FF">Blue</option> </select> <BR> <input type="radio" name="kindofcolor" value="custom"> Custom color <input type="text" size="8" name="mycolor"></input> <BR><input type="Submit" value="Submit"></input> </form> </body> </html>

24

backgroundresponse.asp <% kindofcolor=Request.form("kindofcolor") Select Case kindofcolor case "defined" colorofbackground=Request.form("definedcolor") Select Case colorofbackground case "#FFFFFF" texttoshow="White" case "#FF0000" texttoshow="Red" case "#00FF00" texttoshow="Green" case "#0000FF" texttoshow="Blue" End select case "custom" colorofbackground=Request.form("mycolor") texttoshow="Custon color" End select %> <html> <head><title>Chose background color</title></head> <body bgcolor="<% =colorofbackground %>"> <center> <H1><% =texttoshow %></H1> </center> </form> </body> </html>

25

You may try this example:

Which color do you prefer to use as your background? Defined color Custom color
Submit
White

26

Active Server Pages: Subroutines and Include/virtual
Subroutines
Subroutines have the same utility in ASP as it has in other languages. In the next two examples, we have asked our visitors his name, and depending on that answer a different response is sent to the client. The response will be the same in both cases, but in the second one subroutines are used. The use of subroutines may be very useful when there are a lot of instructions to be perform within a subroutine. This way it will allow us to simplify the structure of our script. Example 1 <% TheName=request.form("name) if TheName="John" then response.write ("Hi, John. How are you?") response.write ("<br>Did you know I got married last month?") else response.write ("Hi. How are you?") end if %> Example 2 <% TheName=request.form("name) if TheName="John" then ResponseToJohn() else ResponseToUnknown() end if Sub ResponseToJohn() response.write ("Hi, John. How are you?") response.write ("<br>Did you know I got married last month?") End Sub Sub ResponseToUnknown()

27 response.write ("Hi. How are you?") End Sub %> In order to call a subroutine, we will use this kind of code: Whatever() Where Whatever is the name of the subroutine (it is recommended to use a very descriptive name of the task we want to perform within the subroutine to make it easier to understand the script). We may also provide information to the subroutine in order to perform the specified task. The data will be provided this way: Whatever(data1, data2 ... dataN) In the following example we will provide different data to a unique subroutine depending on the Name of the person provided throw a form: Example 3 <% TheName=request.form("name) if TheName="John" then ResponseToVisitor(35,Sue,New York) else if TheName="Peter" then ResponseToVisitor(33,Sally,Los Angeles) else response.write("Who are you?") end if end if Sub ResponseToVisitor(AA,BB,CC) response.write ("I know your are" & AA & "years old, ") response.write ("you are married to" & BB & ", and") response.write ("you are living in " & CC) End Sub %>

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

28 In line 14 it is specified AA is the first variable to be get, BB the second one, and CC the third one. The values for the three variables are provided in the same order in line 5 or line 8. The example above also shows subroutines are very useful to avoid repeating a specific number of tasks several times within the script, so that the script looks more organized and it is smaller.

Include/virtual
Server Site includes or SSI is a very simple programing language (see a small tutorial) but it also has a very limited number of instructions. We will consider only one option SSI allows us to use within our asp scripts: include/virtual. In the next example we will use the include option of SSI in a our asp script (response.asp). This command allows as to add a set of instructions from different files (file1.txt and file2.txt bellow) and execute them. Example 4 response.asp <% TheName=request.form("name) if TheName="John" then %> <!--#include virtual="/file1.html" --> <% else %> <!--#include virtual="/file2.asp" --> <% end if %> File1.html Hi, John.<br> I know your are 31 years old, you are married to Sue, and you are living in New York. File2.asp <% for i=1 to 3 response.write(Thename & "...<BR>") next response.write("Who are you?") %>

29

In this case, if the name of the person who is visiting our page is John, then we will respond with file1.html. If not, then we will execute some asp instructions from file2.asp. The include file must be a text file (.txt, .html, .htm, .shtml, .asp...). Although we have used file1.html and file2.asp, the script will work exactly in the same way with file1.txt and file2.txt (changing the name of the files would have no effect). By using SSI and asp we may also get a secret page:

secret_page.asp Try ! <% UserName=request.form ("username") Password=request.form("password") if UserName="myusername" and Password="mypassword" then %> <!--#include virtual="/cgi-bin/secret_info.txt" --> <% else %> <Form Action=secretpage.asp method=post> Username: <input type=text name=username size=15><BR> Password: <input type=text name=password size=15><BR> <input type=Submit Value=Send> </form> <% end if %> secret_info.txt This is my secret information:<BR> My name is John.<BR> My surname is Smith.<BR> <BR>End of secret information. In this case it is convenient to save secret_info.txt file in the cgi-bin directory (the .txt file is not accessible by visitors from this directory, but it will be accessible from our top directory).

30

Active Server Pages: Session and Application
In this page we will learn how to keep information from the user in our server (Session method) and how to share information between users (Application method). This is only a basic tutorial for beginners, so only basic features will be described.

The Session method
The first time a user accesses to a our pages some connections and disconnections took place. During this process the server and the client will interchange information to identify each other. Due to this exchange of information our server will be able to identify a specific user and this information may be use to assign specific information to each specific client. This relationship between computers is call a session. During the time a session is active, it is possible to assign information to a specific client by using Session method. We will use an example to explain this method: Let's suppose we want to allow specific user to access the information on our site or directory and we want to show a username in all pages visited by the user. In this case we may use the Session method.

In this example, we will ask the username of the person in our index.asp page

31 respondtoforms.asp <% IF Request.form="" THEN %> <html> <title>Our private pages</title> <body> In order to access this pages fill the form below:<BR> <form method="post" action="index.asp"> Username: <input type="text" name="username" size="20"><BR> Password: <input type="password" name="password" size="15"><BR> <input type="Submit" value="Submit"> </form> </body> </html> <% ELSE %> <% IF Request.form("username")="Joe" AND Request.form("password")="please" THEN %> <% Session("permission")="YES" Session("username")="Joe" %> <html> <title>Our private pages</title> <body> Hi <% =Session("username") %>, you are allow to see these pages: <BR> <A HREF="page1.asp">Page 1</A><BR> <A HREF="page2.asp">Page 2</A> </body> </html> <% ELSE %> Error in username or password <% END IF %> <% END IF %> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

32

Let's explain how this page works: In line 1 it is checked whether information is submitted throw a form. If the answer is negative (Request.form=""), a form is displayed asking for username and password. After filling the form and submitting it, as Request.form is not "" and the script will jump to line 15. In line 17 they are checked the username and password. If user name is "Joe" and Password is "please", then two variables are set for the client (lines 21-22): Session("permission")="YES" Session("username")="Joe" These variables will be kept in the server during the time the session is active (normally it will expire after 20 minutes without contact). Finally, if username and password are correct, a response page with links is send to the client with the name of the user in the top. In this example, if the username or password are incorrect the response page will include the text in line 38. Now, let's suppose the user clicks in the link "Page 1" (page1.asp). The code of page1.asp will be the following one: page1.asp <% IF Session("permission")="YES" THEN %> <html> <title>Page 1</title> <body> Hi <% =Session("username") %>, welcome to Page 1 <BR> This page is empty at the moment, but it will be very interesting in the next future </body> </html> <% ELSE %> You are not allowed to access this page <% end IF %> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

33 In line 1 it is check whether the value for Session("permission") is "YES". If the answer is positive a page with information is send to the client. If the answer is negative, the text in line 15 is send. NOTES:


 

Session method is suitable for sites with a limited number of visitors. For sites with a bigger number of visitors it is preferable to keep the information in the clients computer (by using cookies). To create more variables associated to a specific client we must substitute the text between brackets in Session("text"). The corresponding security features in the client's browser must be enable.

The Application method
With Session method we have defined a value for Session("whatever")="Joe", but this information can not be share between visitors (Session("whatever") has a unique value for each visitor). To allow sharing information Application method is used. For a better understanding of this method we will create a counter which will be shown in the same page. In order to make it work, copy the code below to your server:

counter.asp <% Aplication.Lock Application("pagevisits")=Application("pagevisits")+1 Application.Unlock %> <html> <title>Page under construction</title> <body> Under construction<BR><BR> Page views: <% =Application("pagevisits") %> </body> </html> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

34

In the first part of this code, as Application method is shared between different clients, it is necessary to prevent other clients from modifying the information in Application("pagevisits"). Application.Lock will avoid that by stopping the information to be shared, and Application.Unlock will allow the information to be shared again. Line 3 increases the value for the counter. Finally a html code is send to the client, including the value of the counter. NOTES:


The information save as Application("whatever") as shown in this tutorial is lost each time the server is restarted.

Session and Application method has been used to create a simple chat script (copy and paste the code to your site and it will work immediately.

35

Active Server Pages: Dictionary
The Dictionary object
In order to learn how Dictionary object works we will create a small script which will translate number 1 to 10 from English to Spanish.

translate.asp <% SET MyDictionary=CreateObject("Scripting.Dictionary") MyDictionary.Add "one","uno" MyDictionary.Add "two","dos" MyDictionary.Add "three","tres" MyDictionary.Add "four","cuatro" MyDictionary.Add "five","cinco" MyDictionary.Add "six","seis" MyDictionary.Add "seven","siete" MyDictionary.Add "eight","ocho" MyDictionary.Add "nine","nueve" MyDictionary.Add "ten","diez" EnglishNumber="four" SpanishNumber=MyDictionary.Item (EnglishNumber) Response.Write(SpanishNumber) %> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

How the script works
 

 

Fist we have define a Dictionary named "Mydictionary" (line 2) We have add to the dictionary the data corresponding to the different number in English and Spanish (lines 4 to 13). When adding pairs of English and Spanish numbers to the Dictionary object, the number writen in English is a Key, and the number writen in Spanish a Item. In line 15 we have defined a variable named EnglishNumber and we have provided a value for this variable (in red). In line 16 we have defined a new variable (SpanishNumber) and we have get its value from the dictionary by indicating we want to get the Item corresponding to a specific Key (EnglishNumber).

36


In line 17 the translated number is send to our visitor. The response will be "cuatro".

We may change the values in our dictionary by using this kind of code:




MyDictionary.Key ("one")="1" example In our original script the key "one" will be substitute by a new key value ("1"). The item "uno" will not be changed. MyDictionary.Item ("two")="2" example In our original script the item corresponding to key "two" will be substitute by a new item value ("2"). The key "two" will not be changed.

We may display the number of element pairs in the dictyonary by using this code:


MyDictionary.Count example

If we want to check whether a key exists in our dictionary before responding to our visitor we will use this kind of comparisoncode if MyDictionary.Exists ("ten")=True then Response.Write("this key is included in the dictionary") lse Response.Write("Error: no such a key in the dictionary") end if

Example: Translation of a number from English to Spanish
This example uses most of the elements explained above.
 

If there is no information posted to the script (line 6), the script will send to the visitor the form in the Sendform() subrouting (lines 34-40). When a request to translate a number is get the script will check whether the number corresponds to a key in the dictionary (line 25). If the response is afirmative the corresponding item is send to the visitor. In case the key does not exists, a "No translation available" response is send to the visitor (line 29).

37 translation.asp try ! <html> <title>Page under construction</title> <body> <% if request.form="" then Sendform() else SET MyDictionary=CreateObject("Scripting.Dictionary") MyDictionary.Add "one","uno" MyDictionary.Add "two","dos" MyDictionary.Add "three","tres" MyDictionary.Add "four","cuatro" MyDictionary.Add "five","cinco" MyDictionary.Add "six","seis" MyDictionary.Add "seven","siete" MyDictionary.Add "eight","ocho" MyDictionary.Add "nine","nueve" MyDictionary.Add "ten","diez" EnglishNumber=request.form("EnglishNumber") Response.Write("English number: " & EnglishNumber) if MyDictionary.Exists (EnglishNumber)=True then SpanishNumber=MyDictionary.Item (EnglishNumber) Response.Write("<BR>Spanish number: " & SpanishNumber) else Response.Write("<BR>Spanish number: " & "No translation available") end if end if %> <% Sub Sendform() %> <form action=translation.asp method=post> Write a number in English<BR> <input type=text size=30 name=EnglishNumber><BR> <input type=submit Value="Enter to my Secret Page"> </form> <% End Sub %> </body> </html> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

38

Example: Password protected information In this example keys and items are used as usernames and passwords. It is very similar to the one above.

secretpage.asp try ! <% if request.form="" then Sendform() else SET MyDictionary=CreateObject("Scripting.Dictionary") MyDictionary.Add "John","123" MyDictionary.Add "Peter","456" MyDictionary.Add "Anna","789" Username=request.form("Username") Password=request.form("password") if MyDictionary.Exists (Username)=True AND Password=MyDictionary.Item (Username) then SecretInfo() else Response.Write("Error: incorrect userame or password") end if end if %> <% Sub Sendform() %> <form action=secretpage.asp method=post> Username: <input type=text size=30 name=Username><BR> Password: <input type=password size=30 name=Password><BR> <input type=submit Value="Submit"> </form> <% End Sub %> <% Sub SecretInfo() %> <html> <head> <title>My Secret Page</title> </head> <body bgcolor=FFFFFF> <center> <h1>This is my secret info</h1> Hello !<BR> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

39 Do you want to be my friend? </center> </body> </html> <% End Sub %> 39 40 41 42

40

Active Server Pages: Cookies
Cookies method is very similar to Session method: the basic difference is that with Cookies method the information is save in the clients computer and not in the server, so it is more suitable for sites with a lot of visitors. This method implies sending information to the client and requesting it whenever the information is needed. Additionally, we will learn how to delete the information save in the clients computer when it is not necessary anymore. When the visitor gets to our asp file we may save information related with him in his computer. The order will be like this one: <% response.Cookies ("whatever")="information" %> When this line is executed, the visitor will have the information in his computer, and whenever we need that information, we may request it using this code: <% =request.Cookies ("whatever") %> or <% variable1=request.Cookies ("whatever") %> Let's try an example using Cookies method: let's consider we have visitors checking our site several times and we want to let them know how many times they have accessed to our computer.

cookiesexample.asp

try !

<% If Request.Cookies ("NumberVisits")="" Then %> <% Response.Cookies ("NumberVisits")=1 %> This is your first visit to this page. Welcome. <% Else %> <% VarNumberVisits=Request.Cookies ("NumberVisits") VarNumberVisits=VarNumberVisits+1 Response.Cookies("NumberVisits")=VarNumberVisits %> Welcome back to this page. You have visited this page <% =VarNumberVisits %> times. <BR>Check my great links <BR>..... <BR>..... <% End If %>

41 Cookies method may be used to show visitors specific information we have requested throw a form, as for example a list of links related to a specific theme, information to allow access to the content of a page or to personalize the page (background color, frames or not frames...), information to fill a form automatically, etc.

42

Active Server Pages: Open, Read and Create files
Open and Read content from a text file
Example 1: This one will be the basic code we need to open a text file:

1 2 3 4 5 6 7 8 9 10 11 12

<% Set fs = CreateObject("Scripting.FileSystemObject") Set wfile = fs.OpenTextFile("c:\Mydir\myfile.txt") filecontent = wfile.ReadAll wfile.close Set wfile=nothing Set fs=nothing response.write(filecontent) %>

Line 2 will create the appropriate environment which allows to perform the operations involving files in the server. We have defined a variable named "fs" to do it (we may change the name of this variable). In line 4 we have create a new variable named "wfile" and we have apply the method OpenTextFile to variable "fs". We have also define which is the exact location of the file we want to open in this line (the complete path is necessary). In line 5 we have read all the content of the file to a variable named "filecontent" using the instruction "ReadAll". Lines 7 to 9 are use to let the server know we have finished all operations involving files. In line 11 we have response to the client with the content in the variable "filecontent".

Example 2: Let's suppose we have a file with different kind of information in each line (a name in the first line, the last name in the second one, and the age in the third one), and we want to use them separately. This one will be the script we may use:

43 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <% Set fs = CreateObject("Scripting.FileSystemObject") Set wfile = fs.OpenTextFile("c:\Mydir\myfile.txt") firstname = wfile.ReadLine lastname = wfile.ReadLine theage = wfile.ReadLine wfile.close Set wfile=nothing Set fs=nothing %> Your first name is <% =firstname %><BR> Your last name is <% =firstname %><BR> Your are <% =firstname %> years old<BR>

This example is very similar to the previous one, but in this case each line we have read from "myfile.txt" has been saved to a different variable (lines 5 to 7), and they have been used in lines 15 to 17 to respond to the client. Example 3: This example will read all lines in the file, and the response page will include the content of each line with its line number.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

<% Set fs = CreateObject("Scripting.FileSystemObject") Set wfile = fs.OpenTextFile("c:\Mydir\myfile.txt") counter=0 do while not wfile.AtEndOfStream counter=counter+1 singleline=wfile.readline response.write (counter & singleline & "<br>") loop wfile.close Set wfile=nothing Set fs=nothing %>

44 In line 6 we will define the variable "counter", and in line 7 to 11 we will repeated instructions within the Do_While _Loop until the file does not reach the end of the file (the condition is "not wfile.AtEndOfStream"). Example 4: Let's suppose we have a file with a number in line 1 and a second number in line 2.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

<% Set fs = CreateObject("Scripting.FileSystemObject") Set wfile = fs.OpenTextFile("c:\Mydir\myfile.txt") number1 = Clng(wfile.ReadLine) number2= Clng(wfile.ReadLine) number1and2 = number1 + number2 response.write (number1and2) wfile.close Set wfile=nothing Set fs=nothing %>

In the previous examples we were able to save the value in a line to a variable, but that variable was a string class variable. In this example we have saved the content of line 1 and line 2 to variables "number1" and number2" by using the function "Clng". This function has allow us to add both numbers in line 9 and send the result to the client (line 10).

45

Create and Write a text file
Example 1: The basic code we need to create a file is very similar to that one we have used to open a file:

1 2 3 4 5 6 7 8 9 10 11 12 13 14

<% thetext="Write this text in the file" Set fs = CreateObject("Scripting.FileSystemObject") Set wfile = fs.CreateTextFile("c:\Mydir\myfile.txt", True) wfile.Write (thetext) wfile.close Set wfile=nothing Set fs=nothing response.write("Text created") %>

The differences to instructions when opening a file are line 6 and line 7: The method used in line 6 is "CreateTextFile"; it is necessary to indicate the complete path to the file we want to create; in line 6 we may use the instruction True (to allow over-writing an existing file) or False (if the file exits, it is not over-written). Line 7 will write in the file the string in variable "thetext".

We may also use this instruction to add content to the file wfile.WriteLine (thetext1) wfile.WriteLine (thetext2) ... In this case we will write the content in variable "thetext1" in line 1, content in "thetext2" in line 2 etc. Example 2: Let suppose we want to record the IP address of all visitor to our page to a file named "mylog.txt".

46 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <% VisitorsIP=Request.ServerVariables ("REMOTE_ADDR") Set fs = CreateObject("Scripting.FileSystemObject") Set wfile = fs.OpenTextFile("c:\Mydir\mylog.txt", 8,false,0) wfile.WriteLine (VisitorsIP) wfile.close Set wfile=nothing Set fs=nothing response.write("IP registered") %>

The IP address is requested in line 2 (check Functions and Procedures). In this case we have open the file "mylog.txt" in line 6 with the instruction "forappending". this instruction will allow us to open the file and add at the end of it the IP address of our last visitor.

47

Active Server Pages: Global.asa
Global.asa is a text file locate in your main directory (/global.asa). Bellow is shown the basic extructure of a global.asa file. global.asa
<SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart ........ End Sub Sub Application_OnEnd ........ End Sub Sub Session_OnStart ........ End Sub Sub Session_OnEnd ........ End Sub </SCRIPT>

This file will be activated in this cases:
 

When the first visitor accesses our pages When a new session starts.

In both cases, we may determine a series of events to be execute in the file above. 1. Application_OnStart It is execute before the first session is started. 2. Application_OnEnd It is execute when the application is finished. 3. Session_OnStart It is execute when the server creates a new session (when a new client acccesses our server). 4. Session_OnEnd It is execute when a session is abandon of after certain period of time without contact between the client and the server (normaly after 20 minutes or so from the last request from a specific client, the server will consider he is not going to come back, so it will delete all the information related to that session).

48

Lets try a very simple example:

Active Users Counter
Just copy the code in the table to a text file and save it in the main directory of your site ("/global.asa").

global.asa
<SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart application("activevisitors")=0 End Sub Sub Application_OnEnd End Sub Sub Session_OnStart application.lock application("activevisitors")=application("activevisitors")+1 application.unlock End Sub Sub Session_OnEnd application.lock application("activevisitors")=application("activevisitors")-1 application.unlock End Sub </SCRIPT> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

The first time a visitor gets to our pages, global.asa will be executed, and consequently, application("activevisitors") in line 4 will get a value equal to "0". Immediately (as a new session has started), in line 12, application("activevisitors") will be increased by one. Each time a new visitor gets to our pages application("activevisitors") will be increased by one, and identically, each time a session is finished, this parameter will be reduce by one (line 18). In case we want to show the number of visitors in our page, we must use this kind of code :

index.asp There are <% =application("activevisitors") %> active visitors.

49

Active Server Pages: ASP and Javascript together
In this tutorial we will create a regular HTML page with a small javascript code, and we will use this javascript code to include in the page new information from a ".asp" file. First, let´s check this two pages:

javascript.html <html> <title>My page</title> <body> <script language="javascript" src="javascript.asp"></script> </body> </html> javascript.asp document.write ("hello") 1 1 2 3 4 5 6 7 8

In the first file (javascript.html) we have include a javascript code in red, and within the code the file name from which we will get information to complete our page (src: source). So that we are asking for information to complete our page (javascript.html) to a different page (javascript.asp). This time we have only include the file name, but we may use the complete url even from a different site (for example: http://www.adifferentsite.com/javascript.asp). In the second file (javascript.asp) we have include the information necessary to write in the document the word "hello". This time we have use ".asp" extensión for the second page even though other extensions are possible. The resulting page in our example will be like this one:

javascript.html (resulting page) hello

50 So we already know we are able to include a text generated in one page within a different one. As the information we are including can be generate within a ".asp" file, we can add information dinamically by using Active Server Pages. Let´s try two examples: A very rudimentary banner rotator system A simple text hit counter In case you are using ".asp" files whithin a site and the origen of the information we want to include in the page is originated in the same site, using any of those system is not very convenient: the number of conections to the server will increase, and there may be an important delay. In case you want to include information obtained from an asp script in several pages but you do not want to copy the asp script in all of them, you may use the Include instruction, so that the script is only in one page, and by changing it you will change the results in several pages.

A very rudimentary banner rotator system
Our page is "mypage.html" and we are requesting information to complete it from "http://www.myadrotator.com/adrotator.asp" which may be located in the same or in a different site. The information provided by the second file will determinate the ad to be display in our page.

mypage.html <html> <title>My page</title> <body> <script language="javascript" src="http://www.myadrotator.com/adrotator.asp"></script> </body> </html> 1 2 3 4 5 6 7 8

51

adrotator.asp <% if session("ad")="" then session("ad")=0 end if if session("ad")=5 then session("ad")=1 else session("ad")=session("ad")+1 end if %> <% Select Case session("ad") %> <% case 1 %> document.write ("<A HREF=http://www.1site.com">) document.write ("<IMG SCR=1.gif>") document.write ("</A>") <% case 2 %> document.write ("<A HREF=http://www.2site.com">) document.write ("<IMG SCR=2.gif>") document.write ("</A>") <% case 3 %> document.write ("<A HREF=http://www.3site.com">) document.write ("<IMG SCR=3.gif>") document.write ("</A>") <% case 4 %> document.write ("<A HREF=http://www.4site.com">) document.write ("<IMG SCR=4.gif>") document.write ("</A>") <% case 5 %> document.write ("<A HREF=http://www.4site.com">) document.write ("<IMG SCR=4.gif>") document.write ("</A>") <% End select %> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34



Lines 2-3. Each time a new visitor gets to "http://www.myadrotator.com/adrotator.asp" a new session will be open, and by

52 using the session method, we will define session("ad") value to 0. In case the visitor is not new, the value for session("ad") will exits, and that value will be keep. Lines 6-10. The value for Session("ad") is increased by one unless that value is 5 (which is the maximum value allowed in this script) Lines 13-34. By using Select_case the page will return the information necessary to display the appropiate ad at "mypage.html". The first time a visitor accesses our page the ad display will be the first one, the second time ad number two and so on. After 5 visits, the process will start again. We may easily increase the number of ads just by adding more obtions within Select_case and setting the maximum number from 5 to the new maximum in line 6.

 

NOTE: when writing the javascript code you must be very carefull: do not include brakets within the brakets in the javascript code p.e.: Correct: document.write ("<A HREF=http://www.4site.com">) Incorrect: document.write ("<A HREF="http://www.4site.com"">) Correct: document.write ("<A HREF='http://www.4site.com'">) You may include in the response as many lines like the ones above or any other javascript code.

A simple text hit counter
Our page is "mypage.html" and we are requesting information to complete it from "http://www.mycounter.com/hitcounter.asp" which may be located in the same or in a different site. The information provided by the second file will allow to get a text with the number of hits in our page.

mypage.html <html> <title>My page</title> <body> <script language="javascript" src="http://www.mycounter.com/hitcounter.asp"></script> </body> </html> 1 2 3 4 5 6 7 8

53

hitcounter.asp <% Wfile="c:\mydir\cgi-bin\hitcounter.txt" Set fs = CreateObject("Scripting.FileSystemObject") Set a = fs.OpenTextFile(Wfile) hits = Clng(a.ReadLine) hits = hits + 1 a.close Set a = fs.CreateTextFile(Wfile,True) a.WriteLine(hits) a.Close %> document. write ("Number of hits since 2002/01/01: <% =hits %>") 1 2 3 4 5 6 7 8 9 10 11 12 13 14



  

Lines 2. We will need a text file with a number as its unique content. The path to that file will be openned in variable "Wfile". Creating this page within cgi-bin directory is a good way to prevent visitor from accesing our counter (they will get an error when trying to access a ".txt file within cgi-bin directory). Lines 4-8. We will open our file, read the content to a variable ("hits"), and in line 7 the variable will be increased by one. Lines 10-12 . We will create a new file with the same name (overwriting the previous file) with the content in "hits". Line 14. The response page will be a javascript code containing the number of hits.

54

Active Server Pages: Using arrays
Introduction Working with Arrays Filtering values from a array Creating a table from data in a string Simple keyword search

Introduction
Instead of having our information (variables or numbers) in variables like Mydata1, Mydata2, Mydata3 etc, by using arrays our information will be in an unique variable. Let´s check an example:

array.asp <html> <title>My Array</title> <body> 1 2 3 4 <% 5 DIM MyData(2,2) 6 MyData (0,0) = "1" 7 MyData (0,1) = "2" 8 MyData (0,2) = "3" 9 MyData (1,0) = "4" 10 MyData (1,1) = "5" 11 MyData (1,2) = "6" 12 MyData (2,0) = "7" 13 MyData (2,1) = "8" 14 MyData (2,2) = "9" 15 Response.write (MyData (1,2)) 16 17 %> 18 19 </body> 20 </html> 21 Line 6: In this example we have defined by using "DIM" an array named Mydata and we have defined the size of the array. We may consider the table bellow as the source of information for our array. MyData 0 1 2 0 1 2 1 2 3 4 5 6 7 8 9

Lines 7-15. After defining the array we have assigned values to the array. Line 17. In the response page we will send the value assigned to MyData(1,2) in the array. The first number will be the row and the second the column, so that in our case the response page will show the value "6"

55 Very often, we will defined an array from data obtained from a table with only one column. Let´s check an example:

array2.asp <html> <title>My Array</title> <body> Original table for the array in the script MyData 1 1 0 2 <% 3 DIM MyData(9) 4 1 4 MyData (0) = "0" 5 7 2 MyData (1) = "1" 6 MyData (2) = "2" 7 3 3 MyData (3) = "3" 8 MyData (4) = "4" 9 4 4 MyData (5) = "5" 10 MyData (6) = "6" 5 5 11 MyData (7) = "7" 12 6 6 MyData (8) = "8" 13 MyData (9) = "9" 14 7 7 15 Response.write (MyData (5)) 16 8 8 %> 17 9 9 18 </body> 19 </html> 20 In the response page we will send the value 21 assigned to MyData(5) in the array. The response page will return 5.

It is also possible to define an array with more dimensions as for example MyData(5,5,5,5).

56

Working with Arrays
In the examples above we have defined all the values within the script one by one, but this assignation may be done in a different way, as it is described in the example bellow:

array3a.asp
<pre> <% MyArray=Array(Zero,one,two,three,four,five,six,seven,eight,nine) %> Thearray(0): <% =Thearray(0) %> Thearray(1): <% =Thearray(1) %> Thearray(2): <% =Thearray(2) %> Thearray(3): <% =Thearray(3) %> Thearray(4): <% =Thearray(4) %> Thearray(5): <% =Thearray(5) %> Thearray(6): <% =Thearray(6) %> Thearray(7): <% =Thearray(7) %> Thearray(8): <% =Thearray(8) %> Thearray(9): <% =Thearray(9) %> </pre>

Resulting page
Thearray(0): Zero Thearray(1): pne Thearray(2): two Thearray(3): three Thearray(4): four Thearray(5): five Thearray(6): six Thearray(7): seven Thearray(8): eight Thearray(9): nine

In this example the array has been create from a string, and each component of the array has been separated by a comma. The Array method will do it for us easily. We may also want to use a different string with a different delimiter to define the components in our array:

array3b.asp
<pre> <% TheText="Zero=one=two=three=four=five=six=seven=eight=nine" Thearray=split (TheText,"=") %> Thearray(0): <% =Thearray(0) %> Thearray(1): <% =Thearray(1) %> Thearray(2): <% =Thearray(2) %> Thearray(3): <% =Thearray(3) %> Thearray(4): <% =Thearray(4) %> Thearray(5): <% =Thearray(5) %> Thearray(6): <% =Thearray(6) %>

Resulting page
Thearray(0): Zero Thearray(1): pne Thearray(2): two Thearray(3): three Thearray(4): four Thearray(5): five Thearray(6): six Thearray(7): seven Thearray(8): eight Thearray(9): nine

57
Thearray(7): <% =Thearray(7) %> Thearray(8): <% =Thearray(8) %> Thearray(9): <% =Thearray(9) %> </pre>

In this example we have defined the variable TheText, and whithin this variable we have include strings separated by "=". In the next line, we have split the variable TheText into an array of strings (Thearray). Split command have been used to brake TheText and "=" has been used as a delimiter to separate the substrings. In the response page we have indicated the individual values of Thearray one by one. It may happend to have a variable we want to split, but we do not know how many substrings we may get. In that case we may use ubound command to discover how many elements are in our array, and them we may use that value to write them by using a For-next loop (see example below).

array4.asp
<pre> <% TheText="a,f,w,d,u,t,e,u,f,v,o" Thearray=split (TheText,"=") %> How many String do I have in TheArray? <% =ubound(Thearray)+1 %> <% For n=0 to ubound(Thearray) Response.write (Thearray(n) & "<BR>") next %> </pre>

Resulting page
How many Strings do I have in TheArray? 10 a f w d u t e u f v o

58

Filtering values from a array
In the next example we will filter the information in our array, and we will display only part of it.

array5.asp
<pre> <% dim MyArray(9) MyArray (0) = "Zero" MyArray (1) = "One" MyArray (2) = "Two" MyArray (3) = "Three" MyArray (4) = "Four" MyArray (5) = "Five" MyArray (6) = "Six" MyArray (7) = "Seven" MyArray (8) = "Eight" MyArray (9) = "Nine" %>
Find strings containing "t" (case sensitive) Eight Find strings containing "t" Two,Three,Eight Find strings which do not contain "t" (case sensitive) Zero,One,Two,Three,Four,Five,Six,Seven,Nine Find strings which do not contain "t" Zero,One,Four,Five,Six,Seven,Nine

Find strings containing "t" (case sensitive) <% =join(filter(MyArray,"t",True,0),",") %> Find strings containing "t" <% =join(filter(MyArray,"t",True,1),",") %> Find strings which do not contain "t" (case sensitive) <% =join(filter(MyArray,"t",False,0),",") %> Find strings which do not contain "t" <% =join(filter(MyArray,"t",False,1),",") %> </pre>

The array and the assignation of values has been done as usually, and in the second part of the script we have used some lines similar to this one: <% =join(filter(MyArray,"t",True,0),",") %> In this lines we have filter the values at MyArray and we have join them.

59 filter(MyArray,"t",True,0) This part of the line have search for "t" in MyArray. True means we have selected the strings containing the search string (in this case "t"). False will indicate we are selecting the strings which do not content the search string. 0 means our search is case sensitive (a binary comparation) 1 will mean it is not a case sensitive search (a textual comparation) join(filter(MyArray,"t",True,0),",") The complete line will join the filtered strings with the delimiter indicated (in this case ",")

Creating a table from data in a string
In order to undertand this script we will consider we have a table like the one bellow, and that this table was the original source of information we used to create our table:

Peter student John teacher

Chicago 123 London 234

From the table we got this three lines by separeting the values by commas: Peter,student,Chicago,123 John,teacher,London,234 Sue,Manager,Sidney,789 And finaly we conected the three lines by separeting the values with "/": Peter,student,Chicago,123/John,teacher,London,234/Sue,Manager,Sidney,789

Sue Manager Sidney 789

The string obtained was saved to a variable named Mydata in the script bellow. The resulting page will show a table like the original. This script is not limited by number of rows or columns (the maximun amount of then is calculate each time we run the script).

Createatable.asp <% Mydata="Peter,student,Chicago,123/John,teacher,London,234/Sue,Manager,Sidney,789" Createtable() %> <% Sub CreateTable() MyRows=split (Mydata,"/")

60 RowsNumber=ubound(MyRows) Response.write ("<table border=1>") For i=0 to RowsNumber DatainRow=split (MyRows(i),",") NumberofDatainRow=ubound(DatainRow) Response.write ("<tr>") For n=0 to NumberofDatainRow Response.write("<td>" & DatainRow(n) & "</td>") Next Response.write ("</tr>") Next Response.write ("</table>") End Sub %>

This script may be used for several porpouses: we may generate Mydata by filtering values from an array as shown bellow: <% Dim Myclients(3) Myclients(0)="Peter Smith,Chicago,Manager,123" Myclients(1)="John Smith,New York,Accountant,124" Myclients(2)="George Smith,Chicago,Administration,245" Myclients(3)="Sam Smith,Dallas,Consultant,567" SearchFor="Chicago" Mydata=join(filter(Myclients,SearchFor,True,1),"/") Createtable() %> This code in combination with Createtable() Subroutine in the previus example will display only the clients from Chicago. The SearchFor variable may be obtained from a form.

61

Simple keyword search
In this example, in our first visit a form asking for a keyword will be display. After submitting the keyword Toredirect() Subroutine will be activated. In this Subroutine we have create two arrays: Myinfo has a description of the URL located at MyURL. In case the keyword is included in the description of the site, the visitor will be redirected to the corresponding URL. Both arrays may be very very long.

62 search.asp <% if request.form="" them %> <form method=post action=search.asp> <input type=text name=keyword> <input type=Submit value=Search> </form> <% else Toredirect() end if %> <% Sub Toredirect() dim Myinfo(4) Myinfo (0) = "Asp tutorial for beginners" Myinfo (1) = "Displaying Date Time and Text" Myinfo (2) = "Using Variables and Forms" Myinfo (3) = "If...Then and For...Next instructions" Myinfo (4) = "Do...Loop and Select...Case instructions" dim MyURL(4) MyURL (0) = "http://www.asptutorial.info" MyURL (1) = "http://www.asptutorial.info/Datetime.htm" MyURL (2) = "http://www.asptutorial.info/Forms.htm" MyURL (3) = "http://www.asptutorial.info/if_then-for_next.htm" MyURL (4) = "http://www.asptutorial.info/Do_loop-Select_case.htm" Numberofpairs=ubound(Myinfo) For n=0 to Numberofpairs if inStr(Myinfo (n), request.form ("keyword"))>0 then Response.redirect(MyURL(n)) end if Next Response.write ("The keyword has not been found") End Sub %>

63

Active Server Pages: ASP file as a picture source
We are trying this tutorial to be simple, so in this page we will request imagenes from a ".asp" page, but the imagen will not be newly generated. The images will be already saved in our server . First, let´s check this two pages:

showpicture.html <html> <title>My picture</title> <body> <img src=mypicture.asp> </body> </html> mypicture.asp <% response.ContentType ="image/GIF" %> <!--#include virtual="mypicture.gif" -->
 

1 2 3 4 5 6 7 8 1 2

In the first file (showpicture.html) we have include in the html code the source for our picture ("mypicture.asp", instead of "mypicture.gif"). In the response page, first we have indicated whith kind of ContentType we are sending to the client (this time "image/GIF", and then by using "include/virtual" the file is send (in this case all files are in the same directory)

Let´s try an examples:

A rudimentary banner rotator system
Our page is "mypage.html" and we are requesting a picture to a file named "mypicture.asp". This file will send to the client one of the pictures available (in this case up to 5), and two variables will be set up:
 

session ("ad"): will be used to save a number, which is needed to determinate which ad to show each time session ("linkto"): will be used to save the link corresponding to the ad shown.

64 mypage.html <html> <title>My page</title> <body> <a href=adrotatorlink.asp><img src=mypicture.asp NOSAVE></a> </body> </html> mypictureasp <% if session("ad")="" then session("ad")=0 end if if session("ad")=5 then session("ad")=1 else session("ad")=session("ad")+1 end if response.ContentType ="image/GIF" %> <% Select Case session("ad") %> <% case 1 session("linkto")="http://linkto1.com" %> <!--#include virtual="picture1.gif" --> <% case 2 session("linkto")="http://linkto2.com" %> <!--#include virtual="picture2.gif" --> <% case 3 session("linkto")="http://linkto3.com" %> <!--#include virtual="picture3.gif" --> <% case 4 session("linkto")="http://linkto4.com" %> <!--#include virtual="picture4.gif" --> <% case 5 session("linkto")="http://linkto5.com" %> <!--#include virtual="picture5.gif" --> <% End select %> adrotatorlink.asp response.redirect(session("linkto")) 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6 7 8

65

"mypage.html" At "mypage.html" we have include the regular HTML code to show a picture. We have used within the code the instruction "NOSAVE", so the picture will not be saved in the clients cache. "mypicture.asp"


  

Lines 2-3. Each time a new visitor gets to "http://www.myadrotator.com/adrotator.asp" a new session will be open, and by using the session method, we will define session("ad") value to 0. In case the visitor is not new, the value for session("ad") will exits, and that value will be keep. Lines 6-10. The value for Session("ad") is increased by one unless that value is 5 (which is the maximum value allowed in this script) Line 12. The ContentType is defined Lines 15-31. By using Select_case and depending on the value saved in the instruction session("ad"), we will define session("linkto"), which will be the url to which we will redirect our visitor in case the picture send to the browser is clicked.

"adrotatorlink.asp" After clicking the corresponding picture, and as we have already save the corresponding URL at session('linkto"), we will redirect the visitor to the correct URL. NOTE: By using "NOSAVE" code in our page, the client will no save the picture in the cache of the computer. It may be a problem for us: let´s suppose we have include this the same code in several pages within our site. Each time we visit a new page, session ("linkto") will be defined again, but in case the visitor clicks the back bottom of the browser and the picture show is the same one it was shown in our previous visit, when clicking the visitor will be redirect to a non-correct URL.

66

Active Server Pages: Active Server Pages Server-Side Scripting
Functions and Procedures abs (n: number) Function. Returns the absolute value of n. chr (asciicharcode: number) Function. Returns a string containing the ASCII character specified by asciicharcode. For a list of ASCII characters and character codes, see http://www.microsoft.com/workshop/author/newhtml/htmlr018.htm. date Function. Returns the current system date as a string. day (thedate: string) Function. Extracts the day of the month from thedate and returns it as a number. hour (thetime: string) Function. Extracts the hour value from thetime and returns it as a number. left (thestring: string, n: number) Function. Returns a string containing the first n characters of thestring. len (thestring: string) Function. Returns the number of characters in thestring. minute (thetime: string) Function. Extracts the minutes value from thetime and returns it as a number. month (thedate: string)

67

Function. Extracts the month value from thedate and returns it as a number. monthname (themonth: number) Function. Returns a string containing the name of the month whose number is specified by themonth. now Function. Returns the current system date and time. Request.Form (fieldname: string) Function. Returns the contents of the field whose name is fieldname. ServerVariables Request.ServerVariables ("HTTP_User-Agent") Function. Returns the client browser type as a string. Request.ServerVariables ("REMOTE_ADDR") Function. Returns the client's IP (Internet protocol) address as a string. Request.ServerVariables ("REMOTE_HOST") Function. Returns the client's domain name as a string. Request.ServerVariables ("SERVER_NAME") Function. Returns the domain name of the server as a string. If the server has no domain name, returns the server's IP address as a string.

68

Additional ServerVariables Response.redirect (anotherURL: string) Procedure. Redirects the current request to one specified by anotherURL. right (thestring: string, n: number) Function. Returns a string containing the last n characters of thestring. second (thetime: string) Function. Extracts the seconds value from thetime and returns it as a number. Server.URLEncode (thestring: string) Function. Converts thestring from a string to a URL by "escaping" certain characters. For example, each space character is replaced with %20. Returns the URL. time Function. Returns the current system time as a string. timevalue (thetime: string) Function. Extracts the time value from thetime and returns it as a string. weekday (thedate: string) Function. Extracts the weekday value from thedate and returns it as a number. weekdayname (weekday: number) Function. Returns a string containing the name of the weekday whose number is specified by weekday. year (thedate: string) Function. Extracts the year value from thedate and returns it as a number.

69

Operators The following operators are supported in ASP server-side scripts:
                   

Addition (+) And Assignment (=) Concatenation (&) Division (/) Exponentiation (^) Is Equals (=) Greater Than (>) Greater Than or Equal to (>=) Less Than (>) Less Than or Equal to (>=) Mod Multiplication (*) Negation (-) Not Not Equal To (<>) Or Subtraction (-) Xor

70

FORMS
BASIC EMAIL VALIDATION OK, this is not by any means a full proof way to validate an email address. This is more of a way to dummy-proof your online forms so that users have to enter an email address in a more consistent format. In order to truthfully validate an email address, you need to have a third party component installed on your server that will verify each email address submitted to your website. In our experience though, most small businesses and individuals do not get into this because of a lack of know-how and/or lack of an IT budget. Besides that, most third party hosting companies will not install a component like this on their server for you to use because it slows downs their server performance. So what can you do to verify an email address. Well, one quick and dirty way to do it is to verify that the email address contains an "@" symbol and a "." symbol. If you don't include some form of basic email validation like this on your email address form fields, you will be shocked by how many users will enter their name in your email field instead of their email address. This script at least stops that from happening. To do this, create a form page called form.asp and copy the below code into your page: <form name="YourFormName" method="Post" action="confirm.asp"> Email: <input type="text" name="Email" size="50"> <input type="submit" name="Submit" value="Submit"> </form> In this case, we will make the Email, Subject, and Comments fields all required.

71

Next, create a page called confirm.asp and copy the below code into your page: <% DIM strEmail strEmail = Request.Form("Email") IF strEmail <> "" AND inStr(strEmail,"@") <> 0 AND inStr(strEmail,".") <> 0 THEN ' Enter form to database or send via email ELSE Response.Write "<p>Please click Back on your browser and complete the following field:</p>" IF strEmail <> "" THEN ELSE Response.Write "<b>• Email</b><br>" END IF IF inStr(strEmail,"@") <> 0 THEN ELSE Response.Write "<b>• You entered an invalid Email Address</b><br>" END IF IF inStr(strEmail,".") <> 0 THEN ELSE Response.Write "<b>• You entered an invalid Email Address</b><br>" END IF END IF %> This script verifies that the email address contains a "@" and a "." or it displays a "Click "You Back on your browser..." message. You can obviously take this much further if you wanted to depending on your situation. If you only wanted to except emails that ended in ".com" or ".de" you could enter ".com" in place of the "@" symbol and change the "<> 0" to "= 0". Many companies offer free newsletters that users can subscribe to, but they will not let you subscribe with a free email account like hotmail, yahoo, etc. You could simply replace the "@" symbol with "hotmail" to prevent that. So even though this script will not actually verify that the email address entered is totally valid, it at least greatly reduces the amount of potential errors you could have to deal with. Happy validating!

72

BASIC FORM VALIDATION
For consistency purposes, it is always a good idea to validate some of your primary form fields. In other words, the user will be required to make an entry in certain fields or the form will not submit.

To get started, create a form page called form.asp and copy the below code into your page: <form name="YourFormName" method="Post" action="confirm.asp"> <table> <tr><td>Email: </td> <td><input type="text" name="Email" size="50"></td></tr> <tr><td>First Name: </td> <td><input type="text" name="FirstName" size="50"></td></tr> <tr><td>Last Name: </td> <td><input type="text" name="LastName" size="50"></td></tr> <tr><td>Subject: </td> <td><input type="text" name="Subject" size="50"></td></tr> <tr><td>Comments: </td></tr> <tr><td><textarea cols="50" name="Comments" ></textarea></td></tr> </table> <input type="submit" name="Submit" value="Submit"> </form> In this case, we will make the Email, Subject, and Comments fields all required.

73

To validate these fields all have entries, create a page called confirm.asp and copy the below code into your page: <% DIM strEmail, strSubject, strComments strEmail = Request.Form("Email") strSubject = Request.Form("Subject") strComments = Request.Form("Comments") IF strEmail <> "" AND strSubject <> "" AND strComments <> "" THEN ' Process the form as you like here ' For example enter form to your database or send it via email ELSE Response.Write "<p>Please click back on your browser and complete the following fields:</p>" IF strEmail <> "" THEN ELSE Response.Write "<b>• Email</b><br>" END IF IF strSubject<> "" THEN ELSE Response.Write "<b>• Subject</b><br>" END IF IF strComments <> "" THEN ELSE Response.Write "<b>• Comments</b><br>" END IF END IF %> That's it in a nutshell! Now, you have a standard form with required fields. Once you understand the basics of this, you can get a lot more sophisticated and really customize your validation to meet your spcific needs.

74

INSERT FORM DATA TO DATABASE
When a user submits a contact form, it is a good idea to record a copy of that email into a database for future reference. Here is how you can do it with MS Access. The first thing you need to do is create a formpage.asp page with the code below: <form name="YourFormName" method="Post" action="resultspage.asp"> <table> <tr><td>Email: </td> <td><input type="text" name="Email" size="50"></td></tr> <tr><td>Name: </td> <td><input type="text" name="Name" size="50"></td></tr> <tr><td>Comments: </td> <td><textarea name="Comments"></textarea></td> </table> <input type="submit" name="Submit" value="Submit Form"> </FORM> Next, we create a resultspage.asp page and enter the code as seen below: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM objRS Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open "YOUR table name HERE", objConn, , adLockOptimistic, adCmdTable objRS.AddNew objRS("Email") = Request.Form("Email") objRS("Name") = Request.Form("Name") objRS("Comments") = Request.Form("Comments") objRS.Update objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %> <p> <% DIM strName strName = Request.Form("Name") Response.Write strName %>,</p> <p>Thank you for emailing me.</>

75
Now you have a complete form that sends data to database that you can refer to in the future. This is a great way to follow up with customers and track how many people are using your website from year to year.

POPULATE FORM FROM DATABASE
Okay, so you want to make an editable form on your web page that retrieves data from your database and allows the user to update their own info. For our example, let's say you have a bunch of sales reps that work for your company. They login to your secure website area and want to update their personal info. For this example, we will say that a sales rep logged in to our secure area with their employee ID number, which is in turn written to a cookie on their browser. First, we start off with our standard connection and recordset code: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT * FROM tblSalesReps WHERE EmployeeID = " & intEmployeeID & " " Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn %> In this example, you could display the sales reps first and last name in two simple text boxes by doing this: <form name="Customer" method="post" action="updatepage.asp"> First Name: <input type="text" name="FirstName" size="50" value='<%=objRS("FirstName")%>' ><br> Last Name: <input type="text" name="LastName" size="50" value='<%=objRS("LastName")%>' > <input type="submit" name="Submit" value="Submit"> </form>

76

If you wanted to display a sales territory field that retrieves and lists available terriroties from your database, you could display them with a drop down menu like this: <form name="Customer" method="post" action="updatepage.asp"> Territory: <select name="Territory"> <option selected><%=objRS("Territory")%></option> <% DIM strTerritory DO WHILE NOT objRS.EOF strTerritory = objRS("Territory") %> <option value><%=strTerritory%></option> <% objRS.MoveNext Loop objRS.Close Set objRS = Nothing %> </select> <input type="submit" name="Submit" value="Submit"> </form> This will display the sales reps saved territory and allow them to view all of the other territories in the drop down menu and choose another if they wish. Last, you may have a comment field in your database for your sales reps to make additional comments. If you want them to be able to edit their comments, you could display them in a textarea box like this: <form name="Customer" method="post" action="updatepage.asp"> Comments: <textarea name="Comments" cols="50" rows="5" wrap="VIRTUAL"><%=objRS("Comments")%></textarea> <input type="submit" name="Submit" value="Submit"> </form> That's it. Now, you have your very own editable form. If you need help with updating the record in your database, check out our Update Record script.

77

RECORDS
INSERT NEW RECORD
There are a lot of instances where you may need to add new records to your database. For example, it is always a good idea to have your website contact form be recorded in your database for future reference. To do this, you first need to create a database called MyData. Then create a table called tblContact with these fields: ID - autonumber Email - text field FirstName - text field LastName - text field Comments - memo field DateContacted - date/time field Next, create a form page called form.asp and copy the below code into your page: <form name="YourFormName" method="Post" action="confirm.asp"> <table> <tr><td>Email: </td> <td><input type="text" name="Email" size="50"></td></tr> <tr><td>First Name: </td> <td><input type="text" name="FirstName" size="50"></td></tr> <tr><td>Last Name: </td> <td><input type="text" name="LastName" size="50"></td></tr> <tr><td>Comments: </td></tr> <tr><td><textarea cols="50" name="Comments" ></textarea></td></tr> </table> <input type="submit" name="Submit" value="Submit">

78

Then, create a page called confirm.asp and copy the below code into your page: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM objRS Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open "tblContact", objConn, , adLockOptimistic, adCmdTable objRS.AddNew objRS("Email") = Request.Form("Email") objRS("FirstName") = Request.Form("FirstName") objRS("LastName") = Request.Form("LastName") objRS("Comments") = Request.Form("Comments") objRS("DateContacted") = Date() objRS.Update %> <p> <% DIM strFirstName strFirstName = Request.Form("FirstName") %>,<br> </p> <% objRS.Close Set objRS = Nothing objCONN.Close Set objCONN = Nothing %> That's all there is to it. Now you can add records to your database.

79

UPDATE RECORD
Once you have a record in your database, chances are you may need to update it at some point. When would you want to do this? Let's say you have a membership based website that is secured with a username and password combination. While you probably would not allow the user to change their username, they certainly can change their password. To give this option to your members, open your MyData database and create a table called tblUsers with these fields: ID - autonumber Usernames - text field Passwords - text field DateLastUpdated - date/time field Next, create a form page called update.asp and copy the below code into your page: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT Username FROM tblUsers" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn %> <p>To change your password, enter your Username below:</p> <form name="UpdatePassword" method="Post" action="confirm.asp"> <table> <tr><td>Username: </td> <td><input type="text" name="Username" size="50"></</td></tr> </table> <input type="submit" name="Submit" value="Submit"> As always, there are a lot of ways to collect the username from the user. The main purpose here is to show how to update the record in the database though so on to the good stuff.

80

Next create a page called update2.asp and copy the below code: <% DIM strUsername strUsername = Request.Form("Username") IF strUsername <> "" THEN %> <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT * FROM tblUsers WHERE Username = ' " & strUsername & " ' " Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn, adOpenKeyset, adLockPessimistic, adCmdText IF objRS.EOF THEN Response.Write "<div align='center'>Sorry, that username does not exist. Please click back on your browser and enter a different username.</div>" ELSE %> <form name="UpdatePassword" method="post" action="confirm.asp"> <table> <tr><td>Customer:</td><td> <input type="text" name="Username" size="50" value='<%=objRS("Username")%>'> </td></tr> <tr><td>Password:</td><td> <input type="text" name="Password" size="50" value='<%=objRS("Password")%>'> </td></tr> </table> <input type="submit" name="Submit" value="Submit"> </form> <% END IF objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %> <% ELSE Response.Write "Please click back on your browser and enter your username." END IF %>

81

Last, create a page called confirm.asp and copy the below code into your page: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT * FROM tblUsers WHERE fUsername = '" & strUsername & "'" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn, adOpenKeyset, adLockPessimistic, adCmdText objRS.MoveFirst objRS("Password") = Request.Form("Password") objRS("DateLastUpdated") = Date() objRS.Update objRS.Close Set objRS = Nothing Response.Write "<div align='center'>" & strUsername & ",<br>" Response.Write " Your password has been succesffully updated in our database.<br><br>" objRS.Close Set objRS = Nothing objCONN.Close Set objCONN = Nothing %> That's how you update a record, enjoy.

82 DELETE RECORD
OK, time to learn how to delete a record from your database. For this example, let's say that you had a table of customer names and the state where they live and that you want to delete customers that live in Wyoming because you no longer service that area. To do this, open your trusty MyData database and create a table called tblCustomers with these fields: ID - autonumber Customer - text field State - text field DateEnrolled - date/time field Next, create a form page called delete.asp and copy the below code into your page: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT Username FROM tblCustomers" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn %> <p>Please enter the state that you would like to delete:</p> <form name="DeleteRecord" method="Post" action="confirm.asp"> <table> <tr><td>State: </td> <td><input type="text" name="State" value="Wyoming"></td></tr> </table> <input type="submit" name="Submit" value="Submit">

83
Next, create a page called confirm.asp and copy the below code into your page: <% DIM strState strState = Request.Form("State") IF strState<> "" THEN %> <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT * FROM tblCustomers WHERE State = ' " & strState& " ' " Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn, adOpenKeyset, adLockPessimistic, adCmdText IF objRS.EOF THEN Response.Write "Sorry, you do not have any customers in that state. Please click back on your browser and enter a different state." ELSE DO WHILE NOT objRS.EOF objRS.Delete objRS.MoveNext Loop Response.Write "Your customers in: " & strState & " have been succesffully deleted from your database." END IF objRS.Close Set objRS = Nothing objCONN.Close Set objCONN = Nothing %> <% ELSE Response.Write "Please click back on your browser and select a state to delete." END IF %>

84

When you submit the above form, it will send the value in the State field to the confirm.asp page. When the record is found, it will be deleted. The above script is meant for deleting multiple records. If you know that you only have one record in your table or if you only want to delete the first record returned by the script, you could make this slight adjustment in your code:

Use this: objRS.MoveFirst objRS.Delete objRS.Close Set objRS = Nothing Instead of this: DO WHILE NOT objRS.EOF objRS.Delete objRS.MoveNext Loop That's it, now you can delete records from your database.

85 REMOVE BEGINNING AND ENDING SPACES
Let's face it. As long as people manually enter data, there are bound to be typos in your data. One common error is when a user adds extra spaces at the beginning or end of a form field. So how do you stop this? First, you create a form.asp page and copy the code below: <form name="YourFormName" method="Post" action="confirm.asp"> <table> <tr><td>Email: </td> <td><input type="text" name="Email" size="50"></td></tr> <tr><td>First Name: </td> <td><input type="text" name="FirstName" size="50"></td></tr> <tr><td>Last Name: </td> <td><input type="text" name="LastName" size="50"></td></tr> <tr><td>Subject: </td> <td><input type="text" name="Subject" size="50"></td></tr> <tr><td>Comments: </td></tr> <tr><td><textarea cols="50" name="Comments" ></textarea></td></tr> </table> <input type="submit" name="Submit" value="Submit"> </form> Then, you use the TRIM function in your confirm.asp page to remove any spaces: <% DIM strEmail, strFirstName, strLastName, strSubject, strComments strEmail = TRIM(Request.Form("Email")) strFirstName = TRIM(Request.Form("FirstName")) strLastName = TRIM(Request.Form("LastName")) strSubject = TRIM(Request.Form("Subject")) strComments = TRIM(Request.Form("Comments")) %> The TRIM() function will remove any extra spaces from the beginning and end of each form field here, which insures better consistency within your database. If you are only concerned with removing spaces from the left or right side of the text, you could alternatively use LTRIM() or RTRIM() respectively. That's it, TRIM away!

86 UPPER AND LOWER CASE DATA
For consistency purposes, it is often a good idea to insure that all of your database records contain all upper or lower case letters. If you have an application that matches records between multiple tables or verifies data like with a password security application, having upper and lower case data can cause havic for you. So to keep this from becoming a problem, you can use the UCASE and LCASE. <% DIM strPassword strPassword = "Jamestown" Response.Write "Upper Case: " & UCASE(strPassword) & "<br>" Response.Write "Lower Case: " & LCASE(strPassword) %> Here is how it will display: Upper Case: JAMESTOWN Lower Case: jamestown Enjoy!

87

DATABASE
ASP DATABASE CONNECTION
ASP is a great tool for building dynamic web pages. One of the most basic scripts you need in your ASP web pages is the asp database connection script. Here are two examples of asp database connections. This example uses a DSN connection: <% DIM objConn Set objConn = Server.CreateObject("ADODB.Connection") objConn.ConnectionString = "DSN=myCONNECTION.dsn" objConn.Open %> You will need to setup your DSN with either your hosting company or your administrator if you have your own server. This example uses a DSN-less connection: <% DIM objConn Set objConn = Server.CreateObject("ADODB.Connection") objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &_ Server.MapPath ("/mydatabase.mdb") & ";" objConn.Open %> When you copy / paste the DSN-less code to your page, just remove the _ at the end of the objConn.ConnectionString line and put the Server.MapPath on the same line. As a rule of thumb, this should always go on one line, but for display purposes here we had to put it on two lines. If you want to learn more about these connection methods, be sure to read our Open Connection Tutorial.

Database

88 ALTERNATE ROW COLORS
If you need to display a long list of database records on your web page, it might be a good idea to alternate the colors of each row so that each record stands out and is easier to read. Here is an easy way to handle it. The first thing you need to do is create a database called MyDatabase. Then create a table called tblData with these fields: ID - autonumber Item - text field DateEntered - date/time field *** Also add "=Date()" as the default value for the field. This will add the date automatically, everytime a new record is entered. *** Then, start adding some data to your database. If you leave the database empty, the script will simply display a blank page. Next, create a page called alternaterowcolor.asp and copy the below code into your page: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT * FROM tblData" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn, adOpenKeySet <TABLE> <TR><TD>These are my database records.</TD></TR> <% DIM iRecordCount iRecordCount = 0 DO WHILE NOT objRS.EOF IF iRecordCount Mod 2 = 0 THEN %> <TR bgcolor="#CCCCCC"> <TD> <% objRS("Item") %> </TD> </TR> <% ELSE %> <TR bgcolor="white"> <TD> <% objRS("Item") %> </TD> </TR> </TABLE> <% END IF iRecordCount = iRecordCount + 1 objRS.MoveNext Loop objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %>

89
This will display the first record in gray and the second record in white and will continue to alternate the color of each row displayed on your page

90 COUNT AND DISPLAY NUMBER OF RECORDS
There are a lot of times when web designers need to count and display the number of records you have in their database. There are two simple ways to do this, be using DO...LOOP or by using COUNT in your SQL statement. Below are examples of both. If you want to use the DO...LOOP method, paste the below code into your page: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT * FROM myTable" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn ' Count how many records exist DIM iRecordCount iRecordCount = 0 DO WHILE NOT objRS.EOF iRecordCount = iRecordCount + 1 objRS.MoveNext Loop ' Display result Response.Write "(" & iRecordCount & ")" objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %> The SQL COUNT method uses a little less code. If you want to use it, just paste this code into your page: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT Count(*) AS intTotal FROM myTable" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open recSQL, objConn ' Display result Response.Write objRS("intTotal") objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %>

91
Either method will work. Like most things in ASP, it is really a matter of preference and what type of project you are working on. Happy counting!

92 DISPLAY 10 RECORDS PER PAGE
There may be times when you need to display a large number of records on your web page. Generally, the best way to do this is to limit the number of records displayed on your page and let the user scroll through the records by page. For example, let's say that you had a customer database that you wanted to display on your web page for your employees to view. The first thing you need to do is create a database called MyCustomers. Then create a table called tblCustomerInfo with these fields: ID - autonumber Email - text field Name - text field Then, enter some test data. For this example, we will say that we have a database containing 30 customers and we only want to display 10 customers per page.

Next, you create a page called displaycustomers.asp and copy the below code into your page:

93
<table> <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT * FROM tblCustomerInfo" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.CursorType = 1 objRS.Open mySQL, objConn DIM intPageRecords, intRecords, intRecordCount, intCurrentPage DIM intNumberOfPages, intDisplayPage intPageRecords = Request.Querystring("page") IF intPageRecords = "" THEN intPageRecords = 1 : intRecords = 1 intRecords = intPageRecords intPageRecords = ((intPageRecords - 1) * 10) +1 intRecordCount = 0 IF NOT objRS.EOF THEN objRS.Move (intPageRecords - 1) DO WHILE intRecordCount < 10 and NOT objRS.EOF %> <tr><td><%=objRS("Email")%> - <%=objRS("Name")%></td></tr> <% objRS.MoveNext intRecordCount = intRecordCount +1 Loop END IF %> </table> <%=intPageRecords%> - <%=intPageRecords+(intRecordCount-1)%> of <%=(objRS.RecordCount)%> customers <p>Scroll Through More Customers <% intCurrentPage = Request.Querystring("page") IF intCurrentPage = "" THEN intCurrentPage = 1 intNumberOfPages = int(objRS.RecordCount \ 10) IF objRS.RecordCount MOD 10<> 0 THEN intNumberOfPages = intNumberOfPages + 1 Response.Write("Pages: [") FOR intDisplayPage = 1 TO intNumberOfPages IF Cint(intDisplayPage) = Cint(intCurrentPage) THEN Response.Write " <b>" & intDisplayPage & "</b> " ELSE Response.Write " <a href=""news.asp?page=" & intDisplayPage & """>" & intDisplayPage &_ "</a> " END IF NEXT Response.Write ("]") %> Finished! You now have your very own scrollable customer list. Now all you have to do is go out and get those customers!

94

DISPLAY PART OF DATABASE FIELD
There are times when you may only need to display part of the data from a complex database field on your web page. For example, you may have a Location field that contains the city where your office is located and also the driving directions to your office. Normally, these data types will be separated by a comma, colon, or something similar. So how do you separate this data on the web? The first thing you need to do is create a database called MyDatabase. Then create a table called tblLocations with these fields: ID - autonumber Location - text field DateEntered - date/time field *** Also add "=Date()" as the default value for the field. This will add the date automatically, everytime a new record is entered. *** Then, start adding a new record and enter "Miami : Take a left on Harris Street, right on Morgan Avenue, and we are the third building on the left". Enter some more records in the same fashion if you like. Next, you create a page called displaypartoffield.asp and copy the below code into your page: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT * FROM tblLocations" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn %> <table> <% DO WHILE NOT objRS.EOF %> <tr><td> <% DIM strLocation strLocation = Left(objRS("Location"), InStr(1, objRS("Location"), ":") - 1) Response.Write strLocation %> <tr><td> <% objRS.MoveNext Loop objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %> </table>

95

This script will return all of the records in your database and will display only the data to the left of the ":" in your Location field. If you want to display only the data to the right of the ":" , substitute the below code for the above. <% DIM strLocation strLocation = Mid(objRS("Location"), InStr(1, objRS("Location"), ":") + 1) Response.Write strLocation %> That's it, happy displaying!

96

DISPLAY RECORDS HORIZONTALLY
Ok, when it comes to displaying records from a database on a web page, we can all agree that using a table to organize your data is one of the most commonly used methods. Today, most websites use tables to display their records vertically. However, depending on the type of data that you are displaying or the layout of your page, you may need to display your records horizontally. So how do you do this. Actually it's not that hard. The first thing you need to do is create a database called MyDatabase. Then, create a table called tblData with these fields: ID - autonumber Item - text field Next, create a page called displayhoriz.asp and copy the below code into your page: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT * FROM tblData" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn DIM recCount IF Not objRS.EOF THEN Response.Write "<table width='100%'>" recCount = 0 Do UNTIL objRS.EOF IF recCount Mod 3 = 0 THEN IF recCount <> 0 THEN Response.Write "</tr>" Response.Write "<tr><td>"&objRS("Item")&"</td>" ELSE Response.Write "<td>"&objRS("Item")&"</td>" END IF recCount = recCount + 1 objRS.MoveNext Loop Response.Write"</tr></table>" ELSE Response.Write "Sorry, there are no records in our database." END IF %>

97

This script will return all of the records in your tblData table and display them in a table on your page. Plus, it will display three records horizontally in a table row and then end the current row, start a new row, and display three more records. If you want to display more records horizontally, simply change the "3" in this line: IF recCount Mod 3 = 0 THEN to however many records you want to display in each row.

98 DISPLAY TOP 10 RECORDS
Sometimes when you display records from a database on the web, you only want to display the most recent records. The Our Latest Scripts list on our home page only displays the top 10 records ordered by date. Here is how you do it. The first thing you need to do is create a database called MyDatabase. Then create a table called tblScripts with these fields: ID - autonumber Script - text field DateEntered - date/time field *** Also add "=Date()" as the default value for the field. This will add the date automatically, everytime a new record is entered. *** Then, start adding some data to your database. If you leave the database empty, the script will simply display a blank page. Next, you create a page called displaytop10.asp and copy the below code into your page: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM mySQL, objRS mySQL = "SELECT TOP 10 * FROM tblScripts ORDER BY DateEntered DESC" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn %> <table border="1" width="100%"><tr><td align = "center"> Our Latest Scripts </tr></td> <% DIM iRecordCount iRecordCount = 0 DO WHILE NOT objRS.EOFand iRecordCount <> 10 %> <tr><td><%=objRS("Script")%><tr><td> <% iRecordCount = iRecordCount + 1 objRS.MoveNext Loop objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %> </table> This will display the top 10 most recent records that were entered into your database.

99

INSERT RECORD AND RETRIEVE UNIQUE ID
There are some instances where you will need to insert a record to a database and, at the same time, you will also need to retrieve the unique id that was just created for that record. For example, a visitor to your website may sign up to become a customer. When they complete and submit their registration form, you may want to give them a unique Customer ID #. The first thing you need to do is create a database called MyCustomers. Then create a table called tblCustomerInfo with these fields: ID - autonumber Email - text field Name - text field DateEntered - date/time field Next, create a form page called formpage.asp and copy the below code into your page: <FORM NAME="YourFormName" METHOD="Post" ACTION="resultspage.asp"> <TABLE> <TR><TD>Email: </TD> <TD><INPUT TYPE="text" NAME="Email" SIZE="50"></TD></TR> <TR><TD>Name: </TD> <TD><INPUT TYPE="text" NAME="Name" SIZE="50"></TD></TR> </TABLE> <INPUT TYPE="submit" NAME="Submit" VALUE="Submit Form"> </FORM>

100

Then, create a page called resultspage.asp and copy the below code into your page: <!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <% DIM objRS Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open "tblCustomerInfo", objConn, , adLockOptimistic, adCmdTable objRS.AddNew objRS("Email") = Request.Form("Email") objRS("Name") = Request.Form("Name") objRS("DateEntered") = Date() objRS.Update DIM bookmark bookmark = objRS.absolutePosition objRS.Requery objRS.absolutePosition = bookmark DIM strCustomerID strCustomerID = objRS("ID") %> <p>Thank you for reigstering with us. Here is your Customer ID: <% =strCustomerID %></p> <% objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %> There you have it. Now you can insert a record and retrieve its unique id and display it on your page all in one fell swoop!

101

LET USERS SORT YOUR DISPLAYED RECORDS
It's one thing to list your records in ascending or descending order on your web page, but how about letting the user sort your records the way they want? Let's say you are displaying a list of users on your page and you want to display all of the first and last names. The first thing you need to do is create a database called MyData. Then create a table called tblUsers with these fields: ID - autonumber FirstName - text field LastName - text field Then, start adding some names to your database. Next, you create a page called usersort.asp and copy the below code into your page:

102

<!--#INCLUDE VIRTUAL="/includes/connection.asp" --> <p> First Name <a href="usersort.asp?OB=f_a">ASC</a> sort <a href="usersort.asp?OB=f_d">DESC</a><br> Last Name <a href="usersort.asp?OBt=l_a">ASC</a> sort <a href="usersort.asp?OB=l_d">DESC</a> </p> <% DIM strOrderBy, tmpOrderBy strOrderBy = Request.QueryString("OB") Select Case strOrderBy Case "f_a" tmpOrderBy = "ORDER BY FirstName ASC" Case "fn_d" tmpOrderBy = "ORDER BY FirstName DESC" Case "l_a" tmpOrderBy = "ORDER BY LastName ASC" Case "l_d" tmpOrderBy = "ORDER BY LastName DESC" Case Else tmpOrderBy = "ORDER BY FirstName DESC" End Select DIM mySQL, objRS mySQL = "Select FirstName, LastName FROM tblUsers " & tmpOrderBy Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn DO WHILE NOT objRS.EOF %> <%=objRS("FirstName")%> <%=objRS("LastName")%><br> <% objRS.MoveNext Loop objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %> This will display all of the users in your database in descending order by first name as the default. Then, when the user clicks on either ASC or DESC next to First Name or Last Name, they will be able to change the sort order the way they want.

103

OPEN DATABASE CONNECTION
The most basic purpose of ASP is to allow a website to connect to a database and show "Live data". It is called live data because ideally the database administrator will be updating the database routinely which will therefore automatically update the website. So how do you do it? Well, it's actually pretty simple. First, you need to understand that there are two ways to connect to a database. You can use a DSN or DSN-less connection, both accomplish the same thing. A DSN is a Data Source Name that is setup on the server. You can think of it as a shortcut to your database because it contains the driver and database path information to your database. If you have your website hosted by an outside company like most people do, you will need to contact them directly and ask them to setup the DSN for you. You will have to tell them where your database is located within your website and you will have to give the DSN a name. Not all hosting companies support ASP. If you are looking for a reliable hosting company for your ASP website, we recommend using ASPWebHosting.com. Here is an example of a DSN connection: <% DIM objConn Set objConn = Server.CreateObject("ADODB.Connection") objConn.ConnectionString = "DSN=myCONNECTION.dsn" objConn.Open %> For those of you not familiar, we will run through the lingo. In the first section, the DIM line declares the variable objConn. The "Set objConn..." sets the connection object. "objConn.ConnectionString..." sets the connectionstring and the DSN and the last line "objConn.Open" opens the connection. Personnally, we prefer to use DSN-less connections to our databases. The reason is that for maintenance and updating purposes, it is easier to make changes to database connections on your own rather than having to call or email your hosting company and wait for them to update your DSN.

104

There is a little more code involved with DSN-less connections, but it is worth it. Here is an example of a DSN-less connection: <% DIM objConn Set objConn = Server.CreateObject("ADODB.Connection") objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &_ Server.MapPath ("/mydatabase.mdb") & ";" objConn.Open %> The only difference between this example and the DSN example above is in the "objConn.ConnectionString = ..." line. Instead of using "DSN = myCONNECTION.dsn" you actually write out the appropriate driver and the respective path to the database. Ideally, the connection string should all be written on one line, but for display purposes we put it on two. When you paste this to your code, just remove the _ at the end of the line and put the Server.MapPath on the same line. For maintenance purposes, we recommend that you place your database connection in a separate file like /includes/connection.asp. Then, simply use an include statement like this: <!--#INCLUDE VIRTUAL="/includes/connection.asp"--> to include your connection string in your pages. Then, if your database connection should ever change, you only have to edit it one time in your connection.asp file and it updates your connection throughout your website.

105

CLOSE DATABASE CONNECTION
A common problem among hosting companies is that ASP websites do not close the database connections after they are opened. This is a basic step that you should consider to be part of mandatory code. If you do not close your database connections, many problems can occur like web pages hanging, slow page loads, and more. Think of it as going through a door to your house. Maybe the door will shut by itself, but maybe it won't. If it doesn't shut, who knows what will happen. If you live in the country, a bear could walk in. If you live in the city, a mugger could walk in. Alright, well maybe leaving a database connection open won't lead to anything that bad, but it will lead to a lot of unecessary headaches for both you and your hosting company. So how do I close my database connection? It's very simple. Here is the code from our Open Database Connections Tutorial: <% DIM objConn Set objConn = Server.CreateObject("ADODB.Connection") objConn.ConnectionString = "DSN=myCONNECTION.dsn" objConn.Open DIM mySQL, objRS mySQL = "SELECT * FROM myTABLE" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open mySQL, objConn %> Display data from database here. <% objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %> All you have to do is include the "objRS.Close...objConn.Close..." code from the bottom of this example anywhere on your web page after your data is displayed. Yes, it is necessary to close both the connection and the recordset. Be careful not to include your close connection code on the page before where your data is being displayed or guess what happens? That's right, the connection gets closed before the data can be displayed and you get lots of errors. Well, that's it. Now, you know how to properly close a database connection. Be sure to include this in your ASP coding routine and it will be smoother sailing for both you and your hosting company or server administrator.


								
To top