<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marginally Clever &#187; forms</title>
	<atom:link href="http://www.marginallyclever.com/tag/forms/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marginallyclever.com</link>
	<description>DIY Robotics, automation, tools, manufacturing, and everything related</description>
	<lastBuildDate>Sun, 05 Feb 2012 22:32:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Forms, simplified</title>
		<link>http://www.marginallyclever.com/2009/09/forms-simplified/</link>
		<comments>http://www.marginallyclever.com/2009/09/forms-simplified/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 03:57:02 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[creative commons]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.marginallyclever.com/2009/09/forms-simplified/</guid>
		<description><![CDATA[http://www.marginallyclever.com/forms/ A short while ago I posted about my PHP form system. People wrote in with many questions, leading me to the conclusion that the old system with it&#8217;s klunky javascript, lack of commenting, and general disarray &#8230;was not very friendly. So I&#8217;ve written a whole new library with examples, templates, better CSS, better email [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.marginallyclever.com/forms/">http://www.marginallyclever.com/forms/</a></p>
<p>A short while ago I posted about my PHP form system.  People wrote in with many questions, leading me to the conclusion that the old system with it&#8217;s klunky javascript, lack of commenting, and general disarray &#8230;was not very friendly.  So I&#8217;ve written a whole new library with examples, templates, better CSS, better email validation, and better url validation, not to mention code you can really use right off the shelf with a Creative Commons license.  Try version 1.0 today and let me know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marginallyclever.com/2009/09/forms-simplified/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easier PHP forms, part 2</title>
		<link>http://www.marginallyclever.com/2009/06/easier-php-forms-part-2/</link>
		<comments>http://www.marginallyclever.com/2009/06/easier-php-forms-part-2/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 17:44:51 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[email validation]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[password match]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.marginallyclever.com/?p=57</guid>
		<description><![CDATA[In part 1 I showed you my method for simplifying form building and maintenance. Now I&#8217;d like to show you a few of the things that can be simplified by using this system. Included are: prices passwords emails textareas selects yes/no (booleans) files hiddens cancel buttons submit buttons &#8220;are you sure you want to do [...]]]></description>
			<content:encoded><![CDATA[<p>In part 1 I showed you my method for simplifying form building and maintenance.  Now I&#8217;d like to show you a few of the things that can be simplified by using this system.  Included are:</p>
<ul>
<li>prices</li>
<li>passwords</li>
<li>emails</li>
<li>textareas</li>
<li>selects</li>
<li>yes/no (booleans)</li>
<li>files</li>
<li>hiddens</li>
<li>cancel buttons</li>
<li>submit buttons</li>
<li>&#8220;are you sure you want to do that?&#8221; submit buttons</li>
<li>addresses</li>
</ul>
<p>I use this code for 95% of the forms I build and then modify the CSS to get the effects a customer wants.</p>
<p>In part 3 I&#8217;ll show you how to use jQuery to automatically validate user data.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_price<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">return</span> create_form_row<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\$</span>&amp;lt;input type='text' name='<span style="color: #006699; font-weight: bold;">$name</span>' value='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&amp;gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">,</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_password<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">return</span> create_form_row<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&amp;lt;input type='password' name='<span style="color: #006699; font-weight: bold;">$name</span>' value='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&amp;gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">,</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_password_confirm<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  add_form_test_password_confirm<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;pass&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// we'll cover this in part 3</span>
&nbsp;
  <span style="color: #b1b100;">return</span> create_form_row<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&amp;lt;input type='password' name='<span style="color: #006699; font-weight: bold;">$name</span>' value='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&amp;gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">,</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>
  create_form_row<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&amp;lt;input type='password' name='<span style="color: #006699; font-weight: bold;">{$name}</span>_confirm' value=''&amp;gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&amp;amp;nbsp;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;_confirm&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_email<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #666666; font-style: italic;">// @TODO: add email validation.</span>
 <span style="color: #000088;">$test</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;    regex_<span style="color: #006699; font-weight: bold;">{$name}</span>=/^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*(\.[a-zA-Z]{2,4})$/<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
 <span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;    compare_to=f.<span style="color: #006699; font-weight: bold;">{$name}</span>.value.replace(/^\s+|\s+$/g,'');<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
 <span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;    if(compare_to!='' &amp;amp;&amp;amp; !compare_to.match(regex_<span style="color: #006699; font-weight: bold;">{$name}</span>)) {<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
 <span style="color: #339933;">.</span>add_form_error<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$label</span> does not appear to be a valid email.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>
 <span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;    }<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
 add_form_test<span style="color: #009900;">&#40;</span><span style="color: #000088;">$test</span><span style="color: #339933;">,</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">return</span> create_form_row<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&amp;lt;input type='text' name='<span style="color: #006699; font-weight: bold;">$name</span>' value='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&amp;gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">,</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_textarea<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #b1b100;">return</span> create_form_row<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&amp;lt;textarea name='<span style="color: #006699; font-weight: bold;">$name</span>' rows='10' cols='80'&amp;gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;lt;/textarea&amp;gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">,</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_select_internal<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$options</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$multiple</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #000088;">$extra</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$sel</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&amp;lt;select id='<span style="color: #006699; font-weight: bold;">$name</span>' name='<span style="color: #006699; font-weight: bold;">$name</span>' <span style="color: #006699; font-weight: bold;">$extra</span>&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$multiple</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$sel</span><span style="color: #339933;">.=</span><span style="color: #0000ff;">&quot; multiple='yes' size='<span style="color: #006699; font-weight: bold;">$multiple</span>'&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #000088;">$sel</span><span style="color: #339933;">.=</span><span style="color: #0000ff;">&quot;&amp;gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$k</span><span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$k</span><span style="color: #339933;">=</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$k</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$v</span><span style="color: #339933;">=</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$v</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$sel</span><span style="color: #339933;">.=</span><span style="color: #0000ff;">&quot;  &amp;lt;option value='<span style="color: #006699; font-weight: bold;">$k</span>'&amp;gt;<span style="color: #006699; font-weight: bold;">$v</span>&amp;lt;/option&amp;gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #000088;">$sel</span><span style="color: #339933;">.=</span><span style="color: #0000ff;">&quot;&amp;lt;/select&amp;gt;&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$v</span><span style="color: #339933;">=</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span>?<span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">return</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;value='<span style="color: #006699; font-weight: bold;">$v</span>'&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;value='<span style="color: #006699; font-weight: bold;">$v</span>' selected&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$sel</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_select<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$options</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$multiple</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #000088;">$extra</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$sel</span><span style="color: #339933;">=</span>create_form_select_internal<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$options</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #000088;">$multiple</span><span style="color: #339933;">,</span><span style="color: #000088;">$extra</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">return</span> create_form_row<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sel</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">,</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_bool<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$extra</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$sel</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&amp;lt;select name='<span style="color: #006699; font-weight: bold;">$name</span>' <span style="color: #006699; font-weight: bold;">$extra</span>&amp;gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$sel</span><span style="color: #339933;">.=</span><span style="color: #0000ff;">&quot;  &amp;lt;option value='yes'&amp;gt;&quot;</span><span style="color: #339933;">.</span>_t<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Yes&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;lt;/option&amp;gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$sel</span><span style="color: #339933;">.=</span><span style="color: #0000ff;">&quot;  &amp;lt;option value='no'&amp;gt;&quot;</span><span style="color: #339933;">.</span>_t<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;No&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;lt;/option&amp;gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$sel</span><span style="color: #339933;">.=</span><span style="color: #0000ff;">&quot;&amp;lt;/select&amp;gt;&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$v</span><span style="color: #339933;">=</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span>?<span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$sel</span><span style="color: #339933;">=</span><span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;value='<span style="color: #006699; font-weight: bold;">$v</span>'&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;value='<span style="color: #006699; font-weight: bold;">$v</span>' selected&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$sel</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">return</span> create_form_row<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sel</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">,</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_file<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$inner</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&amp;lt;input name='<span style="color: #006699; font-weight: bold;">$name</span>' type='file'&amp;gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">return</span> create_form_row<span style="color: #009900;">&#40;</span><span style="color: #000088;">$inner</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">,</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_address<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$hint</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'address1'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'address1'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'address2'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'address2'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'city'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'city'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'region'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'region'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'country'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'country'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'postalcode'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'postalcode'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #000088;">$str</span> <span style="color: #339933;">=</span>create_form_text<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;_address1&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'address1'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Street&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$str</span><span style="color: #339933;">.=</span>create_form_text<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;_address2&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'address2'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$str</span><span style="color: #339933;">.=</span>create_form_text<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;_city&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'city'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;City&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$str</span><span style="color: #339933;">.=</span>create_form_text<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;_region&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'region'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;State/Province&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$str</span><span style="color: #339933;">.=</span>create_form_text<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;_country&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'country'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Country&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$str</span><span style="color: #339933;">.=</span>create_form_text<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;_postalcode&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'postalcode'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Postal Code&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #b1b100;">return</span> create_form_row<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #339933;">,</span><span style="color: #000088;">$label</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_hidden<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">&quot;  &amp;lt;input type='hidden' id='<span style="color: #006699; font-weight: bold;">$name</span>' name='<span style="color: #006699; font-weight: bold;">$name</span>' value='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&amp;gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_submit<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #000088;">$extra</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$last_form_name</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// we'll cover this is in part 3</span>
&nbsp;
 <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">&quot;  &amp;lt;input type='submit' name='<span style="color: #006699; font-weight: bold;">$name</span>' value='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;' onclick='javascript:return validate_<span style="color: #006699; font-weight: bold;">$last_form_name</span>(this.form);' <span style="color: #006699; font-weight: bold;">$extra</span>&amp;gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_cancel<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #000088;">$redirect</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">&quot;  &amp;lt;input type='button' name='<span style="color: #006699; font-weight: bold;">$name</span>' value='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;' onclick='javascript:window.location=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$redirect</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span>;'&amp;gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//------------------------------------------------------------------------------</span>
<span style="color: #000000; font-weight: bold;">function</span> create_form_submit_confirm<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #000088;">$confirm</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;Are you sure?&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$validate</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$last_form_name</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// we'll cover this is in part 3</span>
&nbsp;
 <span style="color: #000088;">$str</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;  &amp;lt;input type='submit' name='<span style="color: #006699; font-weight: bold;">$name</span>' value='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">ENT_QUOTES</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;' onclick='javascript:return (confirm(<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;\'&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\\</span>n&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #000088;">$confirm</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span>)&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$validate</span><span style="color: #339933;">!=</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$str</span><span style="color: #339933;">.=</span><span style="color: #0000ff;">&quot; &amp;amp; validate_<span style="color: #006699; font-weight: bold;">$last_form_name</span>(this.form)&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #000088;">$str</span><span style="color: #339933;">.=</span><span style="color: #0000ff;">&quot;);'&amp;gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">return</span> <span style="color: #000088;">$str</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.marginallyclever.com/2009/06/easier-php-forms-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easier PHP forms, part 1</title>
		<link>http://www.marginallyclever.com/2009/06/easier-php-forms-part-1/</link>
		<comments>http://www.marginallyclever.com/2009/06/easier-php-forms-part-1/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 18:52:05 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.marginallyclever.com/?p=50</guid>
		<description><![CDATA[Building and maintaining forms in PHP is one of the most time-consuming parts of the job.  Put another way, it's one of the biggest bottlenecks for fast prototyping and development.  Getting rid of bottlenecks speeds up work and increases overall joy.  So how do we do this?]]></description>
			<content:encoded><![CDATA[<p>Building and maintaining forms in PHP is one of the most time-consuming parts of the job.  Put another way, it&#8217;s one of the biggest bottlenecks for fast prototyping and development.  Getting rid of bottlenecks speeds up work and increases overall joy.  So how do we do this?</p>
<p>The first thing I did was look at all the forms I had been writing.  In general they all follow a pattern:</p>
<pre class="html">&lt;DOCTYPE ...&gt;
&lt;html ...&gt;
&lt;head&gt;
  ...
  // javascript tests to make sure user fills form correctly
&lt;/head&gt;
&lt;body&gt;
...
&lt;form name='blah' action='#' method='post'&gt;
...

  &lt;div class='form_item'&gt;
    &lt;label for='ABC'&gt;A human-readable name for the input&lt;/label&gt;
    &lt;div class='input_item'&gt;
      &lt;input name='ABC'&gt;  &lt;?/* or select/textarea/etc */?&gt;
      &lt;div class='help'&gt;Some explanation text here.&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class='clear'&gt;&lt;/div&gt;
  &lt;/div&gt;
...
&lt;/form&gt;
...
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>It seemed that cutting and pasting this was rife with errors.  Even worse is trying to change the layout of the page &#8211; a major (non-CSS) alteration could really ruin my day!  I had to come up with somethin better.</p>
<pre class="php">function create_form_row($input,$label_name=null,$label_for=null,$hint=null) {
                         $str ="  &lt;div class='form_item'&gt;\n";
  if(isset($label_name)) $str.="    &lt;label for='$label_for'&gt;$label_name&lt;/label&gt;\n";
                         $str.= "    &lt;div class='input_item'&gt;\n";
                         $str.= "      $input\n";
  if(isset($hint))       $str.= "      &lt;div class='help'&gt;$hint&lt;/div&gt;\n";
                         $str.= "    &lt;/div&gt;\n";
                         $str.= "    &lt;div class='clear'&gt;&lt;/div&gt;\n";
                         $str.= "  &lt;/div&gt;\n";
  return $str;
}

function create_form_start($name,$classname='form',$action='',$method='post',$target='') {
  return "&lt;form enctype='multipart/form-data' id='$name' name='$name' class='$classname' action='$action' method='$method'&gt;\n";
}

function create_form_end() {
  echo '&lt;/form&gt;\n';
}</pre>
<p>At first this might seem like a lot of work for not much gain.  Think of this as the center of the onion.  If we build layers on top of it we start to see some big big benefits.</p>
<pre class="php">function create_form_check_inner($name,$value=null,$checked=false) {
  return "&lt;input type='checkbox' id='$name' name='$name' value='".htmlspecialchars($value,ENT_QUOTES)."'".($checked?" checked":"")."&gt;";
}

//------------------------------------------------------------------------------
function create_form_check($name,$value=null,$label=null,$hint=null,$checked=false) {
  return create_form_row($label,create_form_check_inner($name,$value,$checked),$name,$hint);
}

//------------------------------------------------------------------------------
function create_form_text_inner($name,$value=null,$extra='') {
  return "&lt;input type='text' id='$name' name='$name' value='".htmlspecialchars($value,ENT_QUOTES)."' $extra&gt;";
}

//------------------------------------------------------------------------------
function create_form_text($name,$value=null,$label=null,$hint=null,$extra='') {
  return create_form_row(create_form_text_inner($name,$value,$extra),$label,$name,$hint);
}</pre>
<p>So now when I want to create a new form all I do is</p>
<pre class="php">echo create_form_start('form1');
echo create_form_text('user_name','','User Name','what is your name?');
echo create_form_check('love_this','yes','Love','Do you love this new form system?',true);
echo create_form_end();</pre>
<p>In Part II I&#8217;ll show you how to use create_form_ elements for passwords, selects, textareas, and more.</p>
<p>In Part III I&#8217;ll show you how you can use this system and jQuery to add checks that make sure users put in valid emails, required fields, and so on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marginallyclever.com/2009/06/easier-php-forms-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

