Goodies to Go ™
May 24, 2004–Newsletter #286
This newsletter is part of the internet.com network.
http://www.internet.com
Featured this week:
* Goodies Thoughts – Open the Doorway
* Q & A Goodies
* News Goodies
* Goodies Peer Reviews
* Feedback Goodies
* Windows Tech Goodies
* And Remember This…
Goodies Announcement
The new Beyond HTML Goodies book
is now available!
Go beyond the basics
and learn how the pros add and use dynamic HTML features and advanced
JavaScript techniques. Beyond HTML Goodies demonstrates dozens of new and
different features readers can add to their existing Web pages using HTML and
JavaScript. The book starts with simple text and image tips, such as adding a
clock to a Web page or causing text to appear when the mouse moves over an
image. It gradually builds to more complex tricks, including manipulating forms
or working with cookies behind the scenes. Throughout the book, readers enjoy
Joe’s snappy style and “to the point” discussion of each “goody” in the book.
http://books.internet.com/books/0789727803
Goodies Thoughts – Open the Doorway
In a couple of issues of Goodies To Go recently, I have
discussed matters relating to Search Engine Optimization (see
https://www.htmlgoodies.com/letters #s 281 & 282.) These issues led to a few
feedback questions regarding doorways. Folks would like to know what they are,
whether they should use them, and if so, how to use them. I thought I’d at least
provide an introductory explanation — the whole subject is very complex; there
are companies that hire people full time to manage their doorways!
The story begins with the manner in which search engines rank pages. Take a look
at the situation, for a moment, from the search engine operators point of view.
The search engine is not there simply as a benevolent contribution to the
betterment of humankind. It is there as a business, intended to make some money
and provide its investors with a handsome return on their investments. To do
this it must sell advertising. Advertising is worth money based on the number of
people it reaches, and the success it has in getting its message across to those
people. The more people it can reach, and the more accurately it can target a
message to them, the more successful it will be.
More people use Google than any other search engine, even though they were far
from the first kids on the block (in fact, some of the first have given up
running their own engines and now use Google!) The reason is that Google manages
to reliably find what you are looking for based on what you ask. To accomplish
this is not a simple task. First, they have to be able to determine what you
really want. They have patented mathematical processes for this (and for many if
their other functions.) Second, they have to have a reliable (and accurate)
index to all the pages that are out there on the web.
To build this index, they have to be able to read web pages (by computer, of
course) and determine the nature of the pages’ content. To automate this process
requires a set of algorithms. A spider (a program that "walks" the web from link
to link, etc.) can read the pages and feed them back to an analyzer program. The
analyzer then builds the index.
Search engine optimization involves a reverse-engineering process (usually done
by a service company and purchased by the end user) that describes and thereby
enables the construction of a "perfect" page that is most likely to achieve the
highest ranking for a given search request; most preferably, the most common
related request. (Phew! – Are you still with me? If you have to read that again,
don’t feel bad — I did, and I wrote it!)
There are some problems with the whole picture, however.
The first thing you may notice is that what is "perfect" for the search engine
is far from perfect for your client! In designing a fully "SEO" optimized page
you have succeeded in bringing the potential customer to your site, but once
they’re there, you present them with something eminently computer readable, but
nonsense to the human reader. Hence the doorway page! A doorway page is a page
especially designed to be optimal for search engine ranking, but which, by one
or another method, quickly sends the human reader to another, more suitable
page.
The complexity is just beginning! Imagine that you are competing with someone
else (boy, that’s a tough one!) and they see your doorway page become so
successful. They could simply copy it, make a minor tweak and submit it to the
search engines and (theoretically) be right up there with you. In fact, most of
the search engines will recognize the duplication and reject them both, putting
you right back where you started. To prevent this you can use "Agent Delivery",
"IP Delivery" and "Page Cloaking"….. etc. etc. Suffice it to say that there is
more to this subject than we can cover here! Maybe you see why they hire full
time staff sometimes!
If you need, however, to get more in depth into this subject, I recommend that
you take a look over at Search Engine Watch (http://searchenginewatch.com)
— It’s the definitive source for search engine information.
Thanks for Reading!
– Vince Barnes
Q & A Goodies
Questions are taken from submissions to our Community Mentors. You can ask a Mentor a question by going to
https://www.htmlgoodies.com/mentors.
Q. In a web site that I created I made a catalog order form that has a
description of an item, a checkbox to select and a textbox for amount to order.
The code I have is:
<form name="form1" method="post" action="mailto:Person@person.net?subject=Catalog
Order Form1" enctype = "text/plain">
<p>
<input type = "hidden" name = "recipient"
value = Person@person.net />
<input type = "hidden" name = "subject"
value = "Custodial Order Form1" />
</p>
When the submit button is clicked, it goes to the recepient. But the text/plain
shows items selected and amount but it also shows amounts not selected i.e.:
ven no:1111, item description
AMOUNT=5
AMOUNT=
AMOUNT=
AMOUNT=
(Etc)
All I want is for the items selected be shown and not all of the AMOUNT= not
selected.
A. This is one reason why Server Side languages such as PHP or Perl are
used. They allow you to manipulate the form data before it is emailed out. They
also work better because some people do not have their email clients set up
properly causing the email not to be sent. Having said that though I think your
best bet would be to have two forms – one that gathers the information and a
second with a hidden element that is actually sent. When they click the submit
button the data from the first form is validated, formatted and then placed in
the hidden form hidden element to be sent. Here is an example of one that I put
together for someone else:
<html>
<head>
<title>Order Form</title>
<script language="JavaScript">
function calcamt(num)
{
var qtynum=eval("document.myform.qty"+num+".selectedIndex")
var number=eval("document.myform.szeshp"+num+".selectedIndex")
var sizeshape=eval
("document.myform.szeshp"+num+"[number].value.split(‘,’)")
eval("document.myform.price"+num+".value=sizeshape[1] * qtynum")
var pricenum=parseFloat(eval
("document.myform.price"+num+".value"))
var whole = "" + Math.round(pricenum * Math.pow(10, 2));
var decPoint = whole.length – 2;
if(decPoint != 0)
{
result = whole.substring(0, decPoint);
result += ".";
result += whole.substring(decPoint, whole.length);
}
else
{
result = whole;
}
eval("document.myform.price"+num+".value=result")
totalamt()
}
function qtyreset(numa)
{
if(eval("document.myform.item"+numa+".checked"))
{
}
else
{
alert("You must select the item")
return false
}
eval("document.myform.qty"+numa+".selectedIndex=0")
eval("document.myform.price"+numa+".value=’0.00’")
}
function totalamt()
{
var tempamt=0
for(i=0;i<3;i++)
{
var tamt=parseFloat(eval("document.myform.price"+i+".value"))
tempamt=tempamt+tamt
}
var whole = "" + Math.round(tempamt * Math.pow(10, 2));
var decPoint = whole.length – 2;
if(decPoint != 0)
{
result = whole.substring(0, decPoint);
result += ".";
result += whole.substring(decPoint, whole.length);
}
else
{
result = whole;
}
document.myform.totamt.value=result
}
function Formcheck()
{
document.sendit.sdata.value="r Item
Size Qty Pricer"
for(i=0;i<3;i++)
{
if(eval("document.myform.item"+i+".checked"))
{
var fitem=eval("document.myform.item"+i+".value")
var fnum=eval("document.myform.szeshp"+i+".selectedIndex")
var fsize=eval
("document.myform.szeshp"+i+"[fnum].value.split(‘,’)")
var fqtynum=eval("document.myform.qty"+i+".selectedIndex")
var fqty=eval("document.myform.qty"+i+"[fqtynum].value")
var fprice=eval("document.myform.price"+i+".value")
document.sendit.sdata.value+="r"+fitem+" "+fsize[0]
+"@ "+fsize[1]+" each "+fqty+" "+fprice+"r"
}
}
document.sendit.sdata.value+="Total
Amount="+document.myform.totamt.value
}
</script>
</head>
<body bgcolor="lightgreen">
<center>
<br>
<h2>Oder Form</h2>
<br>
ITEM         SIZE/SHAPE          
  QTY     PRICE    
<form name="myform">
<input type="radio" name="item0" value="Paper Clips"> Paper Clips
<select name="szeshp0" onchange="qtyreset(‘0’)">
<option value="Small Paper Clips ,2.53" selected>Small Paper
Clips</option>
<option value="Large Paper Clips ,3.45">Large Paper Clips</option>
</select>
<select name="qty0" onchange="calcamt(‘0’)">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="text" name="price0" value="0.00" size="10" onfocus="this.blur ()">
<br><br>
<input type="radio" name="item1" value="Pencils "> Pencils    
 
<select name="szeshp1" onchange="qtyreset(‘1’)">
<option value="No2 Pencils ,1.23" selected>No2 Pencils  
      </option>
<option value="No4 Pencils ,1.74">No4 Pencils </option>
</select>
<select name="qty1" onchange="calcamt(‘1’)">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="text" name="price1" value="0.00" size="10" onfocus="this.blur ()">
<br><br>
<input type="radio" name="item2" value="Staples "> Staples    
 
<select name="szeshp2" onchange="qtyreset(‘2’)">
<option value="Small Staples ,2.12" selected>Small Staples
</option>
<option value="Large Staples ,2.34">Large Staples    
  </option>
</select>
<select name="qty2" onchange="calcamt(‘2’)">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="text" name="price2" value="0.00" size="10" onfocus="this.blur ()">
<br><br>
Total
<input type="text" name="totamt" size="10" onfocus="this.blur()">
</form>
<form name="sendit" method="post" action="mailto:mail@me.com?subject=Order
Form" enctype="text/plain" onsubmit="return Formcheck()">
<input type="hidden" name="sdata">
<input type="submit" value="Send It">   <input type="reset"
value="Clear Form" onClick="document.myform.reset()">
</form>
</center>
</body>
</html>
Q. I am trying to set up a form. Is there a way to force the "To:"
address? I’ve set up the action="mailto:###", but when I test the form my email
keeps opening with all the text filled in, but the "To:" space is blank.
A. The problem is the newer browsers don’t support e-mail forms. You have
to use a server side script. Your web host may have something you can use. There
are also the Perl and ASP tutorials on the site (https://www.htmlgoodies.com)
which will help. Check with your web host to find out what languages they
support.
[See also
https://www.htmlgoodies.com/articles/emailforms1.html
and
https://www.htmlgoodies.com/articles/emailformphp.html — Ed.]
Q. How do I make three tables all on the same line with a space between
them?
A. You make one large table at 100 percent width and a border of zero,
with one row then add your three tables in the large tables <td> tags. Play
around with the <td> widths to get the size you need. You can add a couple <td>
tags with the code which is just a blank space to make some space between
the 3 tables. Here is a example of the code:
<table summary="large table" align="center" width="100%" border="0"
cellspacing="0" cellpadding="0">
<tr>
<td width="30%">
<table summary="Menu Table" width="100%" border="1" cellspacing="0"
cellpadding="0">
<tr align="center"><td>Menu</td></tr>
</table>
</td>
<td width="5%"> </td>
<td width="30%">
<table summary="Main Table" width="100%" border="1" cellspacing="0"
cellpadding="0">
<tr align="center"><td>Main</td></tr>
</table>
</td>
<td width="5%"> </td>
<td width="30%">
<table summary="New Menu Table" width="100%" border="1"
cellspacing="0" cellpadding="0">
<tr align="center"><td>New Menu</td></tr>
</table>
</td>
</tr>
</table>
.
Q. Is there a way to create a menu of hyperlinks over an image? I want a
text menu over my left margin images without having to create image links.
A. Use the image as the background of a table cell and place the links in
the table cell.
Q. When making an ordered list, is there a way to make the numbers of the
ordered list bold without making the entire content of the ordered list bold?
A. Yes, put bold tags around the li tags. <b><li></b>
News Goodies
Microsoft Highlights New Developer Tools
[May 24, 2004] TechEd: CEO Steve Ballmer promises security,
interoperability and a lot less coding with Visual Studio 2005.
Click
here to read the article
OSDL to Document Linux Contributions
[May 24, 2004] UPDATED: Linus Torvalds adopts new documentation step, and
offers some choice words in a request for discussion about the move.
Click here to read the article
Study: Internet Advertising Sets New Record
[May 24, 2004] Internet advertising revenues rose to an all-time quarterly
high of nearly $2.3 billion in the first quarter of 2004, according to
research estimates from the Interactive Advertising Bureau (IAB) and
PricewaterhouseCoopers (PwC).
Click
here to read the article
Latest MySQL Fails to Quiet Licensing Critics
[May 24, 2004] PHP and Zend co-founders say FOSS licensing
exception does not solve lingering issues.
Click here to read the article
Microsoft Locks Up OEM Support for NAS
[May 24, 2004] Key partners are to add the Microsoft Storage
Server feature pack to their network attached storage
devices.
Click here to read the article
AMD Revitalizes its Geode Family
[May 24, 2004] The No. 2 chipmaker announces a new line of low power
embedded processors complete with a new rating system.
Click here to read the article
Security to Dominate at Microsoft’s TechEd
[May 21, 2004] The topic will be everywhere, from chief executive Steve
Ballmer’s opening keynote to the individual breakout sessions.
Click here to read the article
Oracle, PeopleSoft CEOs File Depositions
[May 21, 2004] Ellison and Conway answer their subpoenas, as lawyers for
third-party rivals haggle over releasing sensitive corporate documents.
Click here to read the article
PalmOne Graffiti Is No Infringement
[May 21, 2004] A U.S. Court invalidates Xerox Corp.’s patent on
single-stroke writing.
Click here to read the article
A New Era Of SOA: Sun and Microsoft
[May 21, 2004] Publicly, the two sides are quiet, but backroom planning on
service oriented architectures is fueling their 10-year interoperability
roadmap.
Click here to read the article
Every week a site is selected for review. Each week,
reviews of the previous week’s selected site are chosen for
publication on the HTML Goodies website.
The current week’s selected site is published in Goodies To
Go and in the Peer Reviews section of the website.
Current contact email addresses for submitting your site and
for submitting reviews are published in Goodies To Go.
If you would like to have your site reviewed, sign up for
the Goodies To Go newsletter in the Navigation Bar on the
left side of this page.
For full details about this program, see
https://www.htmlgoodies.com/peerreviews
Did you ever wish your newsletter was an easy two way communications medium?
Ploof! It now is!
If you would like to comment on the newsletter or expand/improve on something
you have seen in here, you can now send your input to:
mailto:nlfeedback@htmlgoodies.com
We already receive a lot of email every day. This address will help us sort out
those relating specifically to this newsletter from all the rest. When you send
email to this address it may wind up being included in this section of the
newsletter, to be shared with your fellow readers.
Please don’t send your questions to this address.
They should be sent to our mentors: see
https://www.htmlgoodies.com/mentors/
For those who are missing Peer reviews: we are once again
revising the Peer review program in the hopes of creating a
workable solution. The current plan is to move the new Peer
Review pages into place in the new year. All those who have
been selected for reviews in the past will be featured in
the new pages. The new method will make it much easier for
your peers to provide feedback and much easier for us to
handle the publication side of things. "Watch this space!"
It’s coming soon!!
Thanks to Gil Heuss for writing in about the Subweb Way
piece. Gil wants to point out the Macromedia’s product
"Contribute" will provide much of the same functionality I
described, but doesn’t require the FrontPage Extensions. Gil
goes on to say that thus "the site can be run on a unix box
running Apache server software giving a much more stable and
secure environment for the website" — I’d like to point out
that the FrontPage Extensions are also available for Apache
on either a Windows or a Linux/Unix platform, and also, you
might want to take a look at
http://www.enterpriseitplanet.com/security/features/article.php/3083791
— the folks over at AntiOnline spend a good deal of time
and effort sifting fact from fiction in the realm of
security!
Thanks again for all your feedback!
Top
Windows Tech Goodie of the Week:
SharePoint Security and .NET Impersonation
http://www.15seconds.com/issue/040511.htm
When implementing custom components that require access to
restricted resources, implicit impersonation must be used.
Jay Nathan shows how to create a class that makes using .NET
Impersonation a snap.
*** AND ***
XML to HTML (via XSL) Classic ASP Sample
http://www.asp101.com/samples/xmlxsl.asp
This little script will take an XML file and an XSL file and
combine them to produce whatever output you want. The sample
files I used contain some fake sample data and convert it to
a basic HTML table, but you can use the same code to
transform your data into whatever you want… just change
the stylesheet.
Top
And Remember This . . .
On this day in…
1941 The Bismark Sank HMS Hood
Hitler’s most modern warship, DKM Bismark, fired its 38cm canons and
penetrated the citadel armor of HMS Hood, the largest of Britains
battle cruisers and the pride of the British fleet. The shells
exploded in one of the Hood’s ammunition stores which in turn
exploded, tearing the ship in two. More than 1,400 died on the ship
— there were three survivors. British cruisers had located the
Bismark northeast of Iceland and at 5:52 am the Hood opened fire on
the Bismark. Bismark returned fire and at 6:00 am hit the munitions
store. The hood sank in less than two minutes. DKM Bismark had been
damaged badly, however, and was losing fuel. Admiral Gunther Lutjens,
commander in chief of the German Fleet, tried to get her to the
French coast but she was sighted again by British ships three days
later. She was surrounded by a ring of warships and destroyed. 2,300
men, including Lutjens, perished aboard the Bismark.
Today was also the day that in: 1626 Peter Minuit bought
Manhatten Island from the indiginous Canarsee Delawares for "the
value of 60 Guilders" (about $24); 1689 the English
Parliament guaranteed freedom of religion for Protestants; 1809
Dartmoor Prison in England was opened to house French prisoners of
war; 1844 Samual Morse tapped out "What hath God wrought?" as
the first telegraph message; 1862 Westminster Bridge in
London was opened; 1883 the Brooklyn Bridge in New York was
opened; 1890 Caprivi succeeded Bismark as Chancellor of
Germany; 1900 Britain annexed the Orange Free State; 1902
Britain first celebrated Empire Day; 1916 first day of
conscritpion in England; 1935 Swedish Princess Ingrid and
Danish Crown Prince Frederick (IX) were married; 1944 Iceland
voted to sever all ties with Denmark; 1954 IBM announced a
vacuum tube "electronic brain" that could perform 10 million
operations per hour (in a PC, 1 megahertz is one million operations
per second); 1959 Britain renamed Empire Day to Commonwealth
Day; 1968 Mick Jagger and Marianne Faithful were arrested for
drug posession; 1976 Concorde made the first commercial SST
flight to the US (Washington DC); 1985 10,000 died when a
cyclone hit Bangladesh; 1993 Eritrea achieved independence
from Ethiopia after 30-year civil war; 1997 actor Tim Allen
was arrested for DUI in Michigan;
Born today were: in 1605 patriarch of the Russian Orthodox
church, Nikon (Nikita Minin); 1819 British Queen Victoria;
1850 water-color painter Ernest Albert Waterlow (really, that is
his name & that’s what he did – check out
http://www.fineartdealers.co.uk/stock/moreinfo.php3?modcar=93);
1904 British comedian/singer George Formby (William Booth);
1905 Russian writer & Nobel prize winner Mikhail Sholokhov;
1912 British soprano Joan Hammond; 1941
singer/songwriter Robert Zimmerman (Bob Dylan); 1943 actor
Gary Burghoff; 1944 singer Patti LaBelle (Patti Holt);
1945 actress Priscilla Presley; 1949 musician John
Illsley (Dire Straits); 1955 country singer Rosanne Cash;
1963 actor/dancer Gene Anthony Ray (Fame); 1970 singer
Tommy Page;
Thanks for reading Goodies to Go!