Technical References - [showif]

[showif Comparison]Show This HTML[/showif]

Displays HTML conditionally only if the comparison is true.

To display HTML (or [xxx] tags) only if certain conditions are met, place the text inside a [showif] context. The comparison, which may contain any [xxx] tags, is first evaluated to see if it is true, and if true, the contained text displays. If not true, then any text or [xxx] tags inside the container will be ignored. See [hideif]

showif works correctly when it hides its container: any contexts inside the [showif] container (e.g. [append] or [replace] or [delete]) will NOT be executed if showif evaluates to false.

Example (normally you would put the following text into a .dna file on your server and use a web browser to link to it):
[showif [username]=Grant]You're allowed in![/showif]

Comparisons are always case-insensitive so "grant" equals "GRANT".

equal = [showif [username]=SAGEHEN]Welcome Mr. Sagehen[/showif]
not equal ! [showif [random]!45]...[/showif]
contains ^ [showif [browsername]^Mozilla]...[/showif]
begins with ~ [showif [ipaddress]~245.078.013]...[/showif].
Notice the IP address has been typed with 3 digits in each portion of the address. This is very important for making these comparisons work as expected.
less than  < [showif [random]<50]...[/showif]
greater than  > [showif [lastrandom]>25]...[/showif]
divisible by \ [ShowIf [index]\3]...[/ShowIf]

if both side of the equation are numbers, then the comparison for greater than, less than, and equals is performed numerically. If either side is not a number, then the comparison is performed alphabetically.

Tip: make sure neither side of the comparison equation contains any of the special comparison letters listed above. For example
[showif I'm Friendly! Are you?=[question]]...[/showif ]

contains an exclamation point inside the sentence being compared, so WebDNA sees this as "I'm Friendly" is not equal to " Are you?=[question]", which is not what the author meant to compare.

The solution is to wrap each side of the comparison with [url] contexts, like this:
[showif [url]I'm Friendly! Are you?[/url]=[url][question][/url]]...[/showif]

This causes any embedded ! = > < symbols to be converted to their URL equivalents, which can then be compared correctly.

Detect Operating System
Use [showif] to find "Macintosh", "Windows", "WebTV" etc within the browser name. WebDNA has a [browsername] tag. A typical browsername will look something like this:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/523.12 (KHTML, like Gecko) Version/3.0.4 Safari/523.12

So we can easily figure out the operating system like this:

[showif [browsername]^Macintosh]
Welcome Macintosh User!

Alternate Row Colors
By creating a table row for each [founditems] in a search, and using the index number, you can easily change the color every other row. Create two stylesheets: rowcolor and rowcoloralt and give them each a background color:

. rowcolor { background-color:#eeeeee; }
. rowcoloralt { background-color:#cccccc; }

<tr class=rowcolor[showif [index]\2]alt[/showif]><td>[name]</td><td>[email]</td></tr>

Form submission
Show the form, then upon submission, hide the form, but show the processing code and thank you message.

[showif [formsubmitted]=t] 
(WebDNA code to process the form)
<b>Thank you for contacting us!</b>

[hideif [formsubmitted]=t]
Please use this form to contact us.
<form method=post action="[thisurl]">
(Contact form here, including the following tag)
<input type=hidden name=formsubmitted value=t>

A contact form is submitted to the same page ([thisurl]), using [showif] and [hideif] to determine what displays. This is a convenient way to keep related code all on one page, instead of two separate pages for the form and the results.

A really useful way of blanking out the value of a text variable if it wasn't set (for whatever the reason) is shown in the example below. You HAVE to [url] your showif comparisons for ANY user enterable text to prevent user entered ampersands (&) and exclamation points (!) from improperly influencing the result.

This hint applies to the [hideif] context as well.

[showif [url][_email][/url]=[_email]][text]_email=[/text][/showif]


Top Articles:

Tips and Tricks

A list of user-submitted tips ...

WebDNA Modules

A list of the currently available modules...

AWS Raw WebDNA LAMP-Plus WebServer

Amazon Web Services (AWS) README for Machine Image ID...

Download WebDNA Applications

WebDNA applications...


A compilation of some user's questions...

WebDNA Libraries

A list of available libraries for WebDNA...

Related Readings:


This instructions move a file from one location to another...


[wait] just does what it says...


Text variables are fundamental building blocks of the WebDNA language...


This context enables the WebDNA programmer to call a previously defined block of WebDNA code...


Prevents WebDNA to return hidden parts of your code to apache (from version 8...


Lists all the form variables and parameters passed to the current page...