<?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>Bluefrog</title>
	<atom:link href="http://www.bluefrog.ca/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bluefrog.ca</link>
	<description></description>
	<lastBuildDate>Wed, 04 Jan 2012 23:33:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Watch Hulu and Pandora from outside the United States</title>
		<link>http://www.bluefrog.ca/2011/12/watch-hulu-and-pandora-from-outside-the-united-states/</link>
		<comments>http://www.bluefrog.ca/2011/12/watch-hulu-and-pandora-from-outside-the-united-states/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 04:10:44 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.bluefrog.ca/?p=60</guid>
		<description><![CDATA[Ever tried to watch your favorite TV shows on Hulu or wanted to discover new music on Pandora? Odds are if you're anyone but a Yankee you've been given the disappointing Not available in your country message that comes with most American based content provider sites. This article will show you how to get around the blocking.]]></description>
			<content:encoded><![CDATA[<p>Ever tried to watch your favorite TV shows on <a href="http://www.hulu.com" target="_blank"><em>Hulu</em> </a>or wanted to discover new music on <a href="http://www.pandora.com" target="_blank"><em>Pandora</em></a>? Odds are if you&#8217;re anyone but a Yankee you&#8217;ve been given the disappointing <em>Not available in your country</em> message that comes with most American based content provider sites.</p>
<p>It&#8217;s all possible to&#8230;</p>
<ul>
<li>Watch full TV episodes on Hulu.</li>
<li>Listen to Last.fm, Spotify, or Pandora.</li>
<li>Watch country-restricted YouTube clips.</li>
<li>Buy Amazon.com MP3s.</li>
<li>Google search as an American (why? I have no idea, but it&#8217;d be possible)</li>
</ul>
<p>Whether you&#8217;re from the UK, Canada, Australia, Antarctica, or China, it&#8217;s easy to get access to the content. It&#8217;s as simple as tricking the site into thinking you&#8217;re an American. We do this by tunneling our connections though a server located in the States.</p>
<p><a href="http://www.bluefrog.ca/wp-content/uploads/2011/12/ssh-tunnel-process.jpg"><img class="alignnone size-full wp-image-67" title="ssh-tunnel-process" src="http://www.bluefrog.ca/wp-content/uploads/2011/12/ssh-tunnel-process.jpg" alt="" width="389" height="389" /></a></p>
<p>In the example above, even though I&#8217;m in Manitoba, Canada, HULU sees me as the SSH Server (from Texas) so they allow me to view their content.</p>
<p><strong>To accomplish this their are a couple things we need:</strong></p>
<ol>
<li>PuTTY &#8211; to manage our connection to the SSH server</li>
<li>Proxifier &#8211; to tunnel all your PC&#8217;s outbound connections though PuTTY</li>
<li>Lastly, a server in the States.</li>
</ol>
<p>With these 3 things we can tunnel all outbound Internet connections from our computer though our server in the States and out to the Internet.</p>
<p><strong>Is this wrong?</strong> I don&#8217;t think so, and you shouldn&#8217;t care. If you&#8217;re smart enough to figure it out, you deserve to enjoy it.</p>
<h2>Let&#8217;s start enjoying our favorite Yankee content!</h2>
<h3>1. Make sure your server supports SSH and resides in the States</h3>
<p>Without this, the process I&#8217;m going to show you is useless. But don&#8217;t worry, I have a plan B; use a <a href="#vpn">VPN service to tunnel your connections</a>.</p>
<p>If you have a web host, odds are you likely have a SSH server available. If you&#8217;re not sure, contact your web hosting provider.</p>
<h3>2. Download PuTTY</h3>
<p>Download PuTTY here: <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html</a></p>
<p>You&#8217;ll need either the <a href="http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.62-installer.exe">putty-0.62-installer.exe</a> or <a href="http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe">putty.exe</a>. PuTTY manages the connection between your computer and your SSH server.</p>
<p>Start PuTTY. Enter your SSH server. Don&#8217;t hit Open yet.</p>
<p><a href="http://www.bluefrog.ca/wp-content/uploads/2011/12/step11.jpg"><img class="alignnone size-full wp-image-81" title="step1" src="http://www.bluefrog.ca/wp-content/uploads/2011/12/step11.jpg" alt="" width="456" height="442" /></a></p>
<p>On the left, expand the SSH node under Connection and click Tunnels. This is where we&#8217;ll setup our PuTTY session to accept local connections for tunneling though the SSH server.</p>
<p><a href="http://www.bluefrog.ca/wp-content/uploads/2011/12/step2.jpg"><img class="alignnone size-full wp-image-62" title="step2" src="http://www.bluefrog.ca/wp-content/uploads/2011/12/step2.jpg" alt="" width="456" height="442" /></a></p>
<ol>
<li>Set whatever <strong>Source port</strong> you want. I chose 8080 because it&#8217;s the common port for proxy servers.</li>
<li>For destination, choose <strong>Dynamic</strong> and <strong>Auto</strong>.</li>
<li>Click <strong>Add</strong> button to add it as a forwarded port.</li>
</ol>
<p>You can now go back to the first screen and save this connection properties so you don&#8217;t have to reenter these settings again.</p>
<p>Now we&#8217;re ready to open our SSH connection, click the <strong>Open</strong> button. You then be taken to the terminal window where you&#8217;ll have to login with your SSH account details. This is provided by the administrator of your host.</p>
<p>You will now have a connection to your American SSH server. However we&#8217;re not ready yet. We need a way to capture all outbound connection and force them though the SSH server.</p>
<h3>3. Download Proxifier</h3>
<p>Though Proxifier is not free, it does have a 30-day free trial. It does an excellent job for what we need it for.</p>
<p><a href="http://www.proxifier.com/">Download Proxifier</a> and hop though the install process and run when finished.</p>
<h3>4. Configure Proxifier</h3>
<p>We need to tell Proxifier how to tunnel connection. Go to <strong>Proxy Servers</strong> under the <strong>Profile</strong> menu.</p>
<p><a href="http://www.bluefrog.ca/wp-content/uploads/2011/12/step3.jpg"><img class="alignnone size-full wp-image-63" title="step3" src="http://www.bluefrog.ca/wp-content/uploads/2011/12/step3.jpg" alt="" width="310" height="203" /></a></p>
<p>In the next window click <strong>Add&#8230;</strong> to add our local PuTTY server. For the server address, enter <em>localhost</em> and enter <em>8080</em> for the port number (or whatever number you chose above.)</p>
<p><a href="http://www.bluefrog.ca/wp-content/uploads/2011/12/step4.jpg"><img class="alignnone size-full wp-image-64" title="step4" src="http://www.bluefrog.ca/wp-content/uploads/2011/12/step4.jpg" alt="" width="366" height="461" /></a></p>
<p>Make sure you choose <em>SOCKS v5</em> as your protocol. You&#8217;re done, click OK.</p>
<p>If you&#8217;re asked if you want to use this server profile as the default proxy, click Yes. You can close the Proxy Servers window.</p>
<p>We&#8217;re now completely done. If everything worked correctly all Internet connections will be tunneling though PuTTY to the Yankee server and out to the rest of the world. You should start to see connections in your Proxifier window similar to this:</p>
<p><a href="http://www.bluefrog.ca/wp-content/uploads/2011/12/step5.jpg"><img class="alignnone size-medium wp-image-65" title="step5" src="http://www.bluefrog.ca/wp-content/uploads/2011/12/step5-300x220.jpg" alt="" width="300" height="220" /></a></p>
<p>Bring up <a href="http://www.ipchicken.com" target="_blank">IPChicken.com</a> (because whatsmyip.com is boring) to see what your new IP is and where you&#8217;re located.</p>
<p>Enjoy the web as a Yankee does! No more country restriction!</p>
<h1>The Alternative: VPN</h1>
<p><a name="vpn"></a><br />
If you don&#8217;t have access to an American based SSH server, you can always subscribe to a VPN service. These services are easier to setup, but cost money.</p>
<p>I suggest Googling <a href="http://www.google.ca/search?q=vpn+service" target="_blank">cheap vpn</a> or similar to find a suitable VPN service.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bluefrog.ca/2011/12/watch-hulu-and-pandora-from-outside-the-united-states/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Phone Number Format Function</title>
		<link>http://www.bluefrog.ca/2011/12/simple-phone-number-format-function/</link>
		<comments>http://www.bluefrog.ca/2011/12/simple-phone-number-format-function/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 23:16:51 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.bluefrog.ca/?p=40</guid>
		<description><![CDATA[This simple function will turn the poorly formatted phone numbers entered by users into a visually appealing set of numbers.]]></description>
			<content:encoded><![CDATA[<p>This simple function will turn the poorly formatted phone numbers entered by users into a visually appealing set of numbers.</p>
<pre class="brush: php; title: ; notranslate">
/**
* Converts phone numbers to the formatting standard
*
* @param   String   $num   A unformatted phone number
* @return  String   Returns the formatted phone number
*/
function formatPhone($num)
{
$num = preg_replace('/[^0-9]/', '', $num);

$len = strlen($num);
if($len == 7)
$num = preg_replace('/([0-9]{3})([0-9]{4})/', '$1-$2', $num);
elseif($len == 10)
$num = preg_replace('/([0-9]{3})([0-9]{3})([0-9]{4})/', '($1) $2-$3', $num);

return $num;
}

// echo formatPhone('1 208 - 386 2934');
// will print: (208) 386-2934 &lt;/code&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bluefrog.ca/2011/12/simple-phone-number-format-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zip/Postal Code Lookup Class</title>
		<link>http://www.bluefrog.ca/2011/03/zippostal-code-lookup-class/</link>
		<comments>http://www.bluefrog.ca/2011/03/zippostal-code-lookup-class/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 22:54:14 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.bluefrog.ca/?p=29</guid>
		<description><![CDATA[If you&#8217;ve ever needed the ability to lookup geographical information for a particular zip or postal code in PHP, look no further! This is your all-in-one geo data lookup class. This class will query a database and get the city, province (or state), country, area code, time zone, and coordinates. It can also calculate distances [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve ever needed the ability to lookup geographical information for a particular zip or postal code in PHP, look no further! This is your all-in-one geo data lookup class. This class will query a database and get the city, province (or state), country, area code, time zone, and coordinates. It can also calculate distances between two different zip/postal codes.</p>
<p>What sets this class apart from others is its simplicity. At only 172 lines, most of the processing is done on the server end. This class can also learn! If you query for a postal/zip code that isn&#8217;t found in the database the server will go out and fetch information from other sources, parse it, save it, and return it to you. If all those sources fail it will try to get you details of the next closest zip/postal code and when that fails you&#8217;ll receive a 404 status error.</p>
<p>Details of zip/postal codes are stored on my server and is available to anyone at anytime. The data has been gathered from sources such as Canada Post and the USPS. I currently have a database of 900,000 codes and growing daily the more it&#8217;s used.</p>
<p>All coordinates are pulled from Google&#8217;s MAP API because of the accuracy provided by Google (the coordinates provided by Canada Post and the USPS are of by about 1 or 2 kms in rural areas)</p>
<p>Enjoy and don&#8217;t forget to let me know what you think!</p>
<h4>Demo</h4>
<p>Try it out here: <a href="http://www.eyesis.ca/demos/eyegeodata/" target="_blank">http://www.eyesis.ca/demos/eyegeodata/</a></p>
<h4>Limits</h4>
<p>I&#8217;ve applied a lookup limit of 1000 queries a day. I think this is more than reasonable for the average person. If you require more just drop me a line and we&#8217;ll work something out.</p>
<p>By default, SimpleXML is used to fetch data from the feed. Alternatively, you can configure this class to use PHP&#8217;s serialize function to retrieve data. PHP 5 only.</p>
<p><strong>Download</strong></p>
<p>The latest version was released March 3, 2011.</p>
<a href='http://www.bluefrog.ca/wp-content/uploads/2011/03/eyegeodata-1.0.zip' class='icon-button download-icon'><span class='et-icon'><span>Download eyegeodata-1.0.zip</span></span></a><div class="clear"></div>
<h4>Looking Up Information</h4>
<p>To fetch information on a particular zip/postal code, use the &#8220;query&#8221; function. Results are returned in an array. Shown below is a Postal code in Toronto and a Zip code for Beverly Hills.</p>
<pre class="brush: php; title: ; notranslate">
include 'class.geodata.inc.php';

$lookup = new EyeGeoData();

// Lookup postal code M5X 1J2
print_r($lookup-&gt;query('M5X 1J2'));
/*Array
(
    [PostalCode] =&gt; M5X1J2
    [City] =&gt; TORONTO
    [Province] =&gt; ON
    [Country] =&gt; CA
    [AreaCode] =&gt; 416
    [TimeZone] =&gt; 5
    [Coordinates] =&gt; Array
        (
            [Latitude] =&gt; 43.648306
            [Longitude] =&gt; -79.38224
        )

)*/

// Lookup zip code 90210
print_r($lookup-&gt;query('90210'));
/*Array
(
    [PostalCode] =&gt; 90210
    [City] =&gt; BEVERLY HILLS
    [Province] =&gt; CA
    [Country] =&gt; US
    [AreaCode] =&gt; 310
    [TimeZone] =&gt; 8
    [Coordinates] =&gt; Array
        (
            [Latitude] =&gt; 34.103131
            [Longitude] =&gt; -118.416253
        )

)*/
</pre>
<h4>Calculating Distance Between Zip/Postal Codes</h4>
<p>Need to calculate the distance between two different postal or zip codes? Easy! Check it out. The results can be returned in miles or kms and rounded to any number of decimal places.</p>
<pre class="brush: php; title: ; notranslate">

include 'class.geodata.inc.php';

// Compare the distance between two different zip/postal codes
$x = new EyeGeoData();
$x-&gt;query('M5X 1J2');

$y = new EyeGeoData();
$y-&gt;query('90210');

echo $x-&gt;calcDistance($y, EyeGeoData::KMS, 2) . ' kms'; // prints &quot;6923.05 kms&quot;
</pre>
<h4>Checking Status Codes</h4>
<p>Here is a list of possible status codes. I used HTTP status codes for simplicity.</p>
<ul>
<li>200    All is good</li>
<li>400    Bad request, not properly formatted zip/postal code</li>
<li>403    Forbidden, exceeded daily lookup limit</li>
<li>404    Could not find zip/postal code</li>
</ul>
<pre class="brush: php; title: ; notranslate">
require 'class.geodata.inc.php';

$geo = new EyeGeoData();
$result = $geo-&gt;query($postal);
$status = $geo-&gt;getStatusCode();

// Status code of 200 means success
if ($status == 200)
print_r($result);
else
echo 'Error: ' . $status;
</pre>
<h4>The EyeGeoData Class</h4>
<p>Here is the EyeGeoData class, you can download it below:</p>
<pre class="brush: php; title: ; notranslate">
/**
* EyeGeoData
* Retrieve geographical information of a postal/zip/post code
*
* LICENSE: This source file is subject to the BSD license
* that is available through the world-wide-web at the following URI:
* http://www.eyesis.ca/license.txt.  If you did not receive a copy of
* the BSD License and are unable to obtain it through the web, please
* send a note to mike@eyesis.ca so I can send you a copy immediately.
*
* @author     Micheal Frank &lt;mike@eyesis.ca&gt;
* @copyright  2011 Eyesis
* @license    http://www.eyesis.ca/license.txt  BSD License
* @version    v1.0.1 3/3/2011 2:58:39 PM
* @link       http://www.eyesis.ca/projects/geodata.html
*/

class EyeGeoData
{
const FEED = 'http://api.eyesis.ca/geo.xml';

const KMS = 1;
const MIS = 2;

private $key = false;
private $status_code, $lookups_left;
public $result = false;
public $out = 'xml';

/**
* Set a key for premium accounts
*
* @param string $key Key provided by Eyesis for premium accounts
*/
public function setKey($key)
{

$this-&gt;key = $key;

}

/**
* Get postal/zip code information
*
* @param string $code The postal/zip code you want to lookup
* @return mixed The result of the query, false on error
*/
public function query($code)
{

// Build the query
$query = '?code=' . urlencode($code);
if ($this-&gt;key)
$query .= '&amp;key=' . urlencode($this-&gt;key);

$info = false;

if ($this-&gt;out == 'xml')
{
// Use XML feed and SimpleXML

if ($feed = new SimpleXMLElement(self::FEED . $query, NULL, true))
{

$this-&gt;status_code        = (integer) $feed-&gt;Request-&gt;StatusCode;
$this-&gt;lookups_left        = (integer) $feed-&gt;Client-&gt;LookupsLeft;

if ($this-&gt;status_code == 200)
{
$info = array (
'PostalCode'     =&gt; (string) $feed-&gt;Details-&gt;PostalCode,
'City'                 =&gt; (string) $feed-&gt;Details-&gt;City,
'Province'         =&gt; (string) $feed-&gt;Details-&gt;Province,
'Country'         =&gt; (string) $feed-&gt;Details-&gt;Country,
'AreaCode'         =&gt; (integer) $feed-&gt;Details-&gt;AreaCode,
'TimeZone'         =&gt; (integer) $feed-&gt;Details-&gt;TimeZone,
'Coordinates' =&gt; array (
'Latitude'         =&gt; (float) $feed-&gt;Details-&gt;Coordinates-&gt;Latitude,
'Longitude'     =&gt; (float) $feed-&gt;Details-&gt;Coordinates-&gt;Longitude
)
);
}

}

} else {
// Use Serialized feed

if ($feed = file_get_contents(self::FEED . $query . '&amp;out=php'))
{

$feed = unserialize($feed);

$this-&gt;status_code        = (integer) $feed['PostalCode']['Request']['StatusCode'];
$this-&gt;lookups_left        = (integer) $feed['PostalCode']['Client']['LookupsLeft'];

if ($this-&gt;status_code == 200)
$info = $feed['PostalCode']['Details'];

}

}

$this-&gt;result = $info;

return $this-&gt;result;

}

/**
* Get the status code of the previous result
*
* @return mixed
*/
public function getStatusCode()
{

return ($this-&gt;status_code) ? $this-&gt;status_code : false;

}

/**
* Get the amount of lookups left
*
* @return mixed
*/
public function getLookupsLeft()
{

return ($this-&gt;lookups_left) ? $this-&gt;lookups_left : false;

}

/**
* Calculates the distance between this result and another GeoData object's result
*
* @param GeoData $dest The object to compare to
* @param integer $units The distance units
* @return float
*/
public function calcDistance(EyeGeoData $dest, $units = self::KMS, $round = 3)
{

if (!$dest-&gt;result or !$this-&gt;result)
trigger_error('Result empty; query either failed or has not been run', E_USER_ERROR);

$dist = rad2deg(acos(sin(deg2rad($this-&gt;result['Coordinates']['Latitude'])) * sin(deg2rad($dest-&gt;result['Coordinates']['Latitude'])) +
cos(deg2rad($this-&gt;result['Coordinates']['Latitude'])) * cos(deg2rad($dest-&gt;result['Coordinates']['Latitude'])) *
cos(deg2rad($this-&gt;result['Coordinates']['Longitude'] - $dest-&gt;result['Coordinates']['Longitude'])))) * 60 * 1.1515;

// Convert to kms
if ($units == self::KMS)
$dist *= 1.609344;

$dist = round($dist, $round); // Round off

return (float) $dist;

}

/**
* Convert this object to a string
*
* @return string
*/
public function __toString()
{

if ($this-&gt;result)
return print_r($this-&gt;result, true);
else
return &quot;I've got nothing to say&quot;;

}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bluefrog.ca/2011/03/zippostal-code-lookup-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EyeDataGrid Control</title>
		<link>http://www.bluefrog.ca/2008/12/eyedatagrid-control/</link>
		<comments>http://www.bluefrog.ca/2008/12/eyedatagrid-control/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 22:38:18 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.bluefrog.ca/?p=19</guid>
		<description><![CDATA[The Eyesis Data Grid Control is all you need when it comes to displaying data from a MySQL database in tabular format. No flashy dynamic updating or complex Javascript, and no countless ambiguous classes cluttering up your project.]]></description>
			<content:encoded><![CDATA[<div class='et-box et-warning'>
					<div class='et-box-content'>This code is no longer maintained and hasn&#8217;t been for years. Use of it is discouraged. I&#8217;m not sure when I&#8217;ll get back into developing this. Please don&#8217;t email me asking for support.</div></div>
<p>The Eyesis Data Grid Control is all you need when it comes to displaying data from a MySQL database in tabular format. No flashy dynamic updating or complex Javascript, and no countless ambiguous classes cluttering up your project. This class is <strong>simple, small, feature packed, and easy to implement</strong> with only six lines of code, don&#8217;t believe me? Check out the examples below!</p>
<p>There are plenty of PHP data grid controls out there, but none that could satisfy me. I use data grids on almost every web site I develop. They come in great for displaying all kinds of data. I developed this data grid to suit all my needs and more.</p>
<p><strong>A few of the features include:</strong></p>
<ul>
<li><strong>Filtering</strong> and <strong>searching</strong> capabilities</li>
<li>Ability to change column headers</li>
<li>Capable of <strong>displaying images</strong></li>
<li><strong>Ajax</strong> supported</li>
<li>Automatic row paging</li>
<li>Row selection</li>
<li>Supports <strong>MySQL database</strong></li>
<li>Hide columns</li>
<li>Sort columns</li>
<li>Customizable look and feel through <strong>CSS</strong></li>
<li>Can handle <strong>large data sets</strong></li>
<li>Ability to add <strong>controls</strong></li>
<li><strong>Checkbox</strong> support</li>
<li>Specify <strong>column format types</strong> (such as percent, dollars, etc)</li>
<li>Tested working in Firefox 2 and 3, IE 6 and 7, Chrome, Safari 3, and Opera 9</li>
<li>PHP 5 only</li>
<li><strong>Much more!</strong></li>
</ul>
<p>Create dynamic-easy-to-use data grid controls for your web site in seconds!</p>
<p><a href="http://www.bluefrog.ca/wp-content/uploads/2011/12/ex11.png"><img class="alignnone  wp-image-25" title="ex1" src="http://www.bluefrog.ca/wp-content/uploads/2011/12/ex11.png" alt="" width="498" height="107" /></a></p>
<p><strong>The above datagrid is built in only 6 lines of code!</strong></p>
<pre class="brush: php; title: ; notranslate">
// file: ex1.php
require 'class.eyemysqladap.inc.php';
require 'class.eyedatagrid.inc.php';

// Load the database adapter
$db = new EyeMySQLAdap('localhost', 'root', '', 'people');

$dg = new EyeDataGrid($db); // Load the datagrid class
// Fetch all rows and columns from the `people` table
$dg-&gt;setQuery(&quot;*&quot;, &quot;people&quot;);

// Print the table
$dg-&gt;printTable();
</pre>
<p><strong>You can even make the above example Ajax enabled with 1 line of code!</strong></p>
<pre class="brush: php; title: ; notranslate">
// file: ex1-ajax.php
require 'class.eyedatagrid.inc.php';

// Just call one function and your table is now totally Ajax enabled!
EyeDataGrid::useAjaxTable('ex1.php');
</pre>
<p><strong>Demos</strong></p>
<ul>
<li><a href="http://eyesis.ca/demos/eyedatagrid/ex1.php">Example 1 &#8211; Basic DataGrid</a></li>
<li><a href="http://eyesis.ca/demos/eyedatagrid/ex1-ajax.php">Example 1.5 &#8211; Basic DataGrid WITH AJAX</a></li>
<li><a href="http://eyesis.ca/demos/eyedatagrid/ex2.php">Example 2 &#8211; Filters, Headers, Column Types</a></li>
<li><a href="http://eyesis.ca/demos/eyedatagrid/ex3.php">Example 3 &#8211; More Features</a></li>
<li><a href="http://eyesis.ca/demos/eyedatagrid/ex4.php">Example 4 &#8211; Row Selection</a></li>
<li><a href="http://eyesis.ca/demos/eyedatagrid/ex5.php">Example 5 &#8211; Full Featured Ajax Demo</a></li>
</ul>
<p><strong>Download</strong></p>
<a href='http://www.bluefrog.ca/wp-content/uploads/2011/12/eyedatagrid-1.1.zip' class='icon-button download-icon'><span class='et-icon'><span>Download eyedatagrid-1.1.zip (Dec-8-08)</span></span></a><div class="clear"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluefrog.ca/2008/12/eyedatagrid-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

