| Credits | p. xi |
| Preface | p. xv |
| Installation and Basics | p. 1 |
| Install PHP | p. 1 |
| Install PEAR Modules | p. 12 |
| Web Design | p. 16 |
| Create a Skinnable Interface | p. 16 |
| Build a Breadcrumb Trail | p. 20 |
| Create HTML Boxes | p. 24 |
| Add Tabs to Your Web Interface | p. 29 |
| Give Your Customers Formatting Control with XSL | p. 33 |
| Build Lightweight HTML Graphs | p. 35 |
| Properly Size Image Tags | p. 38 |
| Send HTML Email | p. 40 |
| DHTML | p. 44 |
| Put an Interactive Spreadsheet on Your Page | p. 44 |
| Create Pop-Up Hints | p. 47 |
| Create Drag-and-Drop Lists | p. 49 |
| Build Dynamic HTML Graphs | p. 52 |
| Section Your Content with Spinners | p. 58 |
| Create Drop-Down Stickies | p. 61 |
| Create Dynamic Navigation Menus | p. 64 |
| Obscure JavaScript Dynamically | p. 67 |
| Build a DHTML Binary Clock | p. 69 |
| Tame Ajax with JSON | p. 73 |
| Make a DHTML Slideshow | p. 76 |
| Add Vector Graphics with PHP | p. 79 |
| Build a Color Selector | p. 81 |
| Create Link Graphs | p. 85 |
| Create an Interactive Calendar | p. 88 |
| Create the Google Maps Scrolling Effect | p. 93 |
| Graphics | p. 101 |
| Create Thumbnail Images | p. 101 |
| Create Beautiful Graphics with SVG | p. 104 |
| Simplify Your Graphics with Objects | p. 107 |
| Split One Image into Multiple Images | p. 115 |
| Create Graphs with PHP | p. 120 |
| Create Image Overlays | p. 123 |
| Access Your iPhoto Pictures with PHP | p. 126 |
| Databases and XML | p. 142 |
| Design Better SQL Schemas | p. 142 |
| Create Bulletproof Database Access | p. 147 |
| Create Dynamic Database Access Objects | p. 149 |
| Generate CRUD Database Code | p. 155 |
| Read XML on the Cheap with Regular Expressions | p. 165 |
| Export Database Schema as XML | p. 168 |
| Create a Simple XML Query Handler for Database Access | p. 170 |
| Generate Database SQL | p. 172 |
| Generate Database Select Code | p. 175 |
| Convert CSV to PHP | p. 180 |
| Scrape Web Pages for Data | p. 184 |
| Suck Data from Excel Uploads | p. 190 |
| Load Your Database from Excel | p. 194 |
| Search Microsoft Word Documents | p. 199 |
| Create RTF Documents Dynamically | p. 202 |
| Create Excel Spreadsheets Dynamically | p. 207 |
| Create a Message Queue | p. 211 |
| Application Design | p. 216 |
| Create Modular Interfaces | p. 216 |
| Support Wiki Text | p. 221 |
| Turn Any Object into an Array | p. 224 |
| Create XML the Right Way | p. 227 |
| Fix the Double Submit Problem | p. 230 |
| Create User-Customizable Reports | p. 234 |
| Create a Login System | p. 237 |
| Apply Security by Role | p. 241 |
| Migrate to MD5 Passwords | p. 249 |
| Make Usable URLs with mod_rewrite | p. 253 |
| Build an Ad Redirector | p. 258 |
| Add a Buy Now Button | p. 262 |
| Find Out Where Your Guests Are Coming From | p. 271 |
| Import Information from vCards | p. 273 |
| Create vCard Files from Your Application's Data | p. 275 |
| Create a Shopping Cart | p. 277 |
| Patterns | p. 286 |
| Observe Your Objects | p. 287 |
| Create Objects with Abstract Factories | p. 290 |
| Flexible Object Creation with Factory Methods | p. 294 |
| Abstract Construction Code with a Builder | p. 296 |
| Separate What from How with Strategies | p. 300 |
| Link Up Two Modules with an Adapter | p. 303 |
| Write Portable Code with Bridges | p. 307 |
| Build Extensible Processing with Chains | p. 309 |
| Break Up Big Classes with Composites | p. 314 |
| Simplify APIs Using a Facade | p. 316 |
| Create Constant Objects with Singletons | p. 321 |
| Ease Data Manipulation with Visitors | p. 324 |
| Testing | p. 329 |
| Test Your Code with Unit Tests | p. 329 |
| Generate Your Unit Tests | p. 331 |
| Check for Broken Links | p. 335 |
| Test Your Application with Simulated Users | p. 337 |
| Test Your Application with Robots | p. 342 |
| Spider Your Site | p. 347 |
| Generate Documentation Automatically | p. 351 |
| Alternative UIs | p. 355 |
| Create Custom Maps with MapServer | p. 355 |
| Build GUI Interfaces with GTk | p. 365 |
| Send RSS Feeds to Your IM Application Using Jabber | p. 369 |
| IRC Your Web Application | p. 376 |
| Read RSS Feeds on Your PSP | p. 379 |
| Search Google by Link Graph | p. 382 |
| Create a New Interface for Amazon.com | p. 388 |
| Send SMS Messages from Your IM Client | p. 392 |
| Generate Flash Movies on the Fly | p. 396 |
| Fun Stuff | p. 406 |
| Create Custom Google Maps | p. 406 |
| Create Dynamic Playlists | p. 412 |
| Create a Media Upload/Download Center | p. 415 |
| Check Your Network Game with PHP | p. 419 |
| Put Wikipedia on Your PSP | p. 422 |
| Create a Weather Showdown | p. 430 |
| Index | p. 433 |
| Table of Contents provided by Ingram. All Rights Reserved. |