Erro ao criar Paginação em PHP [RESOLVIDO]

1. Erro ao criar Paginação em PHP [RESOLVIDO]

Jean de Sousa
JeanzinRJ

(usa Debian)

Enviado em 01/11/2016 - 16:23h

Salve, Comunidade!

Após pesquisar e acompanhar diversos tutoriais sobre criação de paginação de conteúdo em php. sempre me deparado com um error ao meu ver similar.

Este e o ultimo que criei a mão seguindo um tutorial e fui o mais simples que pude e deu o seguinte erro: Fatal error: Call to a member function query() on null in /Applications/AMPPS/www/ACMWEB/teste4.php on line 12

como estou iniciando em PHP não consegui identificar o erro pesquisei sobre o mesmo e não consegui chegar a nenhuma conclusão.

Segue o código.


<?php
include 'conecta.php';

//definir o numero de itens por pagina
$itens_por_pagina = 5;

//pegar a pagina atual
$pagina = intval($_GET['pagina']);

//puxa os nomes do banco
$sql_code = "SELECT * FROM assinantes LIMIT $pagina, $itens_por_pagina";
$execute = $mysqli->query($sql_code) or die($mysqli->error);
$conteudo = $execute->fetch_assoc();
$num = $execute->num_rows;

// pega a quantidade total de objetos no banco de dados
$num_total = $mysqli->query("select * from assinantes")->num_rows;

// definir numero de paginas
$num_paginas = ceil($num_total/$itens_por_pagina);

?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Bootstrap 101 Template</title>

<!-- Bootstrap -->
<link href="bootstrap-3.3.6-dist/css/bootstrap.min.css" rel="stylesheet">

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container-fluid">
<div class="row">
<h1>Nomes</h1>
<!-- Inicio Loop para exibir os registros da consulta na tabela -->
<?php if($num > 0){ ?>
<table class="table table-bordered table-hover">
<thead>
<tr>
<td>nome</td>
</tr>
</thead>
<tbody>
<?php do{ ?>
<tr>
<td><?php echo $conteudo['nome'];?></td>
</tr>
<?php } while($conteudo = $execute->fetch_assoc()); ?>
</tbody>
</table>
<!-- Inicio paginação-->
<nav aria-label="Page navigation">
<ul class="pagination">
<li>
<a href="teste4.php?pagina=0" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
<!-- Inicio Loop que gera as páginas-->
<?php for($i = 0; $i < $num_paginas; $i++){
$estilo = "";
if($pagina == $i)
$estilo = "class=\"active\"";

?>
<li <?php echo $estilo; ?>><a href="teste4.php?pagina=<?php echo $i; ?>"><?php echo $i+1; ?></a></li>
<?php } ?>
<!-- Final Loop páginas-->
<li>
<a href="teste4.php?pagina=<?php echo $num_paginas-1; ?>" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
</ul>
</nav>
<!-- Final paginação -->
<?php } ?>
<!-- Final Loop de consulta -->
</div>
</div>


<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>




  


