Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Paginação em PHP


Guest .Anonimo.

Pergunta

Guest luis bilar

Galerinha, eu tenho que fazer um paginaçao sem banco de dados, alguém sabe como fazer isso, ou tiver um codigo de exemplo pra min mostrar, ficaria feliz em ter a ajuda de voces. obrigado.

as informaçoes estao sendo enviadas atraves de um parser feito em php, so que quando aparece as informações aparece apeas 10 e gostaria de fazer uma paginação para mostrar todos os resultados.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
Guest luis bilar

Esse e o codigo que to tentando fazer a paginação pode ver que não usa banco de dados porque e um parser de uma url, e gostaria de colocar uma paginação. nele.

<?php
    //$xml = simplexml_load_file("http://pilotos.aileader.com.br/pietro/select?q=politica&allcats=0&ling=none&wt=standart");


/*
 *
 *
 *
 *  caso tenha duvidas manda uma email.
 *
 *
 *
}
 *
 *
 */

// http://pilotos.aileader.com.br/pietro/select?q=politica&allcats=0&ling=none&wt=standart
if ($_SERVER['REQUEST_METHOD'] == "GET") {

$url = "http://pilotos.aileader.com.br/pietro/select?q=".$_GET["q"]."&allcats=".$_GET["allcats"]."&ling=".$_GET["ling"]."&wt=".$_GET["wt"];
$xml = simplexml_load_file($url);

    // padrão é retornar 10 em 10;
?>


<table class="documents">
<?
    $cont = 1;
    foreach ($xml as $obj) {
        if ($obj['name'] == 'highlighting') {
            foreach ($obj as $obj2) {
                foreach ($obj2 as $obj3) {
                    if (strpos($obj3['name'],'show##Texto') !== false) {
?>
                        <tr>
                            <td><?= $cont ?>. &nbsp; <b>Texto:</b></td>
                            <td><?= utf8_decode( $obj3->str ); ?></td>
                        </tr>
                    <?
                    }

                    if (strpos($obj3['name'],'show##Arquivo') !== false ) { ?>
                        <tr>
                            <td><?= $cont ?>. &nbsp; <b>Arquivo:</b></td>
                            <td><?= utf8_decode( $obj3->str ); ?></td>
                        </tr>
                        <tr>
                            <td>&nbsp;</td>
                            <td>&nbsp;</td>
                        </tr>
                        <tr>
                            <td>&nbsp;</td>
                            <td>&nbsp;</td>
                        </tr>
<?
                        $cont++;
                    }

                }
            }
        }
    }
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiro, nunca mande mensagem para moderador pedindo pra ler o seu tópico, a gente faz isso naturalmente.

Segundo, isso tá vindo num array, basta você implementar um rotina dentro que verifique qual a página atual e baseado nisso mostre quantos registros você quer.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest luis bilar

Eserra, desculpa cara não foi por mal, o problema e esse , eu to meio enrolado pra fazer isso, voce poderia me da um exemplo de como seria., voce poderia me ajudar, e desculpa novamente, e obrigado por responder.

Editado por luis bilar
Link para o comentário
Compartilhar em outros sites

  • 0
Guest luis bilar

não entendi jow, os registros vem uma url

http://pilotos.aileader.com.br/pietro/sele...amp;wt=standart

O valor de start=0 deve ser trocado toda vez que clicada na páginação..

EX:

Quando você página aparecem aqueles

1 2 3 4 5 6

Sendo que eu estou na página 3.

Você deve ativar o mesmo script toda vez que clicar em algum dos numeros.. ( 1,2,3,4,5,6 ).

cada número deve ter seu valor EX:

1 = 0

2 = 10

3 = 20

Assim.. você coloca dentro da URL citada acima.. o valor do numero clicado..

EX:

como o 1 é igual a 0

clicando no 2

você envia o valor 10 para o parametro allcats=10

creio eu que ele irá pegar os dados a partir do décimo registro.

começando com o 10 e terminando no 20

start: parâmetro inteiro que controla o índice do primeiro documento dos resultados a ser mostrado. Em caso de paginação, é esse atributo que varia (para página de tamanho 10, a primeira página tem start = 0 , a segunda tem start = 10, etc)

Link para o comentário
Compartilhar em outros sites

  • 0

O Edgar já te falou amigo:

Segundo, isso tá vindo num array
Se tá vindo de um array você vai ter que criar um laco para navegar, pesquise no manual sobre for() ou while()
, basta você implementar um rotina dentro que verifique qual a página atual

Numa paginacao você vasi ter uma url do tipo, www.meusite.com/a.php?pagina=10, pesquise sobre $_GET

e baseado nisso mostre quantos registros você quer.

Pesquise sobre condição lógica if()

if($_GET['pagina'] == 10){ //exibe isso aqui }

Link para o comentário
Compartilhar em outros sites

  • 0
Guest luis bilar

Fiz algo do tipo, mais quando click no numero da pagina da erro. da uma olha na pagina.

http://www.parengi.com/teste/index.php?

<?$arr = array();
    $max = 20;
    $exibe = 10;
    $start = isset($_GET['start']) ? $_GET['start'] : 1;

    for ($i = 1; $i <= $max; $i++) {
        $arr[] = "<a href=\"?start=" . $i . "\">" . $i . "</a>";
    }

    $offset = $start;
    if (($max - $start) < $exibe)
        $offset = $offset - ($offset - $exibe) + 1;

    echo "Pagina => " . $start . "<br />";
    echo "Offset => " . $offset . "<br />";

    $arr2 = array_slice($arr, $offset - 1,$exibe);

    echo "<pre>";
    print_r ($arr2);
    echo "</pre>";?>

Link para o comentário
Compartilhar em outros sites

  • 0

Não estou entendendo oque você quer, mas enfim tenta assim:

<?$arr = array();
    $max = 500; //haja processador  
    $exibe = $max; 
    $start = isset($_GET['start']) ? $_GET['start'] : 1;

    for ($i = 1; $i <= $max; $i++) {
        $arr[] = "<a href=\"?start=" . $i . "\">" . $i . "</a>";
    }

    $offset = $start;
    if ($exibe)
        $offset = $offset - ($offset - $exibe) + 1;

    echo "Pagina => " . $start . "<br />";
    echo "Offset => " . $offset . "<br />";

    $arr2 = array_slice($arr, $offset - 1,$exibe);

    echo "<pre>";
    print_r ($arr2);
    echo "</pre>";?>
e lá na url para chamar o xml:
$url = "http://pilotos.aileader.com.br/pietro/select?q=".$_GET["q"]."&allcats=".$_GET["allcats"]."&ling=".$_GET["ling"]."&wt=".$_GET["wt"];

você deve passar 0 para allcats se quiser mostrar tudo pelo que parece

Link para o comentário
Compartilhar em outros sites

  • 0
Guest luis bilar

agora quem não entendeu foi eu =] , oque voce não entendeu , talvez eu possa esclarecer.

da uma olhar irmao, como ficou.

http://www.parengi.com/teste/index.php?sta...xonomy=&fq=

start: parâmetro inteiro que controla o índice do primeiro documento dos resultados a ser mostrado. Em caso de paginação, é esse atributo que varia (para página de tamanho 10, a primeira página tem start = 0 , a segunda tem start = 10, etc)

la na url ta sendo passo assim, mesmo, valor 0 .

Acha processador mesmo =D

o pior e que não faz nada =[ quando clickar ele deveriar ir para o proximo resultado e não vai. =[ não entendo. o porque não funciona, fiz a alterar e nada. =[

www.parengi.com/teste

não aparece nada, mais se voce fizer uma consulta tipo consulta Documentos ele tras so o numero mesmo.

Editado por luis bilar
Link para o comentário
Compartilhar em outros sites

  • 0
as informaçoes estao sendo enviadas atraves de um parser feito em php, so que quando aparece as informações aparece apeas 10 e gostaria de fazer uma paginação para mostrar todos os resultados.

você comeca dizendo que quer paginar o negocio, depois que quer mostrar todos resultados :}

Ou você tá querendo os dois assim:

<< < 1 2 3 > >>

Mostrar todos registros

?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest luis bilar

Desculpa se falei errado =D, eu quero o seguinte, <<1 2 3 4 5 >> entendeu, que mostre os 10 primeiros resultados com a paginação para navegar por todos os resultados. e isso que quero. =D

A antes de que esqueca, obrigado por ta me ajudando.

Link para o comentário
Compartilhar em outros sites

  • 0

Não sei se vai ajudar ou piorar. Mas o Zend Framework possui uma classe que faz isso.

http://www.framework.zend.com/manual/en/zend.paginator.html

Link para o comentário
Compartilhar em outros sites

  • 0

Retirado das regras:

3.8 Não é permitida a postagem de mensagens com a finalidade de manter o tópico no início da lista (up), nem de mensagens que não se refiram ao assunto do tópico (flood). Caso isso ocorra, as mensagens serão excluídas e os autores, advertidos.

Nesse meio tempo, você tentou estudar um pouco de arrays? if/else? Sinceramente, eu não consigo conceber como você montou esse código todo e não entende como fazer o que eu passei...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest luis bilar

Voce e meio estressado não é não,

1º não estou postando msg pra ficar em primeiro ("isso nem passou em minha cabeça").

2º sou formado em S.I e tenho pos-graduação em engenharia de software, tenho 4 certificações em java e sou um otimo profissional.

3º nunca programei para web nunca gostei por ser tão louco, mais infelizmente nosso projeto precisa.

4º qual o problema de não saber fazer uma linha de codigo, eu não vejo algum, e acho que se voce ver problema nisso, acho que é porque o nome moderador subio a sua cabeça, logo, vejo pelo seus depoimentos.

Tá com dúvida? Usa o Fórum! Não adianta mandar mensagem privada, pois não sou "personal helpdesk".
acho que você realmente tem que saber o que é tirar duvidas ou ate mesmo, ajudar quando alguém não sabe, quem sabe quando voce precisar de ajuda no guj eu não posso ti ajudar, já trabalhei com pessoas igual a voce e sempre me dei bem, sabe porque, porque pessoas igual a voce so querem chamar atenção,

realmente se você gosta de ajudar como diz,

"Eu posso até te ajudar, aliás, eu vou te ajudar! Eu quero te ajudar! Mas agora você tem que me ajudar a te ajudar."

então ajude, e pare de ficar sitando no forum coisas que saem da sua cabeça.

abraços meu amigos, se você for ajudar fico feliz, caso não, ficaria feliz tambem em você para de ficar postando no forum que eu abri para me julgar ou falar mal de minha pessoa.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

luis bilar, a função FUNDAMENTAL do moderador é manter ordem no fórum, não responder perguntas, óbvio que a gente responde elas naturalmente e sem problemas. Postar mensagens seguidas é considerado up ou flood (dependendo do caso), ter ou não a intenção é outra coisa, quer adicionar algo novo no seu tópico? Existe o botão:

p_edit.gif

Quanto às mensagens na minha assinatura, apenas exponho o que muitas pessoas da moderação fazem, não prestamos auxílio em pvt, pois esse não é o propósito.

Quanto as suas credenciais, parabéns, eu sou formato em ciência da computação, tenho especialização em desenvolvimento de soluções corporativas e estou no meio do mestrado em engenharia de produção (área de concentração: sistemas de produção)... ou seja, perdeu tempo querendo dar carteirada amigo...

Enfim, a solução pro seu problema é simples, mas como resolveu chutar o balde, boa sorte, dá uma estudada que alguém tão qualificado não deve ter dificuldades pra resolver isso.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest luis bilar

tks friends, não ta bringando nem falando besteira no forum de ajuda, repito se puder me ajudar fico feliz e muito grato a voce meu amigo, mais caso não queira peço que pare de ficar discutindo comigo, obrigado, e desculpe se fui rudi com voce meu Freund.

obs: antes que eu seja mal interpretado Freund em alemão que dizer amigo. ok.

Editado por luis bilar
Link para o comentário
Compartilhar em outros sites

  • 0
Guest luis bilar

Duvida novamente.. vamos la. percebi que o que sera mais correto a se fazer e, fazer uma pagina onde tenha proximo e anterior, pois não tenho como saber quantos arquivos ele achou pra fazer a paginaçao com numeros, alquem pode me mostrar um codigo em php de exemplo, OBS : nunca desenvolvi em php sera que voces podem me ajudar, queridos amigos.

http://pilotos.aileader.com.br/pietro/sele...amp;wt=standart

O valor de start=0 deve ser trocado toda vez que clicada na páginação..

EX:

start: parâmetro inteiro que controla o índice do primeiro documento dos resultados a ser mostrado. Em caso de paginação, é esse atributo que varia (para página de tamanho 10, a primeira página tem start = 0 , a segunda tem start = 10, etc)

Link para o comentário
Compartilhar em outros sites

  • 0

luis bilar, independente de qualquer situação você infligiu sim as regras, entendemos que você quer obter uma solução mas não é assim que vai conseguir.

Por favor não poste mais sucessivamente desta forma:

Sera que tem alguém nesse mundo que saiba me ajudar sobre esse assunto, =[ to ficando doidinho com isso, please.

Do contrário seremos obrigados a ter dar um punição...

Todos nos desse fórum somos voluntários, mesmo vocês usuários que nos ajudam a manter-lo, postar sucessivamente não vai adiantar nada, eu só não respondi a você antes pois estava no trabalho e me chegaram coisas para resolver enquanto estava tentando entender sua dúvida.

Voltando ao assunto, o que não estou entendendo, desculpe se for meio besta, mas porque você não pode simplesmente fazer isso:

$arr = array();
$max = 20;
$exibe = 10;
$start = isset($_GET['start']) ? $_GET['start'] : 1;

    // Exibe o link p os primeiros regs
    if ($_GET['rows'] < $max)
        echo "<a href=\"?start=" . $max . "\">" . "Primeira" . "</a>";
        
    // Exibe o link p reg atual-numero de regs a exibir
    if ($_GET['rows'] > 1)
        echo "<a href=\"?start=" . $start - $exibe . "\">" . "Anterior" . "</a>";
        
    
    if ($start > 5) {
        
        // Exibe os tres anteriores
        $dec=1; // varriavel para decrescentar
        for ($i = $start; $i <= $start + 3; $i++) {
            echo "<a href=\"?start=" . $i-$dec . "\">" . $i-$dec . "</a>";
            $dec++;
        }
    }
    
    if ($start < $max - 3)
        // Exibe os tres proximos registro
        for ($i = $start; $i <= $start + 3; $i++) {
        echo "<a href=\"?start=" . $i . "\">" . $i . "</a>";
    }
    
    // Exibe o link p reg atual+numero de regs a exibir
    if ($_GET['rows'] < $max)
        echo "<a href=\"?start=" . $start + $exibe . "\">" . "Proxima" . "</a>";
    
    // Exibe o link p ultima pagina de registro
    if ($_GET['rows'] < $max)
        echo "<a href=\"?start=" . $max . "\">" . "Ultima" . "</a>";

Link para o comentário
Compartilhar em outros sites

  • 0
Guest luis bilar

o problema e exatamente esse, eu não tenho como fazer uma paginaçao mostrando os numeros da pagina , porque não tenho como saber quantos resultados forao achados , o mais interessante seria uma paginaçao com (proxima e anterior).

eu fiz assim. ate porque

Ex. Se na URL start tem valor 20;

Seu intervalo é de 10 registros por página.: $exibe = 10;

O botão anterior fica = $_GET['start'] - $exibe; // igual a 0

O botão Próximo fica = $_GET['start'] + $exibe; // igual a 20

mais não pega do mesmo jeito, não aparece o link. =[ você sabe o porque.

<?php
$item = $_GET["start"];

if ($item <= 10)
{
    echo ' <a href="link.php?start=0">Anterior</a> ';
}
else
{
    echo ' <a href="link.php?start=' . $item - 10 . '">Anterior</a> ';
}

echo ' <a href="link.php?start=' . $item + 10 . '">Próximo</a> ';
?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...