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

paginação


johnhey

Pergunta

Boa tarde, tenho uma galeria de imagem, feita em php e mysql que esta funcionando (Imagem1.jpg)

<form name="formbusca" enctype="multiart/form-data" method="GET" action="">
 			<div id="pesquisa">
		  		<label for="consulta">Digite o nome para a pesquisa:</label>
		  		<input type="text" id="consulta" name="consulta" maxlength="255" />
				<input type="submit" class="btn btn-default"name="enviar" value="Pesquisar" />
			</div>
		</form> 		
 			<ul>
 			<?php
 			//Conexão com o Banco de Dados
				$conexao = mysql_connect('localhost', 'usuario', 'senha');
				if (!$conexao) {
					die('Não foi possí­vel conectar: ' . mysql_error()); //Exibe o erro por não conectar
					}
					//Conexão bem sucedida seleciona o BD
				$db_selected 		= mysql_select_db('rebornimaginacoesdebebes_com_pt_bdreborn', $conexao);
 			
 			if ($tb!='') {
 			
 				//atribui a variável tabela o nome da imagem
 				$tb = $_GET['tb'];
 				$tabela = $tb;
 				
			// ============================================
			// Registros por página
			$por_pagina = 48;
			// Monta a consulta MySQL para saber quantos registros serão encontrados
			$sql = "SELECT COUNT(*) AS registo FROM $tabela";
			// Executa a consulta
			$query = mysql_query($sql);
			// Salva o valor da coluna 'total', do primeiro registro encontrado pela consulta
			$total = mysql_result($query, , 'registo');
			// Calcula o máximo de paginas
			$paginas =  (($total % $por_pagina) > ) ? (int)($total / $por_pagina) + 1 : ($total / $por_pagina);
			// ============================================
			if (isset($_GET['pagina'])) {
			  $pagina = (int)$_GET['pagina'];
			} else {
			  $pagina = 1;
			}
			$pagina = max(min($paginas, $pagina), 1);
			$offset = ($pagina - 1) * $por_pagina;
			// ============================================
			// Monta outra consulta MySQL, agora a que fará a busca com paginação
			$sql = "SELECT * FROM $tabela ORDER BY `registo` asc LIMIT {$offset}, {$por_pagina}";
			// Executa a consulta
			$query = mysql_query($sql);
			// ============================================
			// Começa a exibição dos resultados
			while ($resultado = mysql_fetch_assoc($query)) {
			  $nome = $resultado['nome'];
			  $foto = $resultado['foto'];
			  ?>
			  <ul><li><a class="group1" href="imagens/originais/bebes/<?php echo $tabela.'/'.$foto;?>" title="<?php echo ucfirst($nome);?> <?php $caminho = strtolower($nome).'.txt';
				print file_get_contents($caminho);?>"><img src="imagens/originais/bebes/<?php echo $tabela.'/'.$foto;?>" width="100" height="80" alt="Foto <?php echo ucfirst($nome);?>" /></a></li></ul>
			<?php
			}
 			}else {
			// Salva o que foi buscado em uma variável
			$busca = mysql_real_escape_string($_GET['consulta']);
			// ============================================
			// Registros por página
			$por_pagina = 48;
			// Monta a consulta MySQL para saber quantos registros serão encontrados
			$condicoes = "(`adotado` = 1) AND ((`nome` LIKE '%{$busca}%') )";
			$sql = "SELECT COUNT(*) AS registo FROM `tb_bebes` WHERE {$condicoes}";
			// Executa a consulta
			$query = mysql_query($sql);
			// Salva o valor da coluna 'total', do primeiro registro encontrado pela consulta
			$total = mysql_result($query, , 'registo');
			// Calcula o máximo de paginas
			$paginas =  (($total % $por_pagina) > ) ? (int)($total / $por_pagina) + 1 : ($total / $por_pagina);
			// ============================================
			if (isset($_GET['pagina'])) {
			  $pagina = (int)$_GET['pagina'];
			} else {
			  $pagina = 1;
			}
			$pagina = max(min($paginas, $pagina), 1);
			$offset = ($pagina - 1) * $por_pagina;
			// ============================================
			// Monta outra consulta MySQL, agora a que fará a busca com paginação
			$sql = "SELECT * FROM `tb_bebes` WHERE {$condicoes} ORDER BY `registo` DESC LIMIT {$offset}, {$por_pagina}";
			// Executa a consulta
			$query = mysql_query($sql);
			// ============================================
			// Começa a exibição dos resultados
			while ($resultado = mysql_fetch_assoc($query)) {
			  $nome = $resultado['nome'];
			  $foto = $resultado['foto'];
			  
			  echo "<li><a href='album.php?tb=tb_$nome'><img src='imagens/originais/bebes/miniatura/$foto' alt='$nome' title='$nome' ><p><ucfirst($nome)</p></a></li>";
			}
			}
			?>
			</ul>
</div>
<div id="numpag">
<?php
		// Links de paginação
		// Começa a exibição dos paginadores
		if ($total > ) {
		  for ($n = 1; $n <= $paginas; $n++) {
		    echo "<a href='album.php?consulta={$_GET['consulta']}&pagina={$n}'>{$n}</a>";
		    }
		   }
?>
</div>

