Pergunta

Eu estou tentando classificar uma lista de críticas de filmes em ordem cronológica. Temos duas opções os usuários podem escolher, cronológica e alfabética. A página padrão é alfabética, mas quando as pessoas clique na opção cronológica, nada acontece.

Aqui está o código que temos agora:

// category 3 is 'reviews', category 12 is 'dvd reviews'
                if (($GLOBALS["CategoryId"] == 3 || $GLOBALS["CategoryId"] == 12) && !isset($_GET['unsort']))
                {
                    $output = AL_HELPER::GetArticles($articleResult);
                }
                else
                {
                    $output = AL_HELPER::GetArticlesABC($articleResult);
                }

O que fiz foi flip-flop os dois ifs. Colocando GetArticles primeira e segunda GetArticlesABC o que significa que ficou assim:

// category 3 is 'reviews', category 12 is 'dvd reviews'
                if (($GLOBALS["CategoryId"] == 3 || $GLOBALS["CategoryId"] == 12) && !isset($_GET['unsort']))
                {
                    $output = AL_HELPER::GetArticlesABC($articleResult);
                }
                else
                {
                    $output = AL_HELPER::GetArticles($articleResult);
                }

É, de fato, classificar os comentários cronologicamente mas tirou todas as opções alfabéticos. Essencialmente, foi uma longa lista de comentários cronológicos. Então, obviamente, isso não é o que queremos.

Alguém sabe como limitar o número de itens que ele lista na página? Ou talvez é necessário aqui uma abordagem completamente diferente, se assim for, alguma sugestão?

Foi útil?

Solução

A limitação do número de resultados por página, se estiver usando um banco de dados back-end e SQL é tão simples como usar o operador LIMIT para recuperar somente um determinado número de resultados. Você pode, então, implementar operações seguinte / anteriores, passando uma variável entre as páginas que se relaciona com o conjunto de resultados que você ter puxado.

Por exemplo:

SELECT <Whatever> FROM <review table> LIMIT 0,10

irá recuperar os 10 primeiros resultados.

SELECT <Whatever> FROM <review table> LIMIT 10,20

Será recuperar o próximo 10. Ao substituir os números com variáveis ??que você pode conseguir pagination:

SELECT <Whatever> FROM <review table> LIMIT resultIndex,resultIndex+10
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top