Не отображается pager

Главные вкладки

Аватар пользователя gumk gumk 7 июля 2010 в 0:27

Добрый вечер, почему-то не работает 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)

Комментарии

Аватар пользователя tornadoxxxl tornadoxxxl 7 июля 2010 в 11:53

Попробуйте так:

function example() {
  /* Не вижу Вашего запроса как понял он в $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;
}
Аватар пользователя tornadoxxxl tornadoxxxl 7 июля 2010 в 18:03

"gumk" wrote:
все равно не отображается

Вот Вам простой, рабочий (даже проверил его) пример pager-a

function example() {
  $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;
}
Аватар пользователя gumk gumk 9 июля 2010 в 23:44
<?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 файл вызывается

Аватар пользователя tornadoxxxl tornadoxxxl 19 июля 2010 в 11:35

"gumk" wrote:
вот такое у меня не работает почему-то, самое интересное что выводиться все, кроме пейджера.

[ru-api=pager_query]pager_query[/ru-api] - Почитайте "Пользовательские комментарии" там хорошо описано, что можно 4 параметром передать запрос с подсчетом количества значений.
Скорей дело в этом (запрос у Вас скажем не такой простой и скорей всего функция сама не может получить правильно количество значений)