Posts in the “php” category

A Smarty templates object array example

Smarty templates object array FAQ: How can I display an array of objects with Smarty templates?

I just wasted about thirty minutes trying to figure out how to display an array of objects with Smarty templates, so I thought I'd share the solution here. I'll include my PHP class, some of the PHP logic that builds the Smarty variables (my Smarty object array), and then a portion of the Smarty template that displays my PHP object array.

A PHP char_at function

PHP FAQ: Is there a PHP char_at or charAt function, like there is in other languages?

No, there isn't, but you can easily mimic a PHP charAt function like this:

$char = $my_string{4};

That's equivalent to having a charAt function like this:

$char = charAt($my_string, 4);

or this:

A PHP last character function

PHP string FAQ: Can you share some source code for a PHP last character function (string function)?

Sure, I just developed a PHP last character function for an app I'm working on, and here's the source code for that function, aptly named last_char:

# a php last character function
function last_char($str)
  $len = strlen($str);
  return char_at($str, $len-1);

As you can tell from the code, it returns the last character from a PHP string.

A PHP preg_match integer regex pattern matching example

PHP integer FAQ: Can you demonstrate a regular expression pattern to match an integer?

Interestingly, while reading a book titled Advanced PHP Programming, the author mentions that the PHP is_int function doesn't work exactly the way you expect it to. It just tests to see whether a given variable is typed as an integer or something else, so if you give it a string like "123", it will return false. This is a bad thing when you're trying to test web form data, for example.

Free Flash charts and graphs (PHP charts)

Free PHP Flash charts FAQ: What do you know about Flash charts (Flash charts and graphs tools that can be used in PHP applications), especially free Flash charting and graphing tools (or interactive charts and graphs)?

As I keep digging into free PHP charts and graphs tools, I've found that several of these tools special in "Flash charts", typically interactive Flash charts. Here's a quick review of what I've learned about these Flash charts.

Free PHP Flash charts and graphs tools (Open Source)

Open Flash Chart Project

CakePHP Auth login - User login information

CakePHP Auth user login FAQ: Help, how do I get access to the CakePHP user object (user information) after using the CakePHP Auth component for the recommended CakePHP user login process?

CakePHP find conditions (plus find all, find list, and find count)

CakePHP find FAQ: Can you share some "CakePHP find conditions" examples?

One thing you need to get used to when working with CakePHP is the CakePHP find method. To that end, I thought I'd put together this page of CakePHP find conditions and find query examples.

CakePHP find conditions

To get started, here's a list of the possible CakePHP find conditions you can use:

CakePHP field required validation rule

CakePHP field required validation rule - How to make a CakePHP view field a required field.

I'm still very new to CakePHP, and as a result I just spent thirty minutes fighting with a CakePHP field required rule. In short, if you want a text field to be required, your CakePHP validation rule should look something like this:

CakePHP jQuery - A default input focus onLoad solution

CakePHP jQuery FAQ: How do I get jQuery to work with CakePHP? (For example, to put default input focus on a textfield when a page loads (the onload event)).

If you haven't already done it, the first thing you need to do is install jQuery to work with CakePHP. Here's a quick CakePHP jQuery installation primer.

CakePHP jQuery installation/configuration

Before beginning, it is important to note that I'm working with CakePHP version 1.3.6, and jQuery version 1.4.4.

A CakePHP multiple layouts solution

CakePHP multiple layouts FAQ: How do I use multiple layouts in CakePHP? Also, is there an easy way to switch between different layouts in my CakePHP controllers?

To use multiple layouts in CakePHP, the CakePHP docs tell us to switch layouts in our CakePHP controller functions (actions), like this:

A CakePHP readonly text field

CakePHP readonly text field FAQ: Can I make a readonly textfield in CakePHP (a CakePHP Form input field, or Form text field)?

I haven't worked it all out yet, but I first tried to create a CakePHP readonly text field like this, using the CakePHP Form text object, which doesn't seem to work:

# this doesn't work
echo $this->Form->text('complexity', array('readonly' => 'readonly'));

When that failed I kept poking on the CakePHP Form input object, and was able to create a readonly text field like this:

CakePHP, Drupal, and LAMP/PHP job market - 2011

CakePHP and Drupal jobs, 2011 - Way back in December, 2009, I first started looking at the PHP job market, specifically CakePHP, Drupal, and LAMP/PHP job openings. I forgot to run the queries again this past December, but I just took a few moments to update them, so ... here is a quick look at the PHP developer job market in January, 2011.

Did Drupal account for all new PHP jobs in the last year?

I wish I had more statistics to look at this, but at a preliminary glance, it looks like Drupal has accounted for all new PHP job openings in the last twelve months. I just published a little CakePHP, Drupal, and LAMP PHP jobs survey, and while the good news is that the PHP job market appears to have grown well in the last twelve months, the case can be made -- based on these statistics -- that Drupal accounted for almost all of the new PHP job openings.

CakePHP require, notEmpty, allowEmpty, and form validation

CakePHP require, notEmpty, and allowEmpty FAQ: Help, I'm trying to edit my CakePHP model $validate field to make sure a CakePHP form field is required, but 'require' doesn't seem to be working as expected.

After fighting with a CakePHP form I just got this information beat into my head, so I thought I'd share it here. In short, if you want to make a CakePHP form field required, what you really want to use is the CakePHP notEmpty rule, like this:

The CakePHP form save, validate, and debug problem

CakePHP form save/validate/debug FAQ: How do I debug problems in the CakePHP form save/validate process?

One problem I've run into with CakePHP is that while the form validation approach works very well 95% of the time, when it fails it can be very hard to debug. Because the form validation process happens when you invoke the save() method, much of this debugging process seems to be out of your control.

A CakePHP jQuery fade out flash success message

CakePHP flash fade out success messages: If you'd like to show fade out success messages in your CakePHP applications using jQuery, like the ones currently used by applications such as Twitter and Facebook, I thought I'd share the formula I came up with this weekend. While it includes touching a few different files, it's pretty easy, and once you've done the basic setup work you can display CakePHP fade out success messages in all of your web pages, and web applications.

A CakePHP SQL UPDATE example

CakePHP SQL UPDATE FAQ: How do I perform a SQL UPDATE with CakePHP?

As I was writing a user registration process for a CakePHP application, I just found myself in a situation where I needed to write a CakePHP SQL UPDATE query. While you don't pay attention to it, you often run a SQL UPDATE query in CakePHP in a typical controller edit() function, but this was the first time I really had to do this manually.

The short answer is that you execute a SQL UPDATE query in CakePHP using the usual model save() method. The way the save method work is like this:

CakePHP web testing - deleting database test data

CakePHP delete database test data FAQ: How can I delete CakePHP test data from my database in automated CakePHP unit and web tests (integration tests)?

I recently created a large set of CakePHP unit tests and CakePHP web tests (essentially integration tests), and as part of thorough testing, I needed to be able to create some user accounts and insert some test data into the database.