SWF is the file format used by Macromedia Flash to deliver graphics, animation and
sound to users on the Internet. Flash enables you to provide a very rich and dynamic interface to the user.
Almost 90% of web users can view SWF content without having to install a browser based plug-in, and over
200 million people have downloaded the Flash player. Macromedia opened the specifications for SWF in
April 1998 and SWF support was added to PHP in PHP 4(rc2).
PHPs built-in ability to dynamically create images is one feature that impresses me. It makes reports
and interfaces look much more professional and visually pleasing. Initially, I used the various GD
code floating around the net to create the graphs I needed to better represent data for various projects
I had done. I got really sick of the aliasing and choppyness of the generated images, so decided to try
and see if it could be done with vector graphics instead. I think you will agree that the result looks
much better. If a picture is worth a thousand words, wonder what a Flash movie is worth?
In this example, I try to keep things simple and just present the basics. My goal was basically
just create a drop in for GD generated GIFs and PNGs. You can choose to add enhancements, such as any
of the visual effects Flash is famous for. For example, you could make the graph fade in, fly around
into place when the page is loaded or pull pieces of the pie out dynamically. Your imagination is the
only limitation to what can be done with the PHP SWF functions.
How you get the data you choose to graph is an exercise best left up to the reader. Since this
article is about dynamic creation of flash files, I will be using an imaginary table as a data set
to create a graphical representation for this example. You will need to intelligently look at your
data and decide what the best way to present this data will be. In most of the cases, I have
found a pie graph to fit the bill, so this is the example I will use. A line, bar or area graph could
easily be created in a similar manner.
Assume we are trying to see what proportion of cities we shipped our packages of jumbo nightcrawlers to.
We decide to store this data in a table called "city" in our database called "world". Let's get to work
setting up a database table and enter data for the example.