2010-09-21 14 views
0

Je crée un système de planification de post de blog en utilisant CodeIgniter. Je veux que 10 messages apparaissent un jour. Il y a un champ dans la table posts nommé scheduled_date dont j'obtiendrai les messages qui sont inférieurs ou égaux à la date actuelle. Quand un utilisateur admin ajoute un nouvel enregistrement à la base de données, j'ai besoin d'une instruction SQL qui m'aidera COUNT nombre d'enregistrements avec la dernière date dans la base de données. Par exemple:MySQL - Système de planification de poste de blog

 
// 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 
} 

Comment est-ce que j'accomplirais efficacement ceci?

Merci

Répondre

0

Cela fera l'affaire. C'est simple et efficace.

<?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), ...)"; 

?>