Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

21-04-2013 13:55

Eu fiz um template em php.

Dividi os códigos html do cabeçalho e coloquei no arquivo: header.php
Dividi os códigos html do rodapé e coloquei no arquivo: footer.php

Apenas o conteúdo do meio da página inicial é que eu coloquei no arquivo: index.php

O código do index.php ficou assim:

<?php include("template/header.php")?> <!-- post inicia --> Texto do conteúdo aqui, Texto do conteúdo aqui,  Texto do conteúdo aqui, Texto do conteúdo aqui,  Texto do conteúdo aqui, Texto do conteúdo aqui,  <!-- fim do post --> <?php include("template/footer.php")?>


Quero que no rodapé tenha uma paginação, então no arquivo footer.php eu tenho esse código:

    </div>   <center> <a class="page" href="/index.php"><div class="page"> 1 </div></a> <a class="page" href="p/2.php"><div class="page"> 2 </div></a> <a class="page" href="p/3.php"><div class="page"> 3 </div></a> <a class="page" href="p/4.php"><div class="page"> 4 </div></a> </center>     </body>   </html>    

O problema é na paginação, pois eu criei uma pasta com o nome de "p" para colocar os arquivos de páginas: 1.php, 2.php, 3.php, 4.php etc... Estou seguindo essa organização para as páginas ficarem todas nesse lugar.

Veja na imagem, é a primeira vez que estou fazendo um template php, não sei se está boa minha organização:

Imagem

Quando eu rodo o Apache, e vou no meu localhost e abro o index.php vejo que está tá tudo certinho, abre chamando corretamente o header, o conteúdo do meio e o footer.php...
O problema é:

Quando clico em alguma página, não vai! Ou seja, acho que estou escrevendo incorretamente o código das páginas... Como eu chamo as páginas estando elas dentro da pasta "p"?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

21-04-2013 14:41

Uma paginação tem algumas coisas que tem que adicionar. Contar o número de arquivos da pasta para gerar a quantidade de links. Pegar o link clicado para destacar, e gerar um include para pegar o arquivo clicado. Faz um teste com o script abaixo.

Paginacao-para-array-ou-arquivos-de-pas ... _6351.html

Um script bem interessante também é esse

