Friday, March 29, 2024

ASP Primer: Functional VBScript

Use these bookmarks to jump around the tutorial:

[Do the Math]

[Messing with Strings]

[Nailing Down a Date & Time]

[What’s Next?]

You’ve gotten a handle on the conditionals. You can do a loop. Now it’s time to learn about some of the built in functions that make life a whole lot easier.

And now for my
disclaimer. Many of the functions that we talk about below will have additional
features that we will not cover in this short tutorial. If you would like more
information on the functions or any of the other topics we cover in this series,
be sure to check out Microsoft’s online documentation at
http://msdn.microsoft.com.

Do
the Math

Even though you probably
won’t be doing much serious math in most of your ASP applications, it’s still a
good idea to review some of the more common math functions. Being that as it
may, here are the more common VBScript mathematical functions:

Mathematics:

 

 
ABS( ) This stands for ABSolute value. An absolute value, if you
remember from math class, is simply taking any number and eliminating the
sign so that any number returned here is essentially a positive number.

.

INT( ) This function will probably get more use than any of the
other mathematical functions we list here with maybe the exception of the
randomizing functions below. What INT does is simply turn any decimal number
into an integer (whole) number. It does this by whacking off everything
after the decimal point. That means there is no rounding going on here, it
simply throws away the fractional part of any number that you give it. For
example, if you give INT( ) the number 7.694, it will return then
number 7.

 

LOG( ) This function returns the natural logarithm of the number
that you give it.

 

Trigonometry:

 

 
SIN( ) I’m sure you already guessed that this is sine. Now, I’m not
going to go into detail on the uses of sine because you probably already
know what sine is used for. If you don’t, you may want to see if you can dig
up one of your old math books before you start plugging in this function.

 

COS( ) This function returns the cosine of the angle that you give
it.

 

TAN( ) This function returns the tangent of the angle that you give
it.

 

ATN( ) This function returns the arctangent of the number that you
give it.

 

Miscellaneous:

 

 
RANDOMIZE This particular math function does not actually return a
result. What Randomize does is set a seed for random number generation. In
short, it gets the ball rolling so that you can generate random numbers.

 

RND( ) This is the function that actually generates a random
number. Unlike our other math functions above, you don’t actually give this
function a number to crunch. To see how RANDOMIZE and RND( ) work
hand-in-hand, check out our practical example below.

Before we get into the
randomizing functions, let’s take a second to look at how the other mathematical
functions work. Using the mathematical functions above is quite simple. Here’s
an example of how to use TAN( ):

  decTangent =
TAN(
intAngle)

It’s as simple as giving
the function a number to crunch and letting it do the rest. The above example
applies to pretty much every function that we mentioned above with the exception
of the randomizing functions.

RANDOMIZE and
RND( )
are a bit different. In order to effectively demonstrate them in use
I’ve come up with this installments practical example, a randomly displayed
banner ad:

  <% Option
Explicit %>

  <% ‘ Banner Ad
Rotation %>

  <% Dim decRandomNumber %>

  <% RANDOMIZE %>
  <% decRandomNumber = RND( ) %>

  <% If decRandomNumber > .5 then %>

      <a HREF="http://www.adsite.com">

     
<IMG width="468" height="60" src="BannerAd1.jpg">

     
</a>

  <% Else %>

      <a HREF="http://www.otheradsite.com">

     
<IMG width="468" height="60" src="BannerAd2.jpg">

     
</a>

<% End If %>

Now for an explanation
of how the code above works. First, we declare our variable that we are going to
use to store our random number, decRandomNumber.

Next we use the
RANDOMIZE
function. This function sets the randomizing generator in motion
by seeding it. (Random number generators work by using a complex algorithm that
requires a seed number to kick-start the process. That seed number can be taken
any number of ways but usually involves a combination of the current date and
time.) You only need to use the RANDOMIZE function once on each ASP page
since it simply gets the process started. It can be used more than once but it
isn’t necessary.

The next function that
you will see is RND( ). RND( ) is the actual function that goes
out and retrieves your random number. We set our decRandomNumber variable
equal to the RND( ) function. This will set decRandomNumber equal
to a random number between 0 and 1.

Once we have our random
number set, it is a simple process of checking the number to see if it is
greater than .5 or not. That is where the If .. Then statement comes in. If our
number is greater than .5 then we display BannerAd1, otherwise we display
BannerAd2.

Right now each ad will
be displayed 50% of the time. To give more weight to one ad over another just
change how you make the comparison. For example, if you change the first part of
the If .. Then to say decRandomNumber > .75, BannerAd1 will only be
displayed 25% of the time. You can also add additional banner ads by adding in
an ElseIf or two. (Using the If .. Then, ElseIf and Else statements can be found
here.)

back to
top


Messing with Strings

Let’s move on to some
string functions. You will probably find yourself using string functions
infinitely more than the mathematical functions above. The reason is that most
of the data you interact with on the web is in the form of strings, i.e.
people’s names, addresses, web URL’s, e-mail addresses, etc.

Here are some of the
most commonly used string functions. I have tried to give an easy to understand
example of each function. We’ll discuss the practical applications of some of
the functions later. Here they are:

Changing Strings:  
LCASE( ) This function does exactly what you might think. It takes
any string it gets and makes it all lower case.

Example: Doing LCASE("Hello
World!") will give you "hello world!" back.

 

UCASE( ) This function is, of course, the polar opposite of LCASE(
)
. UCASE( ) changes any given string to all upper case.

Example: Taking the example above, doing UCASE("Hello World!")
will give you back "HELLO WORLD!".

 

LTRIM( ) This function gets rid of extra spaces on the left side of
any string by just chopping them off.

Example: If you give LTRIM( )
the string "     There are 5 extra spaces to the left.",
it will return a string like this "There are 5 extra spaces to the left."

 

RTRIM ( ) This function does the opposite of LTRIM( ). It
removes any extra spaces from the right side of any string.

Example: The
string "There are 5 spaces to the right of this string.    
" will be returned as "There are 5 spaces to the right of this string.".

 

TRIM( ) TRIM( ) then is a combination of the two above. It
will chop off any extra spaces before and after a given string.

Example:
The string "     There are 5 spaces before and after
this string.     " will return a result of "There are 5
spaces before and after this string.".

 

REPLACE( ) Learn this one well. REPLACE( ) allows you to replace
any given set of characters in a string with another set of characters.

Example: This function is a bit more complicated than the rest of the string
functions above. It requires more information before it can do its thing.
So, with that said, here is a some code to illustrate exactly how the
function works:

strMySentence = "I like ice
cream!"

strNewSentence = REPLACE(strMySentence,"like","love")

The result of the code above would be that strNewSentence would
now equal to "I love ice cream!". REPLACE( ) first wants to know what
string it is to perform the replace on, then what word or set of characters
it is looking for, and lastly what word or set of characters it is swapping
in when it finds a match. If there is more than one match within a string it
will replace all of the matches it finds.

 

All About the String:  
LEN( ) This is one of the few string functions that doesn’t
actually return a string. Instead it returns the length of any given string
as an integer. In other words, it counts the number of characters, including
spaces, and gives you the total.

Example: If you do LEN("Test
String") you will get the number 11 as the result.

 

LEFT( ) This function allows you to get a selected section of a
string. It is done by giving the function the string you want a piece of and
the length of that piece. It then counts from the left to a specified length
and returns that piece of the string.

Example: LEFT("I love ASP!",6)
would return the string "I love", which is 6 characters from the left
including the space.

 

RIGHT( ) This function does the exact same process as LEFT( )
except from the right.

Example: RIGHT("I love ASP!",4) would
return the string "ASP!", which is 4 characters from the right.

 

MID( ) As you might expect, MID( ) allows you to take a
string out of the middle of another string. For this particular function you
will need a starting point and the number of characters that you
want.

Example: MID("I love ASP!",3,4) will give you "love"
as the result. It starts at the third character "l" and snags it plus the
next 3 characters for a total of 4.

 

INSTR( ) This function allows you to search for a string within a
string. It works much like REPLACE( ) does in that you give it a
string to search and a string to search for. The result it returns is the
character number of the beginning of the match, if it finds one. If it
doesn’t find a match it will return a 0.

Example: INSTR("I love
ASP!","love") will return the integer 3. If you try INSTR("I
love ASP!","like") it will return the integer 0.

Here’s an extra little tip about
INSTR( ), INSTR("I love ASP!","asp",1) will ignore
case-sensitivity. In other words, the number one at the end of the function
tells it to find a match ignoring case. The default is to find an exact
match. The result of the example above would be 8. The result of this
example,

INSTR("I love ASP!","asp")
would be 0, no match found.

Now that you know some
of the string functions that you have available to you, I thought it might be a
good idea to give you some common uses for them.

UCASE( ) and
LCASE( )
: These are very useful in eliminating case-sensitivity when you are
making comparisons. For example, let’s say someone enters an email address on a
form to look up their account information. You don’t want to tell them you can’t
find their account if they accidentally capitalized a character in their email.
So, to eliminate that possibility you might want to take the email address they
input on the form and transform it to all lower case with the LCASE( )
function before you make a comparison to the accounts in your database.

TRIM( ), LTRIM(
)
and RTRIM( ): These functions are excellent for "cleaning up" a
user’s input. As a rule, I always use TRIM( ) on all input I get from
users. I like to eliminate any extra spaces up front so that they don’t cause me
any problems later. I very rarely use LTRIM( ) and RTRIM( ).

REPLACE( ): This
is one of the handiest functions around. You will find it very necessary for
eliminating problems when interacting with a database using SQL. You will also
find it very useful when trying to translate carriage returns into breaks (<BR>)
in HTML. I will show you specific examples of how REPLACE( ) is a
necessity when we get to some of the database stuff later.

LEN( ): This
function I find most useful when determining whether a user’s input is too long
or too short. If you are storing user input into a database you will often have
size limitations to contend with. This function can check those limits before
you generate an error writing to your database. It is also very useful for
parsing out search strings (we’ll get to that later).

LEFT( ),
RIGHT( )
and MID( ): These functions are great for chopping up user
input into single words or phrases. They are most handy in cooperation with
LEN( )
when separating out words in a user’s search string. I sometimes use
LEFT( ) to cut off user input that is too long.

INSTR( ): I find
this function most useful in searching for illegal words. For example, let’s say
your ASP page is posting user messages to a bulletin board. The bulletin board
is family oriented and you want to ensure that there is no bad language in any
of the postings. You can use INSTR( ) to deny messages where you find
offensive language.

back to
top


Nailing Down a Date & Time

As if you haven’t had
your fill of functions yet, here are some common functions used for manipulating
date and time:

DATE( ) This function gets the current date.

 

TIME( ) This function gets the current time.

 

NOW( ) This function gets the current date and time.

 

MONTH( ) This function pulls the month out of any date/time string
variable and returns it as a integer.

 

DAY( ) This function pulls the day out of any date/time string
variable and returns it as a integer.

 

YEAR( ) This function pulls the year out of any date/time string
variable and returns it as a integer.

 

HOUR( ) This function pulls the hours out of any date/time string
variable and returns it as a integer.

 

MINUTE( ) This function pulls the minutes out of any date/time string
variable and returns it as a integer.

 

SECOND( ) This function pulls the seconds out of any date/time string
variable and returns it as a integer.

 

WEEKDAY( ) This function is one of the more handy ones. It takes any
date given it and tells you what day of the week it is. It does this by
returning an integer number that indicates the day of the week. If a 1 is
returned it is a Sunday, a 2 indicates a Monday, etc.

 

DATEDIFF( ) This function allows you get the difference between two
days. You can even select how the difference is calculated, i.e. days,
hours, minutes, etc. Here’s how it works:

 
dateDay1 = "1/1/2002"

  DATEDIFF("d",DATE(
)
,dateDay1)

The example above compares today’s date with the first day of 2002 and
gives us the number of days between them. The "d" lets the function know to
calculate the difference in days. We could have also used "h" for hours, "m"
for months, "s" for seconds, etc. to calculate the difference.

 

DATEADD( ) As you would imagine, this function adds two dates together
and gives you the result. This function needs some very specific information
in order to complete its task. It must know the date it needs to add to, the
type of time that is being added (i.e. days, hours, minutes, etc.), and it
needs to know how much time to add. Here is an example:

  DATEADD("h",12,NOW(
))

The function above will add 12 hours ("h") to today’s date and time. The
result will be a new date and time 12 hours from now.

You probably won’t find
yourself manipulating dates and times as much as strings but you will use these
functions quite a bit. Here are some practical uses for the functions above:

DATE( ), TIME(
)
and NOW( ): You will be surprised how often you need to get the
current date and time. I have used these functions for everything from
displaying the current day to time stamping data that I send to a database. You
will probably find DATE( ) and NOW( ) the most useful.

MONTH( ), DAY(
)
, HOUR( ), MINUTE( ), YEAR( ), SECOND( ): To be
completely honest with you, I will rarely use any of these functions. It is
useful, on occasion, to get the month, day or sometimes year out of a date but I
rarely have used the HOUR( ), MINUTE( ) and SECOND( )
functions.

WEEKDAY( ): This
is a very handy function for displaying a more full and formal date. I actually
use this one quite a bit whenever I need to display a complete date.

DATEDIFF( ) and
DATEADD( ): These functions are both very commonly used. I use
DATEDIFF( )
mostly for determining whether or not to display some data that
has an expiration attached to it. For example, displaying a special message
about a current sale until the sale expires. I use the DATEADD( )
function for determining expiration dates. It is quite handy quickly calculating
expiration dates for cookies and the like.

back to
top


What’s Next?

That’s it! This
concludes your crash course in VBScript. Now, there is much more to VBScript
than we have talked about up to this point but you have the basics. We will
cover additional features of VBScript as we come across them later in this
series.

Next it’s on to some
real ASP. You’ll finally begin putting together the pieces and start creating
some full-blown ASP applications.

In the next part of this series
we will:

  • Talk to the user with
    Response.Write

  • Give directions to the
    user with Response.Redirect

  • Store info about the
    user with Response.Cookies

back to
top

<< Previous | Next >>

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Popular Articles

Featured