Jump to content
Fórum Script Brasil
  • 0

paginação


johnhey
 Share

Question

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

Edited by johnhey
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...