query

Problema de paginação usando Offset do postgresql

Utilizando o pager do doctrine observei uma inconsistência nos resultados paginados, e ao pesquisar descobri o seguinte:

o paginator gerava o código:

SELECT ... ORDER BY weight DESC LIMIT 10 OFFSET 10

acontece que o mesmo registro que aparece na página 2 aparecia também na página 5, isso porque o Offset do postgres necessita obrigatóriamente de um order by único para o offset funcionar corretamente.

Meus registros estavam todos com o weight = 0, ou seja, não havia uma ordem única e fazia com que a paginação não funcionasse corretamente.

paginação no drupal

Vou mostrar rapidamente como é possível fazer sua própria página utilizando recursos prontos de paginação que o drupal ofereçe.. para detalhar um pouco mais o exemplo, vou colocar o código do menu também....

então vamos lá, para criar uma página própria no seu site, crie um menu como este:


$items['noticias'] = array(
'title' => t('News'),
'page callback' => 'news_main',
'access arguments' => array('access content'),
'type' => MENU_LOCAL_TASK,
);

replace no mysql

Código que de vez em quando eu utilizo:

update table set campo = replace(campo, 'string1', 'string_replace')

ideal para corrigir vários paths em registros de uma vez só, exemplo:

renomei minha instalação do drupal que estava no diretório drupal-5.2 para blog dae utilizei isso:

update system set url = replace(url, 'inuar.com/drupal-5.2/', 'inuar.com/blog/');

assim atualiza o path de todos os módulos..