Recently while randomly browsing I came across a method of displaying multiple tabs using only HTML and CSS (see here for the explanation or here for an amazing demo). This presented an interesting concept – tabs with no JavaScript. There are quite a few drawbacks but in the right conditions this could be a good addition to your site.
Remove JQuery from WordPress Frontend
Earlier tonight I wanted to remove the ancient version of JQuery automatically loaded on the WordPress front end and replace it with the much speedier latest version (currently 1.4.2). This turned out to be more difficult than planned, however after a bit of scrounging I found the solution; add the following code to your template’s functions.php file:
if( !is_admin() )
{
wp_deregister_script('jquery');
//Add latest JQuery back into header. Comment this line out to remove JQuery alltogether
wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"), false, '1.4.2');
wp_enqueue_script('jquery');
}
Enjoy your blazingly fast JavaScript experience 🙂
PHP Web Socket Chat Application
UPDATE 15 Feb 2012: This post is woefully out of date. See my new PHP WebSocket Chat Application 2.0 post for a working tutorial compatible with the latest WebSocket spec as of Feb 15, 2012.
Today I’ll be doing an in-depth tutorial on how to create a simple, real-time chat application with HTML5 web sockets.
Disclaimer: Due to the relative infancy of web socket technology, this tutorial will currently only work on Google Chrome and the spec isn’t finalized yet so it may break in the future (specifically during the handshake phase).
UPDATE Nov 14, 2010: Since the writing of this post, the handshake spec has changed in such a way that browsers requiring the new spec will return the error code INVALID_STATE_ERR upon connection. I checked the PHPWebSocket page for an updated version but it looks like the developer hasn’t released one yet so instead I now recommend using Bohuco’s excellent websocket script instead.
Get Notification on Website Visit
This tutorial will show *nix users how to get a nice notification displaying on their screen when people visit their site using a PHP and a Python script. This isn’t practical for sites with large numbers of visitors but it’s great for people running small sites on their local machines.
Installing BackendPro on Multi-Site CodeIgniter
Out of the box, CodeIgniter only supports MVC. This tutorial explains how to add HMVC to CodeIgniter by installing BackendPro 0.6.1 into a Multi-Site CodeIgniter 1.7.2 installation for some nice, modular goodness.
Integrating Doctrine Into WordPress
WordPress is great on its own but if you want to do alot of database work with it you’ll quickly realize how frustratingly limited the wpdb class is. In this tutorial I’ll show how to integrate Doctrine into WordPress through the use of a plugin and make your developing life so much easier.
PHP – Including All Files in a Directory
Including every file in a specific directory automatically is a useful way of auto-loading classes in PHP. This could be done manually of course but we’re developers and we’re lazy so here’s a better solution utilizing PHP’s glob() function:
<?php
foreach( glob(dirname(__FILE__) . '/classes/*.php') as $class_path )
require_once( $class_path );
In this script, glob() searches for all pathnames matching the given pattern (In this case all files with a .php extension in the ‘classes/’ directory). Please note that if glob() doesn’t find any matches it will return false instead of the expected array, so unless you’re iterating over its results with a function that checks for this – such as foreach – either typecast or perform some other form of validation before use. You’ve been warned.
UPDATE 15 May 2010: Found this informative article related to the various ways of loading all files in a directory and their respective speeds – performance matters, people!.
Importing/Exporting CSV files with MySQL
A common request with MySQL is to import/export CSV files. CSVs are merely delimited text files and so this is relatively easy to accomplish. To import we’ll be using a LOAD DATA query and for exporting the mysqldump tool bundled with MySQL. We’ll be delimiting our CSV with commas and enclosing each field with double quotation marks.
Scientific Notation Bug in PHP
There is a bug in some version of PHP causing large integers to print in scientific notation. Here’s how to replicate:
<?php
$i = 6395360031312041;
echo $i; //Outputs: 6.39536003131E+15
There is a quick and easy fix for this – simply number_format your integer whilst printing like so:
<?php
$i = 6395360031312041;
echo number_format($i, 0, '.', ''); //Outputs: 6395360031312041
This issue has been fixed in the latest version of PHP 5.2 (as of the time of writing that’s PHP 5.2.12).
MySQL – Returning Rows in a Specific Order
The MySQL ORDER BY clause let’s you easily order in fields in ascending or descending order however occasionally you’ll want to have a specific order
Take for instance if you have a list of products on a sales site ordered by name. Your boss tells you he wants to show one (or several) products before all others on the page. At this point you have 2 options – add a ‘special’ column in the table and do an ORDER BY special, name – which would only work if he wanted these special products in alphabetical or reverse alphabetical order – or use a UNION with multiple SELECT queries. Neither are great options. This is where the FIELD() function comes in.
The rows ordered by FIELD() will appear at the end of your table, so to get them appearing at the top just add DESC and put enter your FIELD() arguments in reverse order. All rows not specifically ordered with FIELD() will remain unordered unless specified otherwise. Here’s an example.
If the ID of the products your boss wants to appear first are 36, 40, 12 respectively, we can order like so:
SELECT *
FROM products
ORDER BY FIELD(id, 12, 40, 36) DESC, name
There is no limit to the number of arguments you can add and they must be the same data type as your field.