web-dev-qa-db-fra.com

Aide avec Pager

J'utilise le Drupal 7 et je veux utiliser le pager dans ma requête

Ceci est ma requête et la façon dont je peux utiliser

$qury = db_select("SELECT `entity_id` , `field_keywords_value` , COUNT( DISTINCT ( `entity_id` )) total 
FROM `field_data_field_keywords`
WHERE `bundle` = 'song' 
GROUP BY `field_keywords_value`");

$query = $qury->extend('PagerDefault'); 
        $result = $query
  ->extend('PagerDefault')
  ->limit(2)
  ->execute();

mais cela me donne l'erreur, PDOException: erro

Et si je peux l'utiliser de la manière suivante:

$qury = db_query("SELECT `entity_id` , `field_keywords_value` , COUNT( DISTINCT ( `entity_id` )) total FROM `field_data_field_keywords` WHERE `bundle` = 'song'
                GROUP BY `field_keywords_value`");
$query = $qury->extend('PagerDefault'); 
$result = $query
  ->extend('PagerDefault')
  ->limit(2)
  ->execute();
echo "<pre>";
print_r($result);
die('tert');

Ensuite, ma page ne fonctionne pas et donnez-moi la page vierge.

Toute aide serait appréciée.

6
user1773435

Vérifiez d'abord quelle version Drupal vous utilisez

si vous utilisez Drupal 7 l'utilisation voir l'exemple ci-dessous donné

    <?php
$result = db_select('table_name', 'table_alias')
    ->fields('table_alias',array('column_name1', 'column_name2', 'column_name1', .....))//SELECT the fields from user
    ->condition('type', 'article')
    ->extend('PagerDefault')
    ->limit(10)  // Set the limit per records
    ->orderBy('created_date', 'DESC')//ORDER BY created or 
    ->execute()
    ->fetchAssoc();
?>

Voir plus d'exemples sur

http://api.drupal.org/api/drupal/includes!database!database.inc/function/db_select/7

4
Ravindra Singh

Un exemple Drupal 7 requête avec jointures, conditions, limite et pagination:

$query = db_select('table_name1', 't1');
$query->join('table_name2', 't2', 't.id = t2.tid');
$query
->fields('t1', array('column1', 'column2', 'column3'))
->fields('t2', array('column1'))
->condition(db_or()->condition('t1.column2', '%' . db_like($match) . '%', 'LIKE')
                              ->condition('t2.column1', 'string', '=')
);

if($user->uid > 0) { $query->condition('t2.column2', '1', '='); } // only for logged in user

$query->groupBy('t1.id');
$search_results = $query->extend('PagerDefault')->limit(5)->execute(); // set pagination
1
shasi kanth

Vérifiez module d'exemples comment le pager est donné ici.

Vous utilisez select dans select query. Donc, c'est une erreur d'exception.

Pour exécuter des requêtes SQL telles quelles, utilisez db_query (). ex: - db_query ("select emmpno from emp") Pour exécuter db_select (), nous devons suivre les normes Drupal. ex: - $ query = db_select ('emp', 'e'); $ result = $ query-> fields () -> execute ();

Pas de sélection dans une sélection.

1
Dharmender

J'ai résolu le problème au revoir

 $query = db_select('field_data_field_keywords')->extend('PagerDefault'); 
 $query->fields('field_data_field_keywords', array('field_keywords_value', 'entity_id'));    
 $query->condition('bundle', 'song');  $query->condition('field_keywords_value', arg(2)); 
 $query->distinct('entity_id');
 $result = $query ->limit(1)->execute()->fetchAll();

espérons que cela sera utile pour quelqu'un qui est nouveau dans D7.

0
user1773435

// $ list est la liste des éléments que vous parcourez

$ list = array ('Cat', 'Dog', 'Mouse', 'Horse', 'Pony', 'Winged mongoose'); $ per_page = 2;

// Initialise le pager

$ current_page = pager_default_initialize (count ($ list), $ per_page);

// Divisez votre liste en morceaux de la taille d'une page

$ chunks = array_chunk ($ list, $ per_page, TRUE);

// Afficher le pager

thème d'impression ('pager', tableau ('quantité', count ($ list)));

// Afficher les éléments appropriés de la liste

thème d'impression ('item_list', array ('items' => $ chunks [$ current_page],));

0
Paulraj