Depois de carregar todas a imagens, ao clicar sobre qualquer uma abre me o album referente a mesma.(imagem2.jpg).

Só que a paginação aparece correta, mas se eu clicar para o link 1 ou 2 abre o referente a imagem1 e não a imagem2.

 

imagem1.JPG

imagem2.JPG

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

7 respostass a esta questão

Posts Recomendados

  • 0

Não entendi o objetivo desta linha:

$pagina = max(min($paginas, $pagina), 1);

É possível que ela seja o problema, pois ela muda o valor de $pagina, com base no valor de $paginas, que é o total de páginas, pelo que entendi.

Remova a linha acima e tente de novo

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5  e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/


 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Olá!

Segui a recomendação do Beraldo e aqui funcionou beleza! segue trecho para observação:

<form name="formbusca" method="GET">
    <div id="pesquisa">
        <label for="consulta">Digite o nome para a pesquisa:</label>
        <input type="text" id="consulta" name="consulta" maxlength="255" />
        <input type="submit" class="btn btn-default"name="enviar" value="Pesquisar" />
    </div>
</form> 		
<ul>
    <?php
    error_reporting(E_ALL);    
  //Conexão com o Banco de Dados
    $conexao = mysql_connect('localhost', 'root', '') or die('Não foi possí­vel conectar: ' . mysql_error());

    //Conexão bem sucedida seleciona o BD
    $db_selected = mysql_select_db('scriptbrasil');
    if (isset($_GET['consulta'])) {
        // Salva o que foi buscado em uma variável
        $busca = mysql_real_escape_string($_GET['consulta']);
        // ============================================
        // Registros por página
        $por_pagina = 48;
        // Monta a consulta MySQL para saber quantos registros serão encontrados
        $condicoes = " adotado = 1 AND nome LIKE '%$busca%'";
        $sql = "SELECT nome FROM `tb_bebes` WHERE $condicoes ORDER BY `registo` DESC";
        // Executa a consulta
        $result = mysql_query($sql) or die(mysql_error());
        // Salva o valor da coluna 'total', do primeiro registro encontrado pela consulta
        $total = mysql_num_rows($result);
        // Calcula o máximo de paginas
        $paginas = (($total % $por_pagina) > ) ? (int) ($total / $por_pagina) + 1 : ($total / $por_pagina);
        // ============================================
        if (isset($_GET['pagina'])) {
            $pagina = (int) $_GET['pagina'];
        } else {
            $pagina = 1;
        }
        $offset = ($pagina - 1) * $por_pagina;

        // ============================================
        // Monta outra consulta MySQL, agora a que fará a busca com paginação
        $sql = "SELECT * FROM `tb_bebes` WHERE {$condicoes} ORDER BY `registo` DESC LIMIT $offset, $por_pagina";
        // Executa a consulta
        $resultado = mysql_query($sql) or die(mysql_error());
        // ============================================
        // Começa a exibição dos resultados
        while ($linha = mysql_fetch_assoc($resultado)) {
            $nome = $linha['nome'];
            $foto = $linha['foto'];
            echo "<li><a href='?tb=tb_$nome'><img src='imagens/originais/bebes/miniatura/$foto' alt='$nome' title='$nome' ><p><ucfirst($nome)</p></a></li>";
        }
    }
    ?>
</ul>
</div>
<div id="numpag">
    <?php
    // Links de paginação
    // Começa a exibição dos paginadores
    if (isset($total) && $total > 1) {
        for ($n = 1; $n <= $paginas; $n++) {
            echo "<a href='?consulta={$_GET['consulta']}&pagina={$n}'>{$n}</a>";
        }
    }
    ?>
</div>

P.S. use error_reporting(E_ALL); em seu ambiente de desenvolvimento, corrija e siga as recomendações que vão aparecer.

O php.net recomenda a não usar as extensões mysql_* nunca mais, veja:

mysql_.jpg

Link para o comentário
Compartilhar em outros sites

  • 0

Agradeço pela força e digo que vocês(Beraldo e Wash) têem razão, a linha em questão não faz nenhuma diferença.

Só que talvez eu não esteja a expressar me bem, sempre programei em visual basic, mas em php não consigo chegar lá às vezes com a mesma lógica.

Tenho dois códigos dentro da seguinte condição:

if ($tb!='') {
 			
 	//atribui a variável tabela o nome da imagem
 	$tb = $_GET['tb'];
 	$tabela = $tb;
 	
EXECULTA DO PRIMEIRO CÓDIGO
}
ELSE{

EXECULTA O SEGUNDO CÓDIGO

}

Já fiz o teste com os dois em arquivos diferentes e estão funcionando na perfeição, somente quando junto que não.

Peço se possível que vejam o que quero fazer.

Entrem em:

www.rebornimaginacoesdebebes.com.pt/album.php

na segunda página, cliquem na 4 imagem."benedita1"

depois carreguem na páginação para ver o que está acontecendo.

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Olá! acho q entendi!
Na paginação da página onde tem apenas o álbum de Benedita, você precisa manter a variável ?tb=tb_benedita1

Pra que a url fique assim: album.php?tb=tb_benedita1&pagina=2

Teste e veja que dessa forma: http://www.rebornimaginacoesdebebes.com.pt/album.php?tb=tb_benedita1&pagina=2

é carregada a página 2

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...