<?php $maindir = "SUA_PASTA" ; $mydir = opendir($maindir) ; $limit = 5; $offset = ((int)$_GET['offset']) ? $_GET['offset'] : 0; $files = array(); $page=''; $exclude = array( ".", "..", "index.php",".htaccess","guarantee.gif") ; while($fn = readdir($mydir)) {     if (!in_array($fn, $exclude))     {         $files[] = $fn;;     } } closedir($mydir); sort($files); $newICounter = (($offset + $limit) <= sizeof($files)) ? ($offset + $limit) : sizeof($files); for($i=$offset;$i<$newICounter;$i++) { ?>     <a href="<?php print $files[$i]; ?>"><?php print $files[$i]; ?></a><br> <?php } freddyShowNav($offset,$limit,sizeof($files),""); function freddyShowNav($offset, $limit, $totalnum, $query) {     global $PHP_SELF;     if ($totalnum > $limit) {             // calculate number of pages needing links             $pages = intval($totalnum/$limit);             // $pages now contains int of pages needed unless there is a remainder from division             if ($totalnum%$limit) $pages++;             if (($offset + $limit) > $totalnum) {                 $lastnum = $totalnum;                 }             else {                 $lastnum = ($offset + $limit);                 }             ?>                 <table cellpadding="4"><tr><td>Page </td>             <?php             for ($i=1; $i <= $pages; $i++) {  // loop thru                 $newoffset=$limit*($i-1);                 if ($newoffset != $offset) {             ?>                     <td>                         <a href="<?php print  $PHP_SELF; ?>?offset=<?php print $newoffset; ?><?php print $query; ?>"><?php print $i; ?>                         </a>                     </td>             <?php                     }                 else {             ?>                     <td><?php print $i; ?></td>             <?php                     }                 }             ?>                     </tr></table>             <?php         }     return;     } echo $page; ?>

Fonte: http://stackoverflow.com/questions/1193 ... -directory
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

22-04-2013 14:38

Eu estou usando o código da paginação desse seu tópico "Paginacao-para-array-ou-arquivos-de-pasta-PHP_1_6351.html"



Meu objetivo é chegar a ficar exatamente assim (já fiz esse style em css):
Imagem


Eu já fiz o css para os botões ficarem assim nesse estilo, e antes eu estava usando esse style no tipo de paginação manual assim como eu tinha descrito acima no footer.

Agora eu queria saber como aplicar esse css a esse script de paginação dinâmica.

As páginas estão aparecendo assim:

Imagem

E se reparar a página 10 está aparecendo no local errado, está depois da página 1.

Coloquei 3 para aparecer em $pagedResults = new Paginated($names, 3, $page);
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

22-04-2013 15:17

O problema da numeração, tem que ordenar os arquivos com duas casas, 01, 02, 03....

A class do seu estilo, você tem que aplicar no li, que está na index.php

    while($row = $pagedResults->fetchPagedRow()) {    //when $row is false loop terminates         echo "<li>{$row}</li>";     } 

O estilo do anterior e próximo, você edita diretamente no arquivo DoubleBarLayout.php
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

22-04-2013 18:22

Já apliquei os estilos das partes que eu queria, e coloquei os arquivos php de páginas com duas casas (01, 02, 03...), deu certo a ordem agora.

Mas algo no script não está dando certo... Veja como está aparecendo a paginação:

Imagem

Os links das páginas não estão vinculadas aos números..
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

22-04-2013 19:09

Essa parte da numeração, com o | está no arquivo DoubleBarLayout.php, nesse trecho

            if($i == $currentPage) {                 $str .= "<i>Page $i</i>";             }             else {                 $str .= "<a href=\"?page=$i$queryVars\">$i</a>";             }             ($i == $currentPage + 2 || $i == $parent->fetchNumberPages()) ? $str .= " " : $str .= " | "; 

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

22-04-2013 19:15

Mas e por que está aparecendo:
p/01.php p/02.php p/03.php e depois 1 | 2 | 3 >>

e não apenas 1 | 2 | 3 ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

22-04-2013 19:18

Aqui não aparece esses dados. Você não deu um echo em alguma variável além das que vem no script? Pega o index.php original e retesta.
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

22-04-2013 19:31

Lembrei que tem o echo, que exibe o conteúdo, no caso o caminho do arquivo, no index.php

echo "<li>{$row}</li>"; 

Isso que deve estar sendo mostrado antes da paginação.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

22-04-2013 20:04

Eu removi o <li> para as páginas não terem quebra de linha, e removi o {$row} e era ele mesmo que estava "escrevendo" o caminho das páginas.


Agora a aparência está correta aparecendo assim:
Imagem

E o meu código ficou assim no arquivo DoubleBarLayout.php:

$pagedResults = new Paginated($names, 3, $page);         while($row = $pagedResults->fetchPagedRow()) {    //when $row is false loop terminates         echo "";     } 

Quando clico em cada página, por exemplo, na página 3, o endereço da barra do navegador fica assim:

http://localhost/meu-site/index.php?page=3

Até aí tudo bem, mas não aparece o conteúdo da página 3 e nem de nenhuma outra página... Só carrega a página novamente, mudando o link da página, mas o conteúdo é sempre o da página inicial no caso a index....

E eu coloquei 10 páginas diferentes (... 08.php, 09.php 10.php) na pasta de páginas "p" e só está aparecendo 4 páginas no total, veja:

Imagem
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

22-04-2013 20:11

O echo, irá listar o nome do arquivo, então para carregar o conteúdo, tem que substituir por include

//echo "<li>{$row}</li>"; include("$row"); 

Vai incluir quantos arquivos você definir na listagem.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

22-04-2013 20:45

Eu comentei o "echo" ficando assim:

while($row = $pagedResults->fetchPagedRow()) {    //when $row is false loop terminates         //echo "<li>{$row}</li>";         include("$row");     } 

Só que quando atualizei a página, apareceu todas as páginas chamadas na mesma página... Ficou gigante a página, o scroll bem pequenininho e um monte de páginas entraram na mesma página do index.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

22-04-2013 21:01

Então nesse caso você tem que listar um resultado por vez. Já que é include.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

22-04-2013 21:10

Como assim? Tenho que colocar como? Colocar o "li" de novo?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

22-04-2013 21:28

Você informou no começo do post, que queria gerar uma paginação, e que a página referente ao link ativo, aparecesse no meio do layout.

Esse script vai fazer isso, se você paginar um arquivo por vez

$pagedResults = new Paginated($names, 1, $page);

E, ao invés de usar o li, usar o include como indiquei, porque se você clicar na página 1, vai pegar o arquivo 01.php e incluir na página, se clicar no 2, vai carregar o 02.php, etc....
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

22-04-2013 22:57

Sim, é exatamente isso que eu quero fazer...

Eu coloquei 1 ao invés do 3 como estava, nessa linha:

$pagedResults = new Paginated($names, 1, $page);

E deixei comentado o echo, e coloquei para o include pegar as páginas como você disse, e assim está o código:
esse é todo o código de paginação que está no footer.php

<?php require_once "template/Paginated.php"; require_once "template/DoubleBarLayout.php"; ?>     <?php     //create an array of names in alphabetic order. A database call could have retrieved these items     //$names = array("Andrew", "Bernard", "Castello", "Dennis", "Ernie", "Frank", "Greg", "Henry", "Isac", "Jax", "Kester", "Leonard", "Matthew", "Nigel", "Oscar");     $names = glob('p/{*.php}', GLOB_BRACE);          $page = $_GET['page'];          //constructor takes three parameters     //1. array to be paged     //2. number of results per page (optional parameter. Default is 10)     //3. the current page (optional parameter. Default  is 1)     $pagedResults = new Paginated($names, 1, $page);               while($row = $pagedResults->fetchPagedRow()) {    //when $row is false loop terminates         //echo "";         include("$row");     }                    //important to set the strategy to be used before a call to fetchPagedNavigation     $pagedResults->setLayout(new DoubleBarLayout());     echo $pagedResults->fetchPagedNavigation();     ?>

Só que ao fazer essas configurações a página fica como nesse exemplo, some os números da paginação e são substituídos pela inclusão dessa repetição de página como mostra na imagem abaixo...

Fica uma página uma dentro da outra, e fica super longa a página, pois fica carregando e carregando, porque é muita página uma dentro da outra até embaixo...

Imagem
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

23-04-2013 09:19

Não entendi porque aparece a página do google ai.

Um detalhe, tem que definir a pasta no include

include("p/$row"); 

Agora tem que verificar o conteúdo desse arquivo que é incluído. Se não interfere no conteúdo da página.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

23-04-2013 13:03

Eu fiz no Photoshop essa da página da Google pra mostrar como exemplo de como ficou minha página aqui, porque não dava pra tirar printscreen da minha página pois tinha que ficar descendo o scroll não ia pegar inteiro o resultado de como ficou...

Eu coloquei esse código do include:

include("p/$row"); 

Mas deu esse erro, e não funcionou ainda:

Warning: include(p/p/01.php): failed TO OPEN stream: No such file OR directory IN C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\meu-site\template\footer.php ON line 49   Warning: include(): Failed opening 'p/p/01.php' FOR inclusion (include_path='.;C:\php\pear') IN C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\meu-site\template\footer.php ON line 49

O conteúdo das páginas da pasta "p" tem esse modelo:

<?php include("../template/header.php")?> <!-- meu conteúdo da página inicia --> Aqui vai meu texto, bla bla bla, com tabela com imagens, textos, palavras... <!-- meu conteúdo da página termina --> <?php include("../template/footer.php")?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

23-04-2013 13:33

Mas ai ficou 2 erros. Como $row já tem a pasta junto, não vai precisar adicionar a pasta, vai ficar só

include("$row"); 

Já o arquivo que vai ser incluído, não precisa ter todo e rodapé, é só texto mesmo, porque quando você acessar o link da paginação, o topo e o rodapé atual vai se manter, adicionando somente o conteúdo incluído.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

23-04-2013 16:11

Até que enfim... Você tava certo, eu tava me confundindo aqui ;) agora se eu clico na página 2 vai pra página 02.php e tudo certo assim por diante...

Uffa... Já estava entrando em pânico aqui com dor de cabeça, acho que dei dor de cabeça até em você com minha agonia aqui rs... Já tem 2 páginas o tópico aqui.

Só mais uma coisinha, eu quero mudar o local onde aparece minha assinatura e minha imagem.
Pois os botões das páginas estão em cima da minha assinatura e da minha imagem...

A minha assinatura e minha foto é conteúdo fixo do rodapé...

Eu coloco o código de minha assinatura/foto acima do código da paginação mas "desarruma"...

Imagem
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

23-04-2013 16:21

O padrão é

// REFERENTE AO CONTEÚDO while($row = $pagedResults->fetchPagedRow()) {     include("$row"); } // REFERENTE A PAGINAÇÃO $pagedResults->setLayout(new DoubleBarLayout()); echo $pagedResults->fetchPagedNavigation(); 

Eu testei o script com essa ordem acima, e está correto aqui, primeiro o include, depois os links da paginação. Confere a ordem ai.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

23-04-2013 16:29

Sim, está certo, primeiro aparece o conteúdo das páginas que são chamadas pelo include $row, depois aparece os botões da paginação.
Mas, eu quero colocar um conteúdo html entre o include das páginas e a paginação....

Ficando assim no caso:

// REFERENTE AO CONTEÚDO while($row = $pagedResults->fetchPagedRow()) {    include("$row"); } <!-- conteúdo html aqui no caso minha foto e minha assinatura --> // REFERENTE A PAGINAÇÃO $pagedResults->setLayout(new DoubleBarLayout()); echo $pagedResults->fetchPagedNavigation(); 

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

23-04-2013 16:44

Se o conteúdo com sua foto e assinatura estiver em um arquivo, é só você adicionar mais uma linha de include no local.

// REFERENTE AO CONTEÚDO while($row = $pagedResults->fetchPagedRow()) {    include("$row"); } include("foto-assinatura.php"); // REFERENTE A PAGINAÇÃO $pagedResults->setLayout(new DoubleBarLayout()); echo $pagedResults->fetchPagedNavigation(); 

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 124
Sexo: Masculino

Como fazer uma paginação simples? (Template PHP)

23-04-2013 18:52

Eu fiz isso, apareceu o conteúdo do meu arquivo foto-assinatura.php mas os botões de paginação somem quando eu coloco esse include da minha foto assinatura... E eu coloquei exatamente assim:

// REFERENTE AO CONTEÚDO while($row = $pagedResults->fetchPagedRow()) {    include("$row"); } include("foto-assinatura.php"); // REFERENTE A PAGINAÇÃO $pagedResults->setLayout(new DoubleBarLayout()); echo $pagedResults->fetchPagedNavigation(); 

Dá impressão que os botões de paginação ficam por baixo do conteúdo da minha foto e assinatura... :/
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como fazer uma paginação simples? (Template PHP)

23-04-2013 19:14

O que tem nesse arquivo foto-assinatura.php?

Lembra também de adicionar uns br nesse foto-assinatura.php para deixar um espaço entre esse conteúdo e a paginação.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado