<?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>Bin-Blog &#187; Database</title>
	<atom:link href="http://www.bin-co.com/blog/tag/database/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bin-co.com/blog</link>
	<description>Learn about the latest in Web Development - as soon as I do.</description>
	<lastBuildDate>Tue, 13 Oct 2009 18:55:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Interactive SQL Tutorial</title>
		<link>http://www.bin-co.com/blog/2009/02/interactive-sql-tutorial/</link>
		<comments>http://www.bin-co.com/blog/2009/02/interactive-sql-tutorial/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 19:00:44 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[gears]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=230</guid>
		<description><![CDATA[I have completed a tutorial that I have been working on for a long time. Its the <a href="http://www.bin-co.com/database/sql_tutorial/">Interactive SQL(Structured Query Language) Tutorial</a> - it teaches you the basics of SQL. SQL, for those of you who are unaware of it, is the language used to access and manipulate data within a database. It is very simple and very powerful.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/02/db.png" alt="Database SQL" title="Database SQL" width="158" height="155" class="alignnone size-full wp-image-231 intro" align="right" /></p>
<p class="intro">I have completed a tutorial that I have been working on for a long time. Its the <a href="http://www.bin-co.com/database/sql_tutorial/">Interactive SQL(Structured Query Language) Tutorial</a> &#8211; it teaches you the basics of SQL. SQL, for those of you who are unaware of it, is the language used to access and manipulate data within a database. It is very simple and very powerful.</p>
<h2>Interactive SQL Query Box</h2>
<p>The cool thing about the tutorial is that it is interactive &#8211; each vistor can have a personal sandboxed database in which they can run any query they want. I call it the interactive query box. You can test almost all the SQL statements in this box without worrying about data loss &#8211; all the data is stored temporarily in this system. But you will have to install an extension called Google Gears in your browser.</p>
<h3>Google Gears</h3>
<p><a href="http://gears.google.com/">Google Gears</a> is an open source browser extension that lets developers create web applications that can run offline. You can install it in Firefox and Internet Explorer. If you want to try out SQL queries as it is presented in the tutorial, you need this extension.</p>
<p>You can view the tutorial without this extension, but you will be missing out the coolest feature of the tutorial.</p>
<h2>Simple Tutorial</h2>
<p>I have tried to make the tutorial as simple as possible. If you have learned about RDBMS, you know there are stuff like Normal Forms and Cardinality and other brain numbing definitions. I have removed all but the <a href="http://www.bin-co.com/database/sql_tutorial/db_terms_meanings.php">most essential definitions in my tutorial</a> &#8211; it makes it easier to understand.</p>
<p>Even after removing the confusing definitions, I have apologized about the rest&#8230;</p>
<blockquote><p>Sorry if you find the definitions here a bit too much. Trust me &#8211; you are much better off here than if you are learning SQL from a database book. They are going to lay definitions on you till your eyes bleed. I have seen brave men die from too much exposure to definitions.</p></blockquote>
<h2>Its Funny</h2>
<p>I have learned a lot of languages and programming techniques by reading books and sites &#8211; and one thing I have noticed is that most of the material is unbelievably dry. Its extremely hard to keep your eyes open when you read them. That is why <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=https%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26x%3D23%26ref%255F%3Dnb%255Fss%255F%26y%3D23%26field-keywords%3Dhead%2520first%26url%3Dsearch-alias%253Dstripbooks&amp;tag=binnva-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=390957">head first books</a><img src="https://www.assoc-amazon.com/e/ir?t=binnva-20&amp;l=ur2&amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> are so popular &#8211; they made learning fun.</p>
<p>Its been a policy of mine to inject humor into such tutorials &#8211; if you have read any of my earlier tutorials, you would know that&#8230;</p>
<ul>
<li><a href="http://www.openjs.com/tutorials/basic_tutorial/">An Interactive JS Tutorial &#8211; The ABC of JavaScript</a></li>
<li><a href="http://www.openjs.com/tutorials/advanced_tutorial/">Advanced JavaScript Tutorial</a></li>
<li><a href="http://www.bin-co.com/tcl/tutorial/">Tcl/Tk Tutorial &#8211; Create GUI using Tk with Tcl Language</a></li>
<li><a href="http://www.bin-co.com/perl/tutorial/">Beginner&#8217;s Tutorial for CGI Perl Language</a></li>
<li><a href="http://www.bin-co.com/perl/perl_tk_tutorial/">Perl/Tk Tutorial &#8211; Create GUI with Perl&#8217;s Tk Module</a></li>
</ul>
<p>Also, I am a <a href="http://blog.binnyva.com/">humor blogger</a> &#8211; so this stuff comes easily to me.</p>
<p>What I am trying to say is that the new SQL tutorial follows the same pattern &#8211; there is a lot of humor in it. So people can read it easily &#8211; without resorting to caffeine shots.</p>
<h2>I Want Your Help&#8230;</h2>
<p>Now that the writing part is over, I am proof-reading it. I have corrected a fair amount of stupid mistakes so far &#8211; but I am sure that there are many still left. I was hoping that a few of you would head over to my <a href="http://www.bin-co.com/database/sql_tutorial/">SQL Tutorial</a> and go through it. If you notice any mistakes, just put it in the comment field at the end of each page. Once I fix an error, I&#8217;ll remove the comment &#8211; that way, when I launch the tutorial, people will think that there were no errors in my tutorial. Devious, isn&#8217;t it?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2009/02/interactive-sql-tutorial/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Remote Database Backup WordPress Plugin</title>
		<link>http://www.bin-co.com/blog/2008/10/remote-database-backup-wordpress-plugin/</link>
		<comments>http://www.bin-co.com/blog/2008/10/remote-database-backup-wordpress-plugin/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 16:43:10 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=135</guid>
		<description><![CDATA[My second WordPress Plugin - <a href="http://www.bin-co.com/tools/wordpress/plugins/db_backup/">Remote Database Backup</a>. Its is based on the <a href="http://www.ilfilosofo.com/blog/wp-db-backup">WordPress Database Backup plugin</a>. If you are a regular wordpress user, you might be better off using WordPress Database Backup plugin instead of my version. But if you, like me, have a local server on your system and has a copy of your site on the local server as well as the online server, you will find great use for my plugin.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/10/wordpress_logo.png" alt="" title="Wordpress Logo" width="183" height="145" class="alignnone size-full wp-image-136 intro" align="right" /></p>
<p class="intro">I have released my second WordPress Plugin &#8211; <a href="http://www.bin-co.com/tools/wordpress/plugins/db_backup/">Remote Database Backup</a>. Its is based on the <a href="http://www.ilfilosofo.com/blog/wp-db-backup">WordPress Database Backup plugin</a>. If you are a regular wordpress user, you might be better off using WordPress Database Backup plugin instead of my version. But if you, like me, have a local server on your system and has a copy of your site on the local server as well as the online server, you will find great use for my plugin.</p>
<p>My plugin is designed to make it possible to remotely create and download wordpress database backup in form of SQL dumps. You can then use these dumps to sync the local version of your site with the online version.</p>
<p><img src="http://www.bin-co.com/tools/wordpress/plugins/db_backup/db_backup.png" alt="Remote Database Backup Screenshot" /></p>
<h2>Backuping your WordPress Database</h2>
<ul>
<li>Install Remote Database Backup Plugin in WordPress</li>
<li>Login to WordPress site</li>
<li>Go to the Backup Page(Manage &gt; DB Backup)</li>
<li>Create a backup</li>
<li>Download the backup file to your system</li>
</ul>
<h3>Sync With Local Server</h3>
<p>And if you have a local version of your site, you can sync it with the online site using the backup file. Just follow these steps&#8230;</p>
<ul>
<li>Extract the backup file(its in the tar.gz format)</li>
<li><a href="http://txt.binnyva.com/2007/03/mysql-database-backuprestore/">Import it into your mysql database</a>.</li>
<li>Make some changes to the database(like set the home url) so that wordpress works locally</li>
</ul>
<h2>Automation Script</h2>
<p>You can do all these steps manually &#8211; or you can use the <a href="http://www.bin-co.com/blog/wp-content/uploads/2008/10/backup.txt">automation script</a> I have cooked up. You need PHP installed in your system for this to work(I assume you already have PHP if you have a local version of wordpress).</p>
<p>To use the script, first install the plugin. Then download <a href="http://www.bin-co.com/blog/wp-content/uploads/2008/10/backup.txt">the script</a> and rename it to &#8216;backup.php&#8217;(the extension must be &#8216;php&#8217; instead of &#8216;txt&#8217;. Now open it in your favorite editor and change the variables to match your site. You can run it by opening a terminal/command prompt and navigating to that folder and executing the command &#8216;php backup.php&#8217;. This will automatically make a backup and sync it with your local database.</p>
<h2>Need Feedback</h2>
<p>Let me know how it works for you if you are installing the plugin &#8211; its the first release &#8211; so I need some feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/10/remote-database-backup-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Installing LAMP(Apache Web Server/PHP/MySQL) in Debian/Ubuntu</title>
		<link>http://www.bin-co.com/blog/2008/09/installing-lampapache-web-serverphpmysql-in-debian/</link>
		<comments>http://www.bin-co.com/blog/2008/09/installing-lampapache-web-serverphpmysql-in-debian/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 19:10:07 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[apt]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=125</guid>
		<description><![CDATA[Installing the <abbr title="Linux Apache MySQL PHP">LAMP</abbr> environment on a Linux system is easy if you are comfortable with using the native package management software. If you on a Red Hat/Fedora/CentOS system, that will be yum - and for Debian/Ubuntu systems, that will be apt. This tutorial shows you how to install Apache 2, PHP 5 and MySQL 5 in Debian using apt.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/09/lava_lamp.jpg" alt="LAMP - Linux, Apache, MySQL, PHP" title="Lamp" width="232" height="294" class="size-full wp-image-128 intro" align="right" /></p>
<p class="intro">Installing the <abbr title="Linux Apache MySQL PHP">LAMP</abbr> environment on a Linux system is easy if you are comfortable with using the native package management software. If you on a Red Hat/Fedora/CentOS system, that will be yum &#8211; and for Debian/Ubuntu systems, that will be apt. This tutorial shows you how to install Apache 2, PHP 5 and MySQL 5 in Debian using apt.</p>
<p>Before installation, a few points to remember. These instruction are not for a production environment &#8211; this is for a development environment. To install the software, you need root access. You can get that using this command&#8230;</p>
<pre><code class="cli">su -
[Enter root password]</code></pre>
<h2>Installing Apache 2</h2>
<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/09/apache.png" alt="" title="Apache Logo" width="230" height="90" class="alignnone size-full wp-image-126" align="right" /></p>
<p>Use this command to install Apache 2.</p>
<pre><code class="javascript">apt-get install apache2</code></pre>
<p>Make sure you specify &#8216;apache2&#8242; &#8211; or else, apache 1.3 will be installed.</p>
<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/09/php-logo.png" alt="PHP Logo" title="PHP Logo" width="179" height="98" class="alignnone size-full wp-image-123" align="right" /></p>
<h2>Install PHP 5</h2>
<p>Now, install the PHP 5 packages&#8230;</p>
<pre><code class="javascript">apt-get install libapache2-mod-php5 php5-cli php5-common php5-cgi</code></pre>
<p>No go to the folder <code>/etc/apache2/sites-enabled/</code> and edit the file in that directory(usually 000-default). Find the line that says<br />
<code>RedirectMatch ^/$ /apache2-default/</code><br />
and remove it.</p>
<p>Now your document root is <code>/var/www/</code> &#8211; place all your HTML documents and scripts in this folder. If you want to make some other configuration changes, edit the configuration files at <code>/etc/apache2/apache2.conf</code></p>
<p>I also had to make the following changes&#8230;</p>
<ul>
<li>Changed the owner of <code>/var/log/apache2</code> to www-data &#8211; I used the command <code>chown www-data:www-data apache2</code></li>
<li>Created an empty file at <code>/etc/apache2/httpd.conf</code></li>
</ul>
<p>This was to fix a few errors I saw on my system &#8211; you may not have to do it.</p>
<h2>Install MySQL</h2>
<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/09/mysql_logo.gif" alt="" title="MySQL Logo" width="150" height="98" class="alignnone size-full wp-image-127" align="right" /></p>
<p>This is the command to install MySQL server, its client and PHP&#8217;s MySQL libraries&#8230;</p>
<pre><code class="javascript">apt-get install mysql-client mysql-common mysql-server php5-mysql</code></pre>
<p>Finally, Install the other packages you need as well</p>
<pre><code class="javascript">apt-get install php5-sqlite php5-gd ...</code></pre>
<h2>Testing the System</h2>
<p>Go to your document root(<code>/var/www</code>) and create a php files called &#8216;info.php&#8217; and put this code inside that&#8230;</p>
<pre><code class="php">&lt;?php
php<!-- PHP bug -->info();

</code></pre>
<h3>Start the Servers</h3>
<p>First, turn on the MySQL database server&#8230;</p>
<pre><code class="javascript">/etc/init.d/mysql start</code></pre>
<p>Then, start the Apache Web Server&#8230;</p>
<pre><code class="javascript">/etc/init.d/apache2 start</code></pre>
<p>Now fire up a browser and go to <a href="http://localhost/">localhost</a> &#8211; you should see a file listing page with a &#8216;info.php&#8217; in the list. Click on that link &#8211; if you see a PHP information page, your web server is setup correctly.</p>
<p>To make sure MySQL-PHP connection is working, <a href="http://www.bin-co.com/database/clients/phpmyadmin/installing_phpmyadmin.php">install phpMyAdmin</a> &#8211; or write a database connection script &#8211; whatever is easier for you.</p>
<h2>Related Links</h2>
<ul>
<li><a href="http://www.thegeekstuff.com/2008/09/how-to-install-or-upgrade-lamp-apache-mysql-and-php-stack-on-linux-using-yum/">How To Install Or Upgrade LAMP: Linux, Apache, MySQL and PHP Stack Using Yum</a></li>
<li><a href="http://www.debianadmin.com/apache2-installation-and-configuration-with-php-support-in-debian-linux.html">Apache2 installation and configuration with php support</a></li>
<li><a href="http://www.debianadmin.com/install-and-configure-apache2-with-php5-and-ssl-support-in-debian-etch.html">Install and Configure Apache2 with PHP5 and SSL Support in Debian Etch</a></li>
<li><a href="http://www.adobe.com/devnet/dreamweaver/articles/lamp.html">Setting Up Your PHP Server Environment Using Linux, Apache, MySQL, and PHP</a></li>
<li><a href="http://www.mysql-apache-php.com/">Quick Linux Server w/ Apache+PHP+MySQL</a></li>
<li><a href="http://www.debianhelp.co.uk/lamp.htm">LAMP (Linux Apache Mysql PHP) Configuration and Installing in Debian</a></li>
<li><a href="http://lamphowto.com/">HOWTO: Installing MySQL and Apache with PHP support on Linux</a></li>
<li><a href="http://www.kewanshunn.com/articles/how_to_install_apache2,_php5,_mysql5_on_redhat/3.html">How to install Apache2, PHP5, MySQL5 on RedHat</a></li>
</ul>
<p><strong>Shameless Plug</strong>: If you are a Linux user, you may want to check out my <a href="http://lindesk.com/">Linux Blog &#8211; LinDesk</a> &#8211; its about Linux on the Desktop &#8211; Articles, Application Reviews and Tutorials about many aspects of Linux included configuration and scripting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/09/installing-lampapache-web-serverphpmysql-in-debian/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Document Formats</title>
		<link>http://www.bin-co.com/blog/2008/04/document-formats/</link>
		<comments>http://www.bin-co.com/blog/2008/04/document-formats/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 18:20:39 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[document]]></category>
		<category><![CDATA[format]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[text]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2008/04/document-formats/</guid>
		<description><![CDATA[
In FLOSS circles, March 26 is celebrated as the Document Freedom Day. 
Document Freedom Day (DFD) is a global day for document liberation. It will be a day of grassroots effort to educate the public about the importance of Free Document Formats and Open Standards in general.
This is when I realized that people actually use [...]]]></description>
			<content:encoded><![CDATA[<p><img class="intro" align="right"  src='http://www.bin-co.com/blog/wp-content/uploads/2008/04/documents.jpg' alt='Documents' /></p>
<p class="intro">In FLOSS circles, March 26 is celebrated as the <a href="http://www.documentfreedom.org/">Document Freedom Day</a>. </p>
<blockquote><p>Document Freedom Day (DFD) is a global day for document liberation. It will be a day of grassroots effort to educate the public about the importance of Free Document Formats and Open Standards in general.</p></blockquote>
<p>This is when I realized that people actually use the office packages daily. I almost never use it. According to me there are three options to store text data.</p>
<ul>
<li>Plain Text</li>
<li>HTML</li>
<li>Database</li>
</ul>
<h2>Plain Text</h2>
<p>The <strong class="highlight">simplest format</strong> there is. If there is something I should remember, I just put it in a text file and save it to the desktop. I used to use it a lot earlier &#8211; but I don&#8217;t use it much nowadays due to searchability issues. There are quite a few <a href="http://ifacethoughts.net/2007/09/27/we-need-more-txt/">advantages in using the text format</a></p>
<h2>HTML</h2>
<p>If I <strong class="highlight">need any formatting in the text, I create the document in HTML</strong>. It is easier for me to create the formatting using HTML code that using WYSIWYG Word Processors(like MS Word). I write all my blog posts in HTML &#8211; perhaps the only occasion where I need formatting.</p>
<h3>Database</h3>
<p>My favorite method to store text data is in a database. I am a web developer &#8211; so I always have a Web Server and Database server running on my system &#8211; so this system is perfect for me. </p>
<h3>Interface</h3>
<p>Remove that scared look on your face &#8211; I don&#8217;t use <a href="http://binnyva.blogspot.com/2006/08/managing-databases-with-mysql-clients.html">phpMyAdmin</a> or any Database Administration tools as the interface to save/view the data. I use my own custom scripts or WordPress.</p>
<p>The best example of this is <a href="http://txt.binnyva.com/">txt</a>. Txt is my code snippets/commands repository. You can view the full story in the <a href="http://binnyva.blogspot.com/2007/03/saving-code-snippets-part-2.html">Saving Code Snippets</a> post.</p>
<p>That&#8217;s an online example &#8211; I also have a personal wordpress blog running in my local server. I use it to record events, purchases, store receipts etc.</p>
<h3>Advantages</h3>
<dl>
<dt>Tagging</dt>
<dd><strong class="highlight">Tagging is heaven-sent to make information more findable</strong> &#8211; any del.icio.us user should know that. I used to install Ultimate Tag Warrior to get this feature &#8211; but WordPress now supports tags natively.</dd>
<dt>Searching</dt>
<dd><strong class="highlight">Searching for data within a database is much more easier, faster and provides more relevent results</strong> than searching for the data in a collection of file. Even if you are using a file indexing software like Google Desktop Search or Beagle/<a href="http://lindesk.com/2007/04/desktop-searching-in-linux-with-recoll/">Recoll</a>(for linux users), I find database searching more easier. Another advantage of using database to search is that you can <strong class="highlight">create complex queries if you know SQL</strong>.</dd>
</dl>
<h3>Disadvantages</h3>
<dl>
<dt>Not for everyone</dt>
<dd>Let&#8217;s face it &#8211; installing and maintaining a web/database server is a tad in the geek zone. An average Joe will find it just a little bit out of their league.</dd>
<dt>Overhead</dt>
<dd>Running a web server and a database server is a bit demanding on the RAM.</dd>
<dt>Backing up a little more complicated &#8211; but easier</dt>
<dd><a href="http://txt.binnyva.com/2007/03/mysql-database-backuprestore/">Backing up the data in a Database</a> is not as straight forward as backing up files &#8211; but its actually easier if you know how.</dd>
</dl>
<h2>Online</h2>
<p>One extra method to store the data &#8211; online.  This <strong class="highlight">data is stored in a database &#8211; but you don&#8217;t have the disadvantages associated with using a database</strong>. More and more people are turning to this method now. I did not include it in the initial list because its not a data format &#8211; its more of a data storing method.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/04/document-formats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Installer: The Code</title>
		<link>http://www.bin-co.com/blog/2007/07/web-installer-the-code/</link>
		<comments>http://www.bin-co.com/blog/2007/07/web-installer-the-code/#comments</comments>
		<pubDate>Tue, 10 Jul 2007 20:50:21 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/07/web-installer-the-code/</guid>
		<description><![CDATA[The last two posts on web installer did not include any code. I wanted to dump all code into one post &#8211; this is it. Please note that this is what I did &#8211; you don&#8217;t have to copy my code as it is. Just look at the code and modify it according to your [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">The <a href="http://www.bin-co.com/blog/2007/07/web-application-installer/">last two posts</a> on <a href="http://www.bin-co.com/blog/2007/07/3-simple-steps-to-create-a-web-installer/">web installer</a> did not include any code. I wanted to dump all code into one post &#8211; this is it. Please note that this is what I did &#8211; you don&#8217;t have to copy my code as it is. Just look at the code and modify it according to your needs.</p>
<h2>Getting Database Details</h2>
<h3>The Form/Frontend</h3>
<pre><code class="html">&lt;form action="" method="post"&gt;
&lt;h1&gt;Installation : Step 1&lt;/h1&gt;
Please provide the database connection details...
&lt;fieldset&gt;
&lt;legend&gt;Database Details&lt;/legend&gt;

&lt;label for='host'&gt;Database Host&lt;/label&gt;&lt;input type='text' name='host' value='localhost' /&gt;&lt;br /&gt;
&lt;label for='db_user'&gt;Database User&lt;/label&gt;&lt;input type='text' name='db_user' value='root' /&gt;&lt;br /&gt;
&lt;label for='password'&gt;Database Password&lt;/label&gt;&lt;input type='text' name='password' /&gt;&lt;br /&gt;
&lt;label for='database'&gt;Database&lt;/label&gt;&lt;input type='text' name='database' value='nexty' /&gt;&lt;br /&gt;
&lt;/fieldset&gt;

&lt;input type="hidden" name="step" value="2" /&gt;&lt;br /&gt;
&lt;input type="submit" name="action" value="Continue &gt;&gt;" /&gt;&lt;br /&gt;
&lt;/form&gt;</code></pre>
<h3>Backend</h3>
<p>Make sure that the given database details are correct.</p>
<pre><code class="php">// The First step is Setting up Database connection
//					   (the '2' is NOT a typo)
if($_REQUEST['step'] == 2) {
	//Save the data to the Session
	if(isset($_REQUEST['host'])) $_SESSION['host'] = $_REQUEST['host'];
	if(isset($_REQUEST['db_user'])) $_SESSION['db_user'] = $_REQUEST['db_user'];
	if(isset($_REQUEST['password'])) $_SESSION['password'] = $_REQUEST['password'];
	if(isset($_REQUEST['database'])) $_SESSION['database'] = $_REQUEST['database'];
	if(isset($_REQUEST['url'])) $_SESSION['url'] = $_REQUEST['url'];

	if(mysql_connect($_SESSION['host'],$_SESSION['db_user'],$_SESSION['password'])) { //Try to connect to the DB.
		$QUERY['success'][] = 'Connection to Database server successful';

		if(mysql_select_db($_SESSION['database'])) {//Select the provided database.
			$QUERY['success'][] = "Database '$_SESSION[database]' selected";

		} else {
			$QUERY['error'][] = 'The given database('.$_SESSION['database'].') does not exist. Please povide a valid database.';
			$_REQUEST['step'] = 1;
		}
	} else {
		$QUERY['error'][] = 'Unable to connect to the database. Make sure that the entered details are correct';
		$_REQUEST['step'] = 1;
	}
}</code></pre>
<p>Notice the over use of $_SESSION? That will come in use if I decide to add a Back button that enables the users to modify the data entered previously.</p>
<h2>Database Creation</h2>
<pre><code class="php">//Create the database only if it does not exist
//See if the database exists
$tables_sql = mysql_query("SHOW TABLES") or die(mysql_error());
$necessary_tables = array('Context','Project','Reminder','Setting','Task','TaskContext','User');
while($table = mysql_fetch_row($tables_sql)) {
	$necessary_tables = array_diff($necessary_tables,array($table[0])); //Remove the table from the array if it exists
}

//If there are no tables in the array that means that the all the necessary tables are present in the Database
//If some tables are missing, that means we have to create those tables...
if($necessary_tables) {
	$quries = &lt;&lt;&lt;END
-- Insert all the SQL to create the necessary tables here...
END;

	//Execute all the queries
	$all_quires = explode(";",$quries);
	$query_count = 0;
	foreach($all_quires as $query) {
		$query = trim($query);
		if($query) {
			@mysql_query($query);
			$query_count++;
		}
	}
	$QUERY['success'][] = "Database Populated.";
} else {
	$QUERY['error'][] = "Tables already in Database - I did not overwrite it. If you want to remove the old data, please delete the tables and run the installer script agian.";
}
</code></pre>
<h2>Saving the Database connection details</h2>
<pre><code class="php">
//I don't know how to escape the $ charector in heredocs - so I did this...
$config = '$config';//Heh, Heh <img src='http://www.bin-co.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />
$system_installed = '$system_installed';
$configuration = &lt;&lt;&lt;END
&lt;?php
//Configuration file for Nexty
$system_installed = true;
$config = array(
	'db_host'		=&gt;	'$_SESSION[host]',
	'db_user'		=&gt;	'$_SESSION[db_user]',
	'db_password'	=&gt;	'$_SESSION[password]',
	'db_database'	=&gt;	'$_SESSION[database]',
	'url'			=&gt;	'$_SESSION[url]',
	'absolute_path'	=&gt;	'$abs'
);

END;
if(is_writable('../configuration.php')) {
        // ...Write the $config text into the configuration.php file...

	$QUERY['success'][] = 'Saved the configuration file. &lt;a href="'.$_REQUEST['url'].'"&gt;Go to Nexty&lt;/a&gt;';
} else {
	$QUERY['error'][] = 'Configuration file (configuration.php) is not writable. Please copy the configuration code and enter it into the "configuration.php" file. Then press continue.';
}
</code></pre>
<p>See the <a href="https://nexty.svn.sourceforge.net/svnroot/nexty/install/">install folder for Nexty</a> in the Subversion server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/07/web-installer-the-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3 Simple Steps to create a Web Installer</title>
		<link>http://www.bin-co.com/blog/2007/07/3-simple-steps-to-create-a-web-installer/</link>
		<comments>http://www.bin-co.com/blog/2007/07/3-simple-steps-to-create-a-web-installer/#comments</comments>
		<pubDate>Fri, 06 Jul 2007 16:00:48 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/07/3-simple-steps-to-create-a-web-installer/</guid>
		<description><![CDATA[Creating a web installer is not hard &#8211; as a matter of fact &#8211; it is downright easy. You just have to know a few things. Get the database details, create the database, save the details. That&#8217;s it!
Getting Database Details

A simple four field form will suffice. The important thing to remember is that the data [...]]]></description>
			<content:encoded><![CDATA[<p class="intro"><a href="http://www.bin-co.com/blog/2007/07/web-application-installer/">Creating a web installer</a> is not hard &#8211; as a matter of fact &#8211; it is downright easy. You just have to know a few things. <strong class="highlight">Get the database details, create the database, save the details</strong>. That&#8217;s it!</p>
<h2>Getting Database Details</h2>
<p><a href='http://www.bin-co.com/blog/wp-content/uploads/2007/07/nexty.png' title='Nexty Installer Screenshot'><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/07/nexty.thumbnail.png' alt='Nexty Installer Screenshot' /></a></p>
<p>A simple four field form will suffice. The important thing to remember is that the <strong class="highlight">data must be saved as session variables</strong> &#8211; as we are using a multi-page form.</p>
<p>As soon as you get the DB details, try to <strong class="highlight">connect to the database and confirm that the DB details is correct</strong>. If the connection attempt fails, take the user back to the DB details form. Else go to step two.</p>
<h2>Insert Initial Data</h2>
<p>This part is easy &#8211; just <strong class="highlight">run a bunch of SQL statements to create the necessary table structure and insert the initial data</strong>.</p>
<h2>Save the Details</h2>
<p>This should be the last step of the installation. Just take all the data from the session variables and <strong class="highlight">write it to a file, say &#8216;configuration.php&#8217;</strong>. Write the data as PHP code &#8211; so all you have to do to retrieve the data is include the file.</p>
<p>The code for the installer in the next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/07/3-simple-steps-to-create-a-web-installer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
