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>

<%
DIM MyData(2,2)
MyData (0,0) = "1"
MyData (0,1) = "2"
MyData (0,2) = "3"
MyData (1,0) = "4"
MyData (1,1) = "5"
MyData (1,2) = "6"
MyData (2,0) = "7"
MyData (2,1) = "8"
MyData (2,2) = "9"

Response.write (MyData (1,2)) 
%>

</body>
</html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
3
1
4
5
6
2
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"
 

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>

<%
DIM MyData(9)
MyData (0) = "0"
MyData (1) = "1"
MyData (2) = "2"
MyData (3) = "3"
MyData (4) = "4"
MyData (5) = "5"
MyData (6) = "6"
MyData (7) = "7"
MyData (8) = "8"
MyData (9) = "9"

Response.write (MyData (5)) 
%>

</body>
</html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Original table for the array in the script
 MyData  
0
1
1
4
2
7
3
3
4
4
5
5
6
6
7
7
8
8
9
9

In the response page we will send the value 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).

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 Resulting page
<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>

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 Resulting page
<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) %>
Thearray(7): <% =Thearray(7) %>
Thearray(8): <% =Thearray(8) %>
Thearray(9): <% =Thearray(9) %>

</pre>

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 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 Resulting page
<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>

How many Strings do I have in TheArray?
10

a
f
w
d
u
t
e
u
f
v
o


 

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)
   <% =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>

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

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.
 

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 Chicago 123
John teacher London 234
Sue Manager Sidney 789
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

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,"/") 
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.
 
 

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.
 
 

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
%>

 

Tutorial home page