Добрый вечер, почему-то не работает pager
в модуле добавляю
<?php$result2 = pager_query(db_rewrite_sql($sql2), 10 , 0, NULL, $arg);
$has_posts = FALSE;
while ($data2 = db_fetch_object($result2)) {
$out .= theme('user_love_list', $data2);
$has_posts = TRUE;
}
if ($has_posts) {
$out .= theme('pager', NULL, 10, 0);
}
return $out;
}?>
Информация отображается, а pager нет (записей в базе намного больше чем 10)
Комментарии
Попробуйте так:
/* Не вижу Вашего запроса как понял он в $sql2 */
$result2 = pager_query(db_rewrite_sql($sql2), 10 , 0, NULL, $arg);
$results = array();
while ($data2 = db_fetch_object($result2)) {
$results[] = $data2;
}
$out = theme('user_love_list', $results);
return $out;
}
// Не нужно в цикле каждый раз вызывать функцию темы просто в ней пройдитесь по результатам
function theme_user_love_list ($results) {
$output = '';
foreach ($results as $value) {
// Тут выводите как Вам нужно $output .= $value->нужное_значение; или темизируете как необходимо.
}
$output .= theme('pager');
return $output;
}
Поробуй тему pager-a выводить просто как theme('pager'), без дополнительных параметров.
все равно не отображается
Вот Вам простой, рабочий (даже проверил его) пример pager-a
$output = '';
$sql = ("SELECT name FROM {users} ORDER BY name ASC");
// Выведем логины пользователей на сайте
$result = pager_query(db_rewrite_sql($sql), 10 , 0);
// Выведет 10 на странице начиная с первого
while ($data = db_fetch_object($result)) {
$output .= $data->name . '<br>';
// чтоб не регистрировать функцию темы - прям здесь добавил HTML
}
$output .= theme('pager');
return $output;
}
<?php$sql2 = "SELECT lov.uid AS uid,
((%d IN (lov.c1, lov.c2)) + (%d IN (lov.c1, lov.c2)) +
(%d IN (lov.b1, lov.b2)) + (%d IN (lov.b1, lov.b2)) +
(%d IN (lov.a1, lov.a2)) + (%d IN (lov.a1, lov.a2))) AS relev,
realname.realname AS realname_realname,
user.picture AS users_picture,
profile_values_profile_gorod.value AS profile_values_profile_gorod_value,
profile_values_profile_data.value AS profile_values_profile_data_value
FROM {love} lov
LEFT JOIN {users} user ON user.uid = lov.uid
LEFT JOIN {realname} realname ON lov.uid = realname.uid
LEFT JOIN {profile_values} pr ON pr.uid = lov.uid
LEFT JOIN profile_values profile_values_profile_gorod ON user.uid = profile_values_profile_gorod.uid AND profile_values_profile_gorod.fid = '4'
LEFT JOIN profile_values profile_values_profile_data ON user.uid = profile_values_profile_data.uid AND profile_values_profile_data.fid = '8'
WHERE pr.value = %b AND pr.fid = 3 AND user.status > 0
ORDER BY relev ASC";
$out = '';
// Выведем логины пользователей на сайте
$result = pager_query(db_rewrite_sql($sql2), 5 , 0, NULL, $a1, $a2, $b1, $b2, $c1, $c2, $pol);
// Выведет 10 на странице начиная с первого
while ($data2 = db_fetch_object($result)) {
$out .= $data2->uid.'</br>';
// чтоб не регистрировать функцию темы - прям здесь добавил HTML
}
$out .= theme('pager');
return $out;?>
вот такое у меня не работает почему-то, самое интересное что выводиться все, кроме пейджера.
если подставить ваш запрос то выводит пейджер.
Кстати почему не нужно в цикле каждый раз вызывать функцию темы просто в ней пройдитесь по результатам? у меня просто в функции темц tpl файл вызывается
[ru-api=pager_query]pager_query[/ru-api] - Почитайте "Пользовательские комментарии" там хорошо описано, что можно 4 параметром передать запрос с подсчетом количества значений.
Скорей дело в этом (запрос у Вас скажем не такой простой и скорей всего функция сама не может получить правильно количество значений)