Вы получаете сегодняшнюю дату, потому что mktime () не возвращает правильное значение. Если вы проверите ввод вручную для mktime () - http://www.php.net/mktime - вы увидите, что порядок параметров такой:
mktime ($hour, $minute, $second, $month, $day, $year)
так что вы, вероятно, хотите:
$orgdate = date("l dS F Y", mktime(12, 0, 0, $mon, $day, $year));
Ваш код предполагает, что дата указана в формате ГГГГММДД (или ГГГГММДДЧЧИИСИ). Предполагая, что это правильно, и на самом деле это не в формате даты (ГГГГ-ММ-ДД), вышеизложенное должно решить вашу проблему.
Редактировать: Если даты указаны в формате ГГГГ-ММ-ДД, вам необходимо настроить подстроки, чтобы включить тире:
$year = substr($db_date, 0, 4);
$mon = substr($db_date, 5, 2);
$day = substr($db_date, 8, 2);