An Extensive Examination of the PHP:DataGrid Component: Part 1 by
Dennis Pallett
An Extensive Examination of the PHP:DataGrid Component: Part 1
<span style="font-weight:bold; font-size:
1.2em">Introduction</span> One of the most common tasks in PHP is
retrieving data from a database table, and creating a HTML table to output that
data. It's done in almost every project, and it's usually a really boring task,
because the code is always nearly the same, but not just same enough to be able
to copy it.
It often looks some like this (in pseudo-code):
Create database connection
Get data from a table
Output table header (<table)
Loop through each records
... output tr's and td's ...
Output table footer (</table>)
It's a sad fact, but we've already written code like the above hundreds of
times. And for every project and script, you have to do it again, again and
again.
But why not use a solution that can do it for us? That's exactly what
PHP:DataGrid is.
<span style="font-weight:bold; font-size: 1.2em">What is
PHP:DataGrid?</span>
PHP:DataGrid is the answer to the above problem. It's basically a PHP
component, that's very similar to the ASP.NET DataGrid control. PHP:DataGrid
will take care of all the boring tasks leaving you the easy and interesting
parts. Very little PHP code is actually necessary for PHP:DataGrid, and you can
change its looks and layout using simple HTML tags.
The only downside of PHP:DataGrid is that it's not free. You have to purchase
it from TPG PHP
Scripts, but it's $24.99 for a Developer license, which grants you
permission to use it in all your personal projects, and I certainly believe
that the advantages far outweigh the cost. Even only the time saved by
PHP:DataGrid is already worth the cost for me. (editor's note: use coupon code phpit
for a 10% discount!).
Let's have an actual look at PHP:DataGrid. If you don't want to purchase the
component yourself, then you can always have a look at the demo's only.
<span style="font-weight:bold; font-size: 1.2em">The Basics</span>
To create a new datagrid, we must use the php:datagrid tag. This tells the
PHP:DataGrid component that a datagrid must be shown. The only thing that we
must set is the name of the datagrid. This is a required attribute, and cannot
be left out. A simple datagrid looks like this:
<php:datagrid name="test"></php:datagrid>
That's the only thing necessary to display a datagrid. But we're forgetting one
thing - we haven't binded any data to the datagrid yet. If you forget to do
this, nothing will be displayed, except for an error.
<span style="font-weight:bold; font-size: 1.2em">Binding
Data</span> Binding data to a datagrid is really easy, and requires only
one line of real PHP code. The PHP:DataGrid component automatically creates a
variables called $_DATAGRID (not a
superglobal, unfortunately). To bind data, you have to call the bind()
method on the $_DATAGRID variable, like so:
$_DATAGRID->bind('test', $data);
That's all! The test datagrid will now be shown, with the data contained in the
$data variable. The $data variable must be an array that was retrieved using
mysql_fetch_array() and a loop (see the datagrid example below if you're unsure
about this) or similar format. In any case, it should look like this:
Array
(
[0] => Array
(
[id] => 1
[title] => Item 1
[category] => 4
)
[1] => Array
(
[id] => 2
[title] => Item 2
[category] => 7
)
[2] => Array
(
[id] => 3
[title] => Item 3
[category] => 3
)
)
The above is a valid $data array. It won't accept any other format, and an
error will be shown if you do bind a different format.
<span style="font-weight:bold; font-size: 1.2em">An Example</span>
The below code is a working example of a simple datagrid. It retrieves the 10
latest tutorials from the PHPit.net database, and shows it in a datagrid.
<?php
// Include PHP:DataGrid
include ('/path/to/phpdatagrid.php');
// Connect to database$link = mysql_connect ('localhost', 'sa', '[db-pass]');
// Select databasemysql_select_db('phpit', $link);
// Do query and Get data$result = mysql_query ("SELECT title, description,
author, datetimestamp,
filename FROM tutorial ORDER BY datetimestamp DESC LIMIT 0, 10"); $data =
array();while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {array_push
($data, $row);}
// Bind data (THIS IS IMPORTANT)$_DATAGRID->bind ('test', $data);
?> <html><head><title>PHP:DataGrid Demo
1</title></head>
<body> <h1>PHP:DataGrid Demo 1</h1><p>Demonstrating a
simple PHP:DataGrid, and nothing more.</p>
<php:datagrid name="test"></php:datagrid>
<br /><a href="http://www.phpit.net/article/datagrid-1/";><strong>«
Return to the article</strong></a></body> </html>[
View live demo ]
As you can see little code is used for the datagrid. Most of the code is
actually spent on connecting to the MySQL database, and getting the data. If
you use any kind of database class, this will be significantly easier.
If you have a look at the datagrid, you will notice that it looks ugly, and
pretty bad. That's because we haven't added any styling at all. But that will
have to wait until Part 2 of our DataGrid series.
<span style="font-weight:bold; font-size: 1.2em">Summary</span> In
this part of our DataGrid series, we've looked at the basics of the
PHP:DataGrid component: what it is, and how to put it on our website. But it
doesn't look pretty yet, and in the next parts we'll be looking at creating a
pretty datagrid, and talk about more of its functions (e.g. templates, inline
editing, sorting and more!).
Click here to
view the PHP:DataGrid Product Page Don't forget - use coupon code phpit
for a 10% discount!
About the Author
Dennis Pallett is a young web developer, currently still studying. He owns
several websites, including PHPit (http://www.phpit.net)
and WebDev-Articles (http://www.webdev-articles.com).
If you would like to reach him, you can contact him at writing@nocertainty.com
|