rafamzk 0 Denunciar post Postado Novembro 24, 2014 Olá, sou iniciante em PHP e estou com dificuldade na paginação, agradeço desde já a ajuda. É o seguinte... a paginação está funcionando normalmente quando listo o total de registros "mostraFilme()", porém através do método busca "buscaFilme()", a primeira página aparece normal, quando chamo a segunda não aparece nada. O mesmo acontece no método categoria "categoriaFilme()", sendo q quando chamo a segunda aparece a lista geral do DB. Segue os codigos: <?php include_once("Paginacao.php"); class Lista extends Paginacao{ private $strNumPagina, $strPaginas, $strUrl; public function setNumPagina($valor){ $this->strNumPagina = $valor; } public function setUrl($valor){ $this->strUrl = $valor; } public function getPaginas(){ return $this-> strNumPagina; } public function mostraFilme(){ $sql = "SELECT * FROM filme ORDER BY id_filme desc"; $this->setParametro($this->strNumPagina); $this->setFileName($this->strUrl); $this->setInfoMaxPag(10); $this->setMaximoLinks(250); $this->setSQL($sql); self::iniciaPaginacao(); $cont = 0; while ($linha = self::results()){ $cont++; echo " <ul> <li> <a href='index.php?link=2&id=$linha[id_filme]'> <img src='admin/img/$linha[img_filme]' height='160'> </a> <nav> <span>Titulo Original:</span> $linha[titulo_original]<br> <span>Título em Português:</span> $linha[titulo_portugues]<br> <span>Gênero:</span> $linha[genero]<br> <span>Ano:</span> $linha[ano]<br> <span>Atores:</span> $linha[ator]<br> <span>Sinopse:</span> " . limitar( $linha[ 'sinopse' ], 280 ) . " </nav> </li> </ul> "; self::setContador($cont); } } public function categoriaFilme(){ $idcategoria = $_GET["idcategoria"]; $sql = "SELECT * FROM filme WHERE id_categoria = '$idcategoria' ORDER BY ano desc"; $this->setParametro($this->strNumPagina); $this->setFileName($this->strUrl); $this->setInfoMaxPag(10); $this->setMaximoLinks(250); $this->setSQL($sql); self::iniciaPaginacao(); $cont = 0; while ($linha = self::results()){ $cont++; echo " <ul> <li> <a href='index.php?link=2&id=$linha[id_filme]'> <img src='admin/img/$linha[img_filme]' height='160'> </a> <nav> <span>Titulo Original:</span> $linha[titulo_original]<br> <span>Título em Português:</span> $linha[titulo_portugues]<br> <span>Gênero:</span> $linha[genero]<br> <span>Ano:</span> $linha[ano]<br> <span>Atores:</span> $linha[ator]<br> <span>Sinopse:</span> " . limitar( $linha[ 'sinopse' ], 280 ) . " </nav> </li> </ul> "; self::setContador($cont); } } public function buscaFilme(){ include "biblio.php"; $txt_pesquisa = strip_tags($_POST["txt_pesquisa"]); $sql = "SELECT * FROM filme WHERE titulo_original LIKE'%".anti_sql_injection($txt_pesquisa)."%' or titulo_portugues LIKE'%".anti_sql_injection($txt_pesquisa)."%' or ator LIKE'%".anti_sql_injection($txt_pesquisa)."%'"; $this->setParametro($this->strNumPagina); $this->setFileName($this->strUrl); $this->setInfoMaxPag(10); $this->setMaximoLinks(250); $this->setSQL($sql); self::iniciaPaginacao(); $cont = 0; while ($linha = self::results()){ $cont++; echo " <ul> <li> <a href='index.php?link=2&id=$linha[id_filme]'> <img src='admin/img/$linha[img_filme]' height='160'> </a> <nav> <span>Titulo Original:</span> $linha[titulo_original]<br> <span>Título em Português:</span> $linha[titulo_portugues]<br> <span>Gênero:</span> $linha[genero]<br> <span>Ano:</span> $linha[ano]<br> <span>Atores:</span> $linha[ator]<br> <span>Sinopse:</span> " . limitar( $linha[ 'sinopse' ], 280 ) . " </nav> </li> </ul> "; self::setContador($cont); } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 27, 2014 o que o método results() faz? A implementação dele não está aí. Duas observações: 1. Você precisa de dois SELECTs: um para contar o total de registros para a busca e outro para buscar apenas os registros para a página corrente 1. O primeiro SELECT, para contar o total de registros, pode ser feito com a função COUNT da SQL. É bem mais eficiente Compartilhar este post Link para o post Compartilhar em outros sites
rafamzk 0 Denunciar post Postado Novembro 27, 2014 O método results() está na classe paginação, no caso este: <?php include_once("conexaoMySQL.php"); class Paginacao extends conexaoMySQL{ private $ida, $param; private $maxPage, $maxLink, $numeroPaginas; private $sqlA, $sqlB; private $fileName, $nomeArquivoHTML; private $temp; private $passoA, $passoB; private $qrA, $qrB; private $totRegA, $totRegB; private $resultadoTotal, $resultadoParcial, $resultadoDiv, $numeroInt; private $pagAtual, $proxPag, $ultPag, $pagAnt; private $regInicial; private $dadosGerados; private $registroFinal; public function setParametro($cod){ $this->ida = $cod; } public function setFileName($file){ $this->fileName = $file; } public function setInfoMaxPag($max){ $this->maxPage = $max; } public function setMaximoLinks($max){ $this->maxLink = $max; } public function setSQL($qr){ $this->sqlA = $qr; } public function setContador($cont){ $this->registroFinal = $this->param + $cont; } public function setNomeArquivoHTML($arq){ $this->nomeArquivoHTML = $arq; } /**********************************************************************************************************/ protected function iniciaPaginacao(){ if (empty($this->ida)){ $this->param = 0; } else { $this->temp = $this->ida; $this->passoA = $this->temp - 1; $this->passoB = $this->passoA * $this->maxPage; $this->param = $this->passoB; } //$parametroTemp = $this->parametro - 1; $this->sqlB = $this->sqlA." LIMIT ".$this->param.",".$this->maxPage; //cria as conexões $this->qrA = self::executarSQL($this->sqlA); $this->qrB = self::executarSQL($this->sqlB); $this->totRegA = self::contaDados($this->qrA); $this->totRegB = self::contaDados($this->qrB); $this->totRegB = self::contaDados($this->qrB); //carrega as variáveis $this->resultadoTotal = $this->totRegA; $this->resultadoParcial = $this->totRegB; $this->resultadoDiv = $this->resultadoTotal / $this->maxPage; $this->numeroInt = (int)$this->resultadoDiv; if ($this->numeroInt < $this->resultadoDiv){ $this->numeroPaginas = $this->numeroInt + 1; }else{ $this->numeroPaginas = $this->resultadoDiv; } $this->pagAtual = $this->param / $this->maxPage + 1; $this->regInicial = $this->param + 1; $this->pagAnt = $this->pagAtual - 1; $this->proxPag = $this->pagAtual + 1; } protected function results(){ $this->dadosGerados = self::listar($this->qrB); return $this->dadosGerados; } /**********************************************************************************************************/ public function geraNumeros(){ if ($this->ida > 1) { echo "<a href=\"$this->fileName&pg=$this->pagAnt\" title=\"$this->pagAnt\">Anterior</a>\n"; } if ($this->temp >= $this->maxLink){ if ($this->numeroPaginas > $this->maxLink){ $n_maxlnk = $this->temp + 6; $this->maxLink = $n_maxlnk; $n_start = $this->maxLink - 6; $lnk_impressos = $n_start; } } //mostra os números das páginas while(($lnk_impressos < $this->numeroPaginas) and ($lnk_impressos < $this->maxLink)){ $lnk_impressos ++; // Mostra a página atual sem o link if ($this->pagAtual == $lnk_impressos){ echo "$lnk_impressos \n"; //mostra os números das }else{ echo "<a href=\"$this->fileName&pg=$lnk_impressos\" title=\"$lnk_impressos\">$lnk_impressos</a>\n"; } } // mostra o link PRÓXIMO >> if ($this->registroFinal < $this->resultadoTotal){ echo"<a href=\"$this->fileName&pg=$this->proxPag\" title=\"$this->proxPag\">Próximo</a>\n"; } } public function getTime(){ list($sec, $usec) = explode(" ",microtime()); return ($sec + $usec); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
rafamzk 0 Denunciar post Postado Novembro 29, 2014 Montei esse site com base em outro, somente fui adaptando as minhas necessidades, estou nos primeiros passos do PHP. Para dizer a verdade nem sei como cheguei tão longe, mas aos poucos está indo. Consegui solucionar o problema da paginação por categoria, depois q vi era algo bem simples, mesmo com conhecimento ínfimo nos comandos PHP deu certo, tentei aplicar a mesma solução para a paginação no sistema de busca, mas ñ deu certo, agradeço se alguém puder ajudar... abaixo mostro a solução do sistema categoria: public function geraNumCat(){ $idcategoria = $_GET['idcategoria']; //ACRESCENTEI ESSA LINHA if ($this->ida > 1) { echo "<a href=\"$this->fileName&idcategoria=$idcategoria&pg=$this->pagAnt\" title=\"$this->pagAnt\">Anterior</a>\n"; //CHAMEI O LINK POR CATEGORIA } if ($this->temp >= $this->maxLink){ if ($this->numeroPaginas > $this->maxLink){ $n_maxlnk = $this->temp + 6; $this->maxLink = $n_maxlnk; $n_start = $this->maxLink - 6; $lnk_impressos = $n_start; } } //mostra os números das páginas while(($lnk_impressos < $this->numeroPaginas) and ($lnk_impressos < $this->maxLink)){ $lnk_impressos ++; // Mostra a página atual sem o link if ($this->pagAtual == $lnk_impressos){ echo "$lnk_impressos \n"; //mostra os números das }else{ echo "<a href=\"$this->fileName&idcategoria=$idcategoria&pg=$lnk_impressos\" title=\"$lnk_impressos\">$lnk_impressos</a>\n"; //CHAMEI O LINK POR CATEGORIA } } // mostra o link PRÓXIMO >> if ($this->registroFinal < $this->resultadoTotal){ echo"<a href=\"$this->fileName&idcategoria=$idcategoria&pg=$this->proxPag\" title=\"$this->proxPag\">Próximo</a>\n"; //CHAMEI O LINK POR CATEGORIA } } Abaixo mostro o q tentei fazer no sistema da busca, sem sucesso. O link chega a pegar a palavra digitada na busca, mas quando tento ir para outras páginas lista todo o resultado do DB. public function geraNumBusca(){ $txt_pesquisa = $_POST["txt_pesquisa"]; if ($this->ida > 1) { echo "<a href=\"$this->fileName&txt_pesquisa=$txt_pesquisa&pg=$this->pagAnt\" title=\"$this->pagAnt\">Anterior</a>\n"; } if ($this->temp >= $this->maxLink){ if ($this->numeroPaginas > $this->maxLink){ $n_maxlnk = $this->temp + 6; $this->maxLink = $n_maxlnk; $n_start = $this->maxLink - 6; $lnk_impressos = $n_start; } } //mostra os números das páginas while(($lnk_impressos < $this->numeroPaginas) and ($lnk_impressos < $this->maxLink)){ $lnk_impressos ++; // Mostra a página atual sem o link if ($this->pagAtual == $lnk_impressos){ echo "$lnk_impressos \n"; //mostra os números das }else{ echo "<a href=\"$this->fileName&txt_pesquisa=$txt_pesquisa&pg=$lnk_impressos\" title=\"$lnk_impressos\">$lnk_impressos</a>\n"; } } // mostra o link PRÓXIMO >> if ($this->registroFinal < $this->resultadoTotal){ echo"<a href=\"$this->fileName&txt_pesquisa=$txt_pesquisa&pg=$this->proxPag\" title=\"$this->proxPag\">Próximo</a>\n"; } } Compartilhar este post Link para o post Compartilhar em outros sites