Делаю постраничный вывод, при просмотре записи, в базу должен записываться количество просмотров, т.е. делаться инкремент. При просмотре всех страниц, кроме 1, все записывается нормально, но для записей с 1 страницы выполняется инкремент при просмотре любой страницы. Т.е при просмотре 2, 3.. страниц также срабатывает запрос на инкремент для 1. Но просмотр 3 страницы вызывает инкремент 3 и 1, 2 не инкрементируется. Не могу понять, чем это вызвано
while(...)
{
...
$result = db_query('UPDATE {content_type_tabel} SET field_show_value=%d WHERE nid = %d', $viewed, $nid);
}
$output .= theme('table', $header, $rows);
$output .= theme('pager', NULL, 50, 0);
Комментарии
хм. попробуйте сделать как написал ниже. Должно работать и кол-во запросов update сократится с 50 до 1:
$viewed_nids = array();
// Флажок "просмотрена хотябы 1 нода"
$viewed_nids_count = FALSE;
pager_query(...);
while(...) {
...
$viewed_nids[] = $nid;
$viewed_nids_count = TRUE;
}
if ($viewed_nids_count) {
// Инкрементируем те записи, ноды которых были просмотрены
db_query('UPDATE {content_type_tabel} SET field_show_value=field_show_value+1 WHERE nid IN ('. implode(',', $viewed_nids) .')');
}
$output .= theme('table', $header, $rows);
$output .= theme('pager', NULL, 50, 0);
и еще было бы полезно сделать print_r($viewed_nids) где-нить перед "$output .= theme('table'"... для проверки на странные nid...