Вы сравниваете даты в виде строк. Вы сравниваете что-то вроде 30.12.2011 с чем-то вроде 12/11/2011 или чем-то еще. PHP может и будет делать это, но будет воспринимать их как строки.
Основная странность заключается в том, что 0 не подразумеваются, как в случае числовых типов.
Кроме того, ваши форматы даты не будут совпадать. MySQL возвращает что-то вроде 2011-12-30, тогда как ваше strftime будет делать что-то вроде 30/12/2011.
Попробуйте что-то вроде
$c_date_stamp = strtotime($c_date);
$today = strtotime('today');
if($c_date_stamp <= $today) { }
Это преобразует даты в метки времени Unix перед сравнением. Другим вариантом было бы оставить их в виде строки, но надоело задумываться о возможных последствиях.
Например, если вы делаете это в строковой форме, величина частей даты должна быть в порядке убывания:
if($c_date <= date('Y-m-d'))
Также обратите внимание, что если один использует ведущий ноль в дни <10, другой должен сделать это тоже. </p>