<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>webJestic.NET</title>
	
	<link>http://webjestic.net</link>
	<description>Making Internet Development Simple</description>
	<lastBuildDate>Fri, 14 Oct 2011 17:43:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/webjestic" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="webjestic" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Using Keyword Research to Identify Your Niche</title>
		<link>http://webjestic.net/blog/using-keyword-research-to-identify-your-niche/</link>
		<comments>http://webjestic.net/blog/using-keyword-research-to-identify-your-niche/#comments</comments>
		<pubDate>Fri, 28 May 2010 17:47:45 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<guid isPermaLink="false">http://webjestic.net/?p=1218</guid>
		<description><![CDATA[I like to try and create a plan based on keyword research for whatever site I create or develop. I’ll sometimes find a heavy competitive keyword phrase and make it a long term goal, but I’ll always find long-tail keywords I can use to get the site started.]]></description>
			<content:encoded><![CDATA[<img style="float:right; margin:0 0 15px 10px;" src="http://webjestic.net/wp-content/uploads/2010/05/KeyWords.jpg" alt"Keyword Research"/>
<p>How are you identifying your niche?</p>

<p>A few weeks ago, I created a simple video on <a href="http://webjestic.net/blog/basic-keyword-research-application/">Basic Keyword Research</a>.  I&#8217;d produced that article to help a Chinese friend who had decided to create a website offering Chinese travel tours.  After publishing their site they realized they weren&#8217;t getting any web traffic, despite their traditional marketing efforts.</p>

<p>I decided to do a quick analysis on their site and realized it had been put together without any strategic planning or keyword research.  Not being a direct close friend or directly associated, I didn&#8217;t have time or the desire to sit down and explain what some of the problems were.</p>  

<p>However, making a quick 10 minute video was easy and somewhat enlightening, but still nothing more than an extremely simple introduction.  I&#8217;m not the best video producer by any means and I failed to explain the basic concepts of understanding the data. </p>

<p>If you do a Google search for &#8220;<em>chinese travel</em>&#8221; and get About 140,000,000 results, that should tell you there is heavy competition for that specific keyword.  If you want to get your site to show up on the front page for that search term, you have a lot of work ahead of you.</p>

<p>If you run the &#8220;<em>chinese travel</em>&#8221; search term through the Keyword Tool by Google, you find that globally there were around 49,500 searches and 33,100 locally for the month of April.  My &#8220;locally&#8221; covers North America.</p>

<p>Finally, if you examine the search terms with the Traffic Estimator, you discover that you could expect between 14 &#8211; 23 visitors per day if you held the a position in the top 3 positions.</p>

<p>Without any more research efforts, this data should tell you something.  It should tell you, that it&#8217;s a long climb to the top and the results are somewhat minimal in the end.  You would of course piggy back on a variety of keywords along the way, but you have to ask yourself if this is the correct keyword to capture?  Are there better ones?</p>

<p>Ideally, you want to find keyword combinations that have a lot less page results from your search and have a higher rate of traffic once you&#8217;ve made it to the front page.  This is due diligence work but vital to the success of your site and it&#8217;s marketing campaigns.</p>

<p>I like to try and create a plan based on <a href="http://webjestic.net/blog/basic-keyword-research-application/">keyword research</a> for whatever site I create or develop.  I&#8217;ll sometimes find a heavy competitive keyword phrase and make it a long term goal, but I&#8217;ll always find long-tail keywords I can use to get the site started.</p>]]></content:encoded>
			<wfw:commentRss>http://webjestic.net/blog/using-keyword-research-to-identify-your-niche/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Google Apps Reseller Program</title>
		<link>http://webjestic.net/blog/google-apps-reseller-program/</link>
		<comments>http://webjestic.net/blog/google-apps-reseller-program/#comments</comments>
		<pubDate>Fri, 28 May 2010 02:20:00 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<guid isPermaLink="false">http://webjestic.net/?p=1134</guid>
		<description><![CDATA[Google has implemented a Google Apps Reseller, which should be of great interest to IT solution providers and professionals around the world.  This offers an opportunity to strengthen relationships with existing clients and generate revenue by having Google as your partner.]]></description>
			<content:encoded><![CDATA[<img style="float:right; margin:0 0 15px 10px;" width="244" height="220" src="http://webjestic.net/wp-content/uploads/2010/05/GoogleApps.jpg" alt="Google Apps"/>

<p>I feel there isn&#8217;t enough time in the day to do all the things I would like.  Exploring Google and all they have to offer small business is something for which I do not have enough time.  Even still, I would love to become well versed in their technology.</p>

<p>Google has implemented a Google Apps Reseller, which should be of great interest to IT solution providers and professionals around the world.  I have passion for internet technologies and Google has become a vital component of successful online businesses and careers.  As an IT consultant, I don&#8217;t have the luxury of using time as an excuse.  I need to know Google.</p>

<p>I may not be a Google Authorized Reseller, but at least I&#8217;m taking advantage of Google technologies and services for my business and personal use.  Google and their many webmaster tools has become a best friend for small businesses. They contribute to the open source community too, which I respect.</p>  

<p>If you&#8217;re in consulting business or an IT professional and you&#8217;re just using Google as a search engine, you&#8217;re missing out on some of today&#8217;s most important internet technologies.  GMail is awesome email software and the convenience of Google Docs puts commercial applications to shame.  But, it&#8217;s the <a href="http://code.google.com/">Google API</a> that truly makes it all so powerful.</p>

<p>If you&#8217;re already in the IT industry and taking advantage of <a href="http://www.google.com/apps/">Google Apps</a> for your business, you now have the opportunity to add Google Apps to your existing VAR business model. The <a href="http://www.google.com/apps/intl/en/business/resellers/index.html">Google Apps Reseller</a> Program is an opportunity to strengthen relationships with existing clients and generate revenue by having Google as your partner. </p>

<img src="http://webjestic.net/wp-content/uploads/2010/05/pageRip.jpg" alt=""/>

<center><object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/tuVUZQCtcbg&#038;hl=en_US&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/tuVUZQCtcbg&#038;hl=en_US&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object></center>]]></content:encoded>
			<wfw:commentRss>http://webjestic.net/blog/google-apps-reseller-program/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delphi for PHP (my verdict)</title>
		<link>http://webjestic.net/blog/delphi-for-php-my-verdict/</link>
		<comments>http://webjestic.net/blog/delphi-for-php-my-verdict/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 00:58:51 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Delphi for PHP]]></category>

		<guid isPermaLink="false">http://webjestic.net/?p=497</guid>
		<description><![CDATA[After having used Delphi for PHP to build an application framework, I managed to figure a lot of things out. I had to dig into the VCL and make some changes, search through tons of useless online documentation, and build and rebuild to finally get something I felt was fluid and sensible. I&#8217;ve been a [...]]]></description>
			<content:encoded><![CDATA[<p>After having used <a href="http://www.embarcadero.com/products/delphi-for-php" rel="nofollow">Delphi for PHP</a> to build an application framework, I managed to figure a lot of things out.  I had to dig into the VCL and make some changes, search through tons of useless online documentation, and build and rebuild to finally get something I felt was fluid and sensible.</p>
<p>I&#8217;ve been a Delphi application developer since version 1, and I&#8217;ve grown with Delphi and it&#8217;s IDE and development style over the years.  I&#8217;ve created dozens of custom components, taken advantage of it&#8217;s undocumented objects, and became involved with the Open Tools API.  </p>
<p>I believe Delphi can be used to write some extremely poor applications, and I know it can be used to create some very slick applications as well.  It&#8217;s all in the architecture and the developer who writes the code.  Events can be elegant or nasty, depending on the experience the developer has with the IDE.</p>
<p>I tried to follow good practices in the Delphi for PHP environment.  I&#8217;m not a fan of data-aware development in either Delphi environment, but I played with the technology in Delphi for PHP.  I followed the rules, studied the code, and created some applications that took advantage of the templates, libraries, and it&#8217;s AJAX architecture.</p>
<p>After some very simple and mildly complex applications, written the way I believe Delphi for PHP was intended to be used, I gave up on it.  Ignoring the weight of the VCL and just trying to make a decent application with an open mind (and some high hopes), I just couldn&#8217;t keep my code simple and elegant.  I also couldn&#8217;t consistently produce XHTML/CSS code that remained W3C compliant or validated.</p>
<div style="float:right; margin:10px 0 10px 10px;"><center><br />
<a rel="nofollow" href="http://www.zend.com/en/products/server-ce/"><img  src="http://webjestic.net/wp-content/uploads/2010/05/zend-logo.png" width="113" height="118"/></a><br/><br />
<a rel="nofollow" href="http://www.eclipse.org/pdt/ "><img  src="http://webjestic.net/wp-content/uploads/2010/05/eclipse-logo.jpg" width="145" height="96"/></a></center></div>
<p>The future of Delphi for PHP is always in question when you are determining the direction of an application.  Will it be supported in 5 years?  Will they improve it?  Can it even be improved?  Will the VCL stand the test of time?  Will there be a pool of developers to draw from when it comes time to hire an employee?</p>
<p>I just cannot believe it has a bright future as a commercial development environment, especially when there is an entire force of PHP developers openly improving upon Eclipse for PHP.  With that said, I could in no way recommend a client begin new development with this product.  In my opinion, they would eventually be stuck with a heavy weight application that can&#8217;t meet W3C standards, has outdated and neglected libraries, and frowned upon my any respectable PHP developer.</p>
<p>This is where I stand with Delphi for PHP and will no longer be creating articles or videos in the Delphi for PHP IDE.</p>
<p>I will however, be contributing content to PHP application development using <a href="http://www.zend.com/en/products/server-ce/">Zend Servers</a> and <a href="http://www.eclipse.org/pdt/">Eclipse for PHP</a>, as well as some of the <a href="http://zendframework.com/">Zend Framework</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://webjestic.net/blog/delphi-for-php-my-verdict/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Back from China</title>
		<link>http://webjestic.net/blog/back-from-china/</link>
		<comments>http://webjestic.net/blog/back-from-china/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 16:29:22 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<guid isPermaLink="false">http://webjestic.net/?p=474</guid>
		<description><![CDATA[For those of you who are unaware, I&#8217;ve been in China for a little more than a year. However, I&#8217;m back in the good ol&#8217; United States now and have time to play with my hobby sites again. I apologize to everyone who&#8217;s been waiting for me, it seems there has been a fair amount [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you who are unaware, I&#8217;ve been in China for a little more than a year.  However, I&#8217;m back in the good ol&#8217; United States now and have time to play with my hobby sites again.</p>
<p>I apologize to everyone who&#8217;s been waiting for me, it seems there has been a fair amount of activity for this site ( although I thought it would be dead and silent by now ).</p>
<p>I&#8217;m still heavily involved in web development using PHP and I fully intend to update my content and get things rolling again, as it&#8217;s not only fun for me, it&#8217;s always interesting to go back in time and see what I was doing.</p>
<p>I plan to begin updating my home page and my templates page this week.</p>
<p>Thanks for all the kind words and emails, I really appreciate it.</p>
<p>Michael</p>
]]></content:encoded>
			<wfw:commentRss>http://webjestic.net/blog/back-from-china/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Database Designs: MySQL NULL Fields</title>
		<link>http://webjestic.net/blog/database-designs-mysql-null-fields/</link>
		<comments>http://webjestic.net/blog/database-designs-mysql-null-fields/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 13:28:55 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<guid isPermaLink="false">http://webjestic.net/?p=440</guid>
		<description><![CDATA[Does your table designs support NULL values? There is a debate about creating tables which permit NULL values. I personally make every effort to make every field in a table NOT NULL. The argument for this: I want to be able to depend on my SQL statements. In this post I will illustrate how an [...]]]></description>
			<content:encoded><![CDATA[<p>Does your table designs support NULL values?</p>
<p>There is a debate about creating tables which permit NULL values.  I personally make every effort to make every field in a table NOT NULL.  The argument for this:  <em>I want to be able to depend on my SQL statements.</em>  In this post I will illustrate how an insignificant field that allows NULL values can create an issue.  This is a simple illustration.  More complex queries can break down as easily where NULL values are allowed.</p>
<p>It&#8217;s in my opinion, that NULL fields should be a topic for discussion, when you begin talking about your designs and the integrity behind those designs.</p>
<p><strong>Example:</strong> NULL fields are allowed.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> SECURITY_USERS <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;SECURITY_USER_ID Integer <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;USER_NAME Varchar<span class="br0">&#40;</span><span class="nu0">30</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;FIRST_NAME Varchar<span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp;LAST_NAME Varchar<span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;MIDDLE_INITIAL Varchar<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;CONSTRAINT PK_SECURITY_USERS <span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>SECURITY_USER_ID<span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;CONSTRAINT UNQ_SECURITY_USERS_USER_NAME <span class="kw1">UNIQUE</span> <span class="br0">&#40;</span>USER_NAME<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#41;</span> TYPE=InnoDB <span class="kw1">DEFAULT</span> CHARSET=utf8;</div>
</li>
</ol>
</div>
<p>There are several things wrong with this table, but for the moment I would like to simply use it as an example of a table that supports NULL values.  There are plenty of other fields in this table, but I&#8217;ve removed them for the sake of this post. They all permit NULL values.</p>
<p>In my opinion, the problem with this style design is that &#8220;<em>I can&#8217;t always depend on my queries to produce good results</em>&#8220;.  Most of the time the system has entered in FIRST_NAME and LAST_NAME into the table and sometimes but not always, they entered a MIDDLE_INITIAL.</p>
<p>So, if we have two users in the system and the data looks like this:</p>
<p><strong>Example:</strong> Sample data.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">SECURITY_USER_ID &nbsp;| &nbsp;USER_NAME &nbsp;| &nbsp;LAST_NAME &nbsp;| &nbsp;FIRST_NAME &nbsp;| &nbsp;MIDDLE_INITIAL</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;admin &nbsp; &nbsp; &nbsp; &nbsp; Master &nbsp; &nbsp; &nbsp; &nbsp;Web &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(NULL)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;jdoe &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Doe &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; John &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">*/</span></div>
</li>
</ol>
</div>
<p>&#8230;and one of them has a middle initial, while the other does not.  Then this creates the potential for unpredictable results in advanced queries.  </p>
<p><strong>Example:</strong> SQL Statement.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">SELECT</span> concat<span class="br0">&#40;</span>LAST_NAME, <span class="st0">&#8216;, &#8216;</span>, FIRST_NAME, <span class="st0">&#8216; &#8216;</span>, MIDDLE_INITIAL<span class="br0">&#41;</span> <span class="kw1">AS</span> FULL_NAME</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">FROM</span> security_users <span class="kw1">WHERE</span> security_user_id = <span class="nu0">1</span> <span class="kw1">OR</span> security_user_id = <span class="nu0">2</span></div>
</li>
</ol>
</div>
<p>All I want to do is concatenate the users name in SQL, so it displays in the format of my choice without my having to do it in code.  Sometimes, it&#8217;s nice to bring back data in the format you want.  Besides, if I execute this query in more than one place in my application I don&#8217;t want to have to continue formatting it in code.  I just like to have the query do it.</p>
<p>The problem is, when NULL fields are allowed, you cannot depend on good results.  Especially if I built my query and was testing it with people who had middle names.  The first time the query came across someone who had a NULL middle name in the application, the application would receive unexpected results.</p>
<p><strong>Example:</strong> Query Results</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">FULL_NAME</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">(NULL)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">Doe, John B</span></div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">*/</span></div>
</li>
</ol>
</div>
<p>Despite the fact there is data in FIRST_NAME (= Web) and LAST_NAME (= Master), the returned result is still NULL.  The MySQL <strong>concat()</strong> function failed to return the proper results, because MIDDLE_INITIAL contains a NULL value.  </p>
<p>Using simple straight forward SQL statements failed, due to a NULL field in MIDDLE_INITIAL.  This is a visual example; something we can see in a result window.  However, if I had a more complicated query and was using a NULL field in a JOIN, then the problem isn&#8217;t as interesting.  The problem can even become frustrating.</p>
<p><strong>Example:</strong> NOT NULL table redesign (following the data structure)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> security_users <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;id bigint<span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">AUTO_INCREMENT</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;user_name varchar<span class="br0">&#40;</span><span class="nu0">30</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;user_first_name varchar<span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;user_last_name varchar<span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;user_middle_initial varchar<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="st0">&#8221;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">UNIQUE</span> <span class="kw1">KEY</span> user_name <span class="br0">&#40;</span>user_name<span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>id<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#41;</span> TYPE=InnoDB <span class="kw1">DEFAULT</span> CHARSET=UTF8 <span class="kw1">AUTO_INCREMENT</span>=<span class="nu0">1000</span>;</div>
</li>
</ol>
</div>
<p>In this table, MIDDLE_INITIAL has a value, even if the value is empty.  An empty value is not the same as NULL and the results would return as I might expect them.  The query in this post would execute properly and return the right results.</p>
]]></content:encoded>
			<wfw:commentRss>http://webjestic.net/blog/database-designs-mysql-null-fields/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working with MySQL Auto Incrementing Keys</title>
		<link>http://webjestic.net/blog/working-with-mysql-auto-incrementing-keys/</link>
		<comments>http://webjestic.net/blog/working-with-mysql-auto-incrementing-keys/#comments</comments>
		<pubDate>Sun, 10 May 2009 08:31:56 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<guid isPermaLink="false">http://webjestic.net/?p=423</guid>
		<description><![CDATA[If you&#8217;ve been working with Firebird, Oracle, or any number of other databases, the first thing you&#8217;ll want to understand is how to work with MySQL auto_increment keys. Anytime you work with keys that are auto incremented by the database engine, you will need a way to retrieve the key values for your insert statements. [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve been working with <a href="http://firebirdsql.com/">Firebird</a>, Oracle, or any number of other databases, the first thing you&#8217;ll want to understand is how to work with MySQL <em>auto_increment</em> keys.  Anytime you work with keys that are auto incremented by the database engine, you will need a way to retrieve the key values for your insert statements.  Relational database are built on joins and understanding how to assign your foreign keys is essential.</p>
<p>Using MySQL to manage your foreign key inserts you can use the <em>LAST_INSERT_ID</em>() function.  This allows you to directly insert the value for your foreign keys without having to execute a query or some other mechanism.  The LAST_INSERT_ID() MySQL function returns the value of the PRIMARY KEY previously inserted.</p>
<p>This works perfectly for simple designs where only a single foreign key exists and you want to link to the master table.</p>
<p><strong>Example: Tables used</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> web_template <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; id bigint<span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">AUTO_INCREMENT</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; template_name varchar<span class="br0">&#40;</span><span class="nu0">30</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; template_location varchar<span class="br0">&#40;</span><span class="nu0">100</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">UNIQUE</span> <span class="kw1">KEY</span> template_name <span class="br0">&#40;</span>template_name<span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>id<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> TYPE=InnoDB <span class="kw1">DEFAULT</span> CHARSET=UTF8 <span class="kw1">AUTO_INCREMENT</span>=<span class="nu0">1000</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> web_config <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; id bigint<span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">AUTO_INCREMENT</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; config_template_id bigint<span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>id<span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>config_template_id<span class="br0">&#41;</span> <span class="kw1">REFERENCES</span> web_template<span class="br0">&#40;</span>id<span class="br0">&#41;</span> <span class="kw1">ON</span> <span class="kw1">DELETE</span> CASCADE</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> TYPE=InnoDB <span class="kw1">DEFAULT</span> CHARSET=UTF8 <span class="kw1">AUTO_INCREMENT</span>=<span class="nu0">1000</span>;</div>
</li>
</ol>
</div>
<p><br/><br />
<strong>Example: Insert statements</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">INSERT</span> <span class="kw1">INTO</span> web_template <span class="br0">&#40;</span>template_name, template_location<span class="br0">&#41;</span> <span class="kw1">VALUES</span> <span class="br0">&#40;</span><span class="st0">&#8216;Default Template&#8217;</span>, <span class="st0">&#8216;/template/Default/&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">INSERT</span> <span class="kw1">INTO</span> web_config <span class="br0">&#40;</span>config_template_id<span class="br0">&#41;</span> <span class="kw1">VALUES</span> <span class="br0">&#40;</span>LAST_INSERT_ID<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p><br/><br />
In PHP we have the <em>mysql_insert_id()</em> function, which allows us to retrieve the last key inserted.  This function works pretty good, but it must be executed before you commit your transaction, otherwise you might get unexpected results. Additionally, it&#8217;s ideal to execute the statement directly after you submit your insert statement.</p>
<p>Using this function gives us more flexibility in key management in our applications, especially when working with tables that have multiple foreign keys.</p>
<p><strong>Example: PHP statements</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="st0">&quot;insert into web_template (template_name, template_location) values (&#8216;Default Template&#8217;, &#8216;/template/Default/&#8217;&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$web_template_id</span> = <a href="http://www.php.net/mysql_insert_id"><span class="kw3">mysql_insert_id</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="st0">&quot;insert into web_config (config_template_id) values (&quot;</span>.<span class="re0">$web_template_id</span>.<span class="st0">&quot;)&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p><br/><br />
<strong>Note:</strong> In a &#8220;<em>data aware controls</em>&#8221; environment, it&#8217;s not always easy to manage your auto incrementing keys (a lot of this is due to design, not just environment).  In most cases where I have the decision making power I try to avoid data aware control development (especially on the web, now that <a href="http://webjestic.net/category/delphi-for-php/">Delphi for PHP</a> is available).  Read only grids are an exception, but most of the time you can design your applications to avoid &#8220;live data aware&#8221; entry/edit forms.  It may seem like more work, but I believe in the end it&#8217;s cleaner and easier to debug.</p>
]]></content:encoded>
			<wfw:commentRss>http://webjestic.net/blog/working-with-mysql-auto-incrementing-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Convert a Fireworks Image Design to HTML</title>
		<link>http://webjestic.net/blog/how-to-convert-a-fireworks-image-design-to-html/</link>
		<comments>http://webjestic.net/blog/how-to-convert-a-fireworks-image-design-to-html/#comments</comments>
		<pubDate>Fri, 08 May 2009 12:54:40 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<guid isPermaLink="false">http://webjestic.net/?p=416</guid>
		<description><![CDATA[(Please open the article to see the flash file or player.) In the last video in this mini site creation series I showed How to Design a Mini Site in Fireworks. In this video I show how to slice the image and export the image into HTML and then modify it into a very basic [...]]]></description>
			<content:encoded><![CDATA[<div style="margin:10px; float:left"><small>(Please open the article to see the flash file or player.)</small></div>
<p>In the last video in this mini site creation series I showed <a href="http://webjestic.net/blog/how-to-design-a-mini-site-in-fireworks/">How to Design a Mini Site in Fireworks</a>.  In this video I show how to slice the image and export the image into HTML and then modify it into a very basic mini site.</p>
<p>There is nothing advanced in this tutorial, it&#8217;s just a very basic slice and export process with very minimal editing.  This is to assist someone who has very little knowledge and experience with HTML.  Basic understanding of using word processors and editing documents is all that&#8217;s required. </p>
<p>Please visit <a href="http://w3schools.com">W3Schools</a> to learn basic HTML programming.</p>
<p>I&#8217;ve created the two menu pages seen in the design image and created a link to the exported HTML mini site.  <a href="http://webjestic.net/video/SES-MiniSite/">You can view it here</a>.  I haven&#8217;t added anything to it that isn&#8217;t in the video.  It is exactly how it was when I designed it in the video.</p>
]]></content:encoded>
			<wfw:commentRss>http://webjestic.net/blog/how-to-convert-a-fireworks-image-design-to-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Design a Mini Site in Fireworks</title>
		<link>http://webjestic.net/blog/how-to-design-a-mini-site-in-fireworks/</link>
		<comments>http://webjestic.net/blog/how-to-design-a-mini-site-in-fireworks/#comments</comments>
		<pubDate>Fri, 08 May 2009 09:50:48 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<guid isPermaLink="false">http://webjestic.net/?p=405</guid>
		<description><![CDATA[(Please open the article to see the flash file or player.) In the last video series, I went through the process of How to Create eCovers (eBooks) and in this video I show how to design the mini site that compliments that eCover. Mini sites are a pretty easy way to quickly create a website [...]]]></description>
			<content:encoded><![CDATA[<div style="margin:10px; float:left"><small>(Please open the article to see the flash file or player.)</small></div>
<p>In the last video series, I went through the process of <a href="http://webjestic.net/blog/how-to-create-ecovers-fwpsebooks/">How to Create eCovers (eBooks)</a> and in this video I show how to design the mini site that compliments that eCover.</p>
<p>Mini sites are a pretty easy way to quickly create a website that is e-commerce ready.  You can find tons of them on the internet in almost every genre imaginable.  More commonly, the mini site serves the purpose of selling informational products, such as &#8220;<em>How-to Make Money Online</em>&#8220;.  A somewhat horrible industry, due to the fact there is a lot stupid information available. I think most of that information is recycled garbage, modified by someone who promises riches, but has no idea what they are doing.</p>
<p>Nevertheless, the mini site is a powerful web site formula and not to be overlooked by someone with real talent and real knowledge.  Understanding the formula and how to design and create the mini site is a valuable asset, as it can be used in many ways by both the entrepreneur and the freelancer.</p>
<p>The image below is the end result of this design video.<center><img src="http://webjestic.net/wp-content/uploads/2009/05/minisitesample01.jpg" alt="minisitesample" title="minisitesample"  class="alignnone size-full wp-image-408" /></center></p>
]]></content:encoded>
			<wfw:commentRss>http://webjestic.net/blog/how-to-design-a-mini-site-in-fireworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Create eCovers (FW+PS)(ebooks)</title>
		<link>http://webjestic.net/blog/how-to-create-ecovers-fwpsebooks/</link>
		<comments>http://webjestic.net/blog/how-to-create-ecovers-fwpsebooks/#comments</comments>
		<pubDate>Wed, 06 May 2009 18:03:47 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
		
		<guid isPermaLink="false">http://webjestic.net/?p=396</guid>
		<description><![CDATA[(Please open the article to see the flash file or player.) I use Adobe products for many things. I&#8217;m not a graphic artist, so I&#8217;ve never been able to master or even make good sense with Photoshop. However, Adobe Fireworks is easy to learn and a very powerful tool for me as a web developer. [...]]]></description>
			<content:encoded><![CDATA[<div style="margin:10px; float:left"><small>(Please open the article to see the flash file or player.)</small></div>
<p>I use Adobe products for many things. I&#8217;m not a graphic artist, so I&#8217;ve never been able to master or even make good sense with Photoshop.  However, Adobe Fireworks is easy to learn and a very powerful tool for me as a web developer.</p>
<p>In this video I use <a href="http://www.adobe.com/downloads/">Adobe Photoshop and Adobe Fireworks</a> to create an ebook cover.</p>
<p>To create modern day Web 2.0 style ebook covers, most everybody uses Action Scripts of some sort.  In this video I am using <a href="http://www.coveractionpro.com/">Cover Action Pro</a> scripts (a commercial product).</p>
<p>This video is about 25 minutes long and shows every step I took to create the eZine eCover in this post.  My style might seem goofy to some Photoshop experts, but I&#8217;m a Fireworks user and all scripts that I am aware of at the moment are for Photoshop.  So, I design the eCover in Fireworks and run the Photoshop scripts on the design.</p>
<p><center><img class="alignnone size-full wp-image-400" title="myecommerceezine400" src="http://webjestic.net/wp-content/uploads/2009/05/myecommerceezine400.jpg" alt="myecommerceezine400" width="395" height="508" /></center></p>
]]></content:encoded>
			<wfw:commentRss>http://webjestic.net/blog/how-to-create-ecovers-fwpsebooks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQLQuery Dataset to Create Dynamic Smarty Menus (AppObsess)</title>
		<link>http://webjestic.net/blog/mysqlquery-dataset-to-create-dynamic-smarty-menus-appobsess/</link>
		<comments>http://webjestic.net/blog/mysqlquery-dataset-to-create-dynamic-smarty-menus-appobsess/#comments</comments>
		<pubDate>Sat, 02 May 2009 15:09:31 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Delphi for PHP]]></category>

		<guid isPermaLink="false">http://webjestic.net/?p=383</guid>
		<description><![CDATA[(Please open the article to see the flash file or player.) In this video tutorial I use a MySQL connection to dynamically create a MySQLQuery object, extract menu data from the database, and then create data-driven menu items for a Smarty Template. This is a continuation from the Connecting to MySQL in Delphi for PHP [...]]]></description>
			<content:encoded><![CDATA[<div style="margin:10px; float:left"><small>(Please open the article to see the flash file or player.)</small></div>
<p>In this video tutorial I use a MySQL connection to dynamically create a MySQLQuery object, extract menu data from the database, and then create data-driven menu items for a Smarty Template.</p>
<p>This is a continuation from the <a href="http://webjestic.net/blog/connecting-to-mysql-in-delphi-for-php-appobsess/">Connecting to MySQL in Delphi for PHP (AppObsess)</a> post. </p>
<p>The basic concepts of this video continue to show how to work with the Smarty Templates and how to spin through a MySQLQuery dataset using Delphi for PHP.</p>
<p>If you are familiar with Delphi, then you probably already know how to use the <em>First</em>, <em>Next</em>, <em>Last</em>, and <em>EOF</em> functions of a TDataSet object to spin through the data and collect information using the <em>FieldByName</em> or <em>FindField</em> functions.</p>
<p>The same principle applies in Delphi for PHP and all the basic navigation methods are available.  The only difference in Delphi for PHP is that the fields are in an array property called <strong>Fields</strong> and each field retrieved in the query is accessible via the MySQLQuery->Fields['FieldName'] array elements.</p>
<p>I&#8217;ve created a unit called template_functions.php and added some functions to help build some of the common elements of a template.  The core functionality of creating the query and spinning through the results looks like this:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> &nbsp; &nbsp;<span class="co1">// Dynamically create the main menu</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> add_MainMenu<span class="br0">&#40;</span><span class="re0">$sender</span>, <span class="re0">$params</span>, <span class="re0">$MainData</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re0">$query</span> = <span class="kw2">new</span> MySQLQuery<span class="br0">&#40;</span><span class="re0">$MainData</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re0">$query</span>-&gt;<span class="me1">Database</span> = <span class="re0">$MainData</span>-&gt;<span class="me1">MySQLDB</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; <span class="re0">$query</span>-&gt;<span class="me1">SQL</span> = <span class="st0">&#8216;select * from menu where menu_type_id = (select id from menu_type where menu_type_name = &quot;MainMenu&quot;)&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re0">$query</span>-&gt;<span class="me1">Prepare</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re0">$query</span>-&gt;<span class="me1">open</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$query</span>-&gt;<span class="me1">RecordCount</span> &gt; <span class="nu0">0</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$query</span>-&gt;<span class="me1">first</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">while</span> <span class="br0">&#40;</span>! <span class="re0">$query</span>-&gt;<span class="me1">EOF</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$result</span> = <span class="re0">$result</span>. <span class="st0">&#8216;&lt;li&gt;&lt;a href=&quot;&#8217;</span>.<span class="re0">$query</span>-&gt;<span class="me1">Fields</span><span class="br0">&#91;</span><span class="st0">&#8216;menu_url&#8217;</span><span class="br0">&#93;</span>.<span class="st0">&#8216;&quot;&gt;&#8217;</span>.<span class="re0">$query</span>-&gt;<span class="me1">Fields</span><span class="br0">&#91;</span><span class="st0">&#8216;menu_name&#8217;</span><span class="br0">&#93;</span>.<span class="st0">&#8216;&lt;/a&gt;&lt;/li&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$query</span>-&gt;<span class="me1">next</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$result</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>I&#8217;ve also added two new tables to the database.  As time goes by I&#8217;ll be adding ALTER statements and adapting the database structure as I continue playing with this project.  I might not always add the SQL in the posting, but it will always be included in the downloadable project .ZIP file.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> menu_type <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; id bigint<span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">AUTO_INCREMENT</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; menu_type_name varchar<span class="br0">&#40;</span><span class="nu0">60</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; menu_type_desc varchar<span class="br0">&#40;</span><span class="nu0">200</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">UNIQUE</span> <span class="kw1">KEY</span> menu_type_name <span class="br0">&#40;</span>menu_type_name<span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>id, menu_type_name<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> TYPE=InnoDB <span class="kw1">DEFAULT</span> CHARSET=UTF8 <span class="kw1">AUTO_INCREMENT</span>=<span class="nu0">1000</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> menu <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; id bigint<span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">AUTO_INCREMENT</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; menu_type_id bigint<span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; menu_name varchar<span class="br0">&#40;</span><span class="nu0">60</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; menu_url text <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">UNIQUE</span> <span class="kw1">KEY</span> menu_name <span class="br0">&#40;</span>menu_name, menu_type_id<span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>id, menu_name<span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">FOREIGN</span> <span class="kw1">KEY</span> <span class="br0">&#40;</span>menu_type_id<span class="br0">&#41;</span> <span class="kw1">REFERENCES</span> menu_type<span class="br0">&#40;</span>id<span class="br0">&#41;</span> <span class="kw1">ON</span> <span class="kw1">DELETE</span> CASCADE</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> TYPE=InnoDB <span class="kw1">DEFAULT</span> CHARSET=UTF8 <span class="kw1">AUTO_INCREMENT</span>=<span class="nu0">1000</span>;</div>
</li>
</ol>
</div>
<p>If you would like to download this application in the state it is for this video, you can download it using the link below.  The .SQL file, the template, and the Delphi for PHP project code is all included.</p>
<p>Download <a href="http://webjestic.net/private/AppObsess-dev-002.zip">AppObsess-dev-002.zip</a> here!</p>
]]></content:encoded>
			<wfw:commentRss>http://webjestic.net/blog/mysqlquery-dataset-to-create-dynamic-smarty-menus-appobsess/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

