Я создаю систему планирования сообщений в блоге с помощью CodeIgniter. Я хочу, чтобы 10 сообщений показывались в день. В таблице posts
с именем scheduled_date
есть поле, в котором я получаю сообщения, которые меньше или равны текущей дате. Когда пользователь admin добавляет новую запись в базу данных, мне нужен оператор SQL, который каким-то образом поможет мне указать количество записей с самой последней датой в базе данных. Например:
// 9 records returned for the date 2011-01-01 $numbers_of_records == 9; if($numbers_of_records == 10){ // inserts record with `scheduled_date`='2011-01-01' }else{ // inserts record with the date latest date +1 day }
Как бы я мог эффективно выполнить это?
Спасибо
Это сделает трюк. Это просто и эффективно.
<?php
// It is very bad to have floating values, especially for settings
// it is good to use some sort of factory or settings class
$maxDailyPosts = (int) SettingsFactory::getSettings()->get('maxDailyPosts');
$date = '2011-01-01';
// Load # of post for data
$numberOfRecords = (int) getNumberOfPostPerDate($date);
// Figure out the interval for increment
$dayInterval = ($numberOfRecords >= $maxDailyPosts ) ? 1 : 0;
//
$query = "INSERT INTO tbl (publish_date, ...) VALUES (DATE_ADD('$date', INTERVAL $dayInterval DAY), ...)";
?>