2. Re: Erro ao criar Paginação em PHP [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 01/11/2016 - 17:10h

"Fatal error: Call to a member function query() on null in /Applications/AMPPS/www/ACMWEB/teste4.php on line 12"

Está dizendo que deu uma chamada a um membro da função query que está nulo.

Para ter certeza, qual é a linha 12?

A tabela no banco de dados está populada?


3. Re: Erro ao criar Paginação em PHP

Jean de Sousa
JeanzinRJ

(usa Debian)

Enviado em 01/11/2016 - 18:07h

Está sim! joguei o comando direto no banco e responde normal.

já testei as variáveis ($pagina e $itens_por_pagina) que enviam para a linha 11 estão com valores normalmente. Por isso achei estranho. a 12 na teoria executa a linha 11 pelo que eu entendi.

10 //puxa os nomes do banco
11 $sql_code = "SELECT * FROM assinantes LIMIT $pagina, $itens_por_pagina";
12 $execute = $mysqli->query($sql_code) or die($mysqli->error);
13 $conteudo = $execute->fetch_assoc();
14 $num = $execute->num_rows;

Buckminster escreveu:

"Fatal error: Call to a member function query() on null in /Applications/AMPPS/www/ACMWEB/teste4.php on line 12"

Está dizendo que deu uma chamada a um membro da função query que está nulo.

Para ter certeza, qual é a linha 12?

A tabela no banco de dados está populada?





4. Re: Erro ao criar Paginação em PHP [RESOLVIDO]

Jean de Sousa
JeanzinRJ

(usa Debian)

Enviado em 03/11/2016 - 11:47h

Salve! Comunidade.

Para registrar como resolvi o problema o erro e causado por uma incompatibilidade do mysql que é a forma antiga de ser utilizado nas novas versões foi implementado o mysqli ao trocar as funções para o novo padrão consegui resolver o problema.

Segue o código final com o problema resolvido. Obrigado a todos que ajudaram de alguma forma...



<?php
//conexão com o Banco
include 'conecta.php';


//tentar jogar num arquivo PHP para maior segurança

//definir o numero de itens por pagina
$itens_por_pagina = 5;

//pegar a pagina atual. (o intval transforma em numero inteiro)
$pagina = intval($_GET['pagina']);

//multiplica pelo valor da pág pelo valor dos itens por pág.
$ordem_itens = intval($_GET['pagina'])*$itens_por_pagina;
echo "Numero da pagina: ".$pagina."<br />";
//puxa os nomes do banco
$sql_code = "SELECT nome,local FROM assinantes LIMIT $ordem_itens, $itens_por_pagina";
$execute = $conexao->query($sql_code) OR die(mysql_error());
$conteudo = $conexao->query($sql_code)->fetch_assoc();

//número de resutados por pesquisa
$num = $execute->num_rows;
echo "Resultado por pesquisa: ".$num ."<br />";

// pega a quantidade total de objetos no banco de dados
$num_total = $conexao->query("select * from assinantes")->num_rows;
echo "Número total de objetos: ".$num_total ."<br />";

// definir numero de paginas
$num_paginas = ceil($num_total/$itens_por_pagina);
echo "Número de paginas: ".$num_paginas;
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Bootstrap 101 Template</title>

<!-- Bootstrap -->
<link href="bootstrap-3.3.6-dist/css/bootstrap.min.css" rel="stylesheet">

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class=" container container-fluid">
<div class="row">
<h1 class="text-uppercase text-center">Lista</h1>
<!-- Inicio Loop para exibir os registros da consulta na tabela -->

<table class="table table-bordered table-hover">
<thead>
<tr>
<td>nome</td>
<td>Local</td>
</tr>
</thead>
<tbody>
<?php if($num > 0){
do{ ?>
<tr>
<td><?php echo $conteudo['nome']?></td>
<td><?php echo $conteudo['local']?></td>
</tr>
<?php } while($conteudo = $execute->fetch_assoc()); ?>
</tbody>
</table>
<!-- Inicio paginação-->
<nav aria-label="Page navigation">
<ul class="pagination">
<li>
<a href="teste4.php?pagina=0" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
<!-- Inicio Loop que gera as páginas-->
<?php for($i = 0; $i < $num_paginas; $i++){
$estilo = "";
if($pagina == $i){
$estilo = "class=\"active\"";
}
?>
<li <?php echo $estilo ?>><a href="teste4.php?pagina=<?php echo $i; ?>"><?php echo $i+1; ?></a></li>
<?php } // Final for

} // final do if
// Close connection
$conexao->close(); ?>
<!-- Final Loop páginas-->
<li>
<a href="teste4.php?pagina=<?php echo $num_paginas-1; ?>" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
</ul>
</nav>
<!-- Final paginação -->

<!-- Final Loop de consulta -->
</div>
</div>

<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts