Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gabriel_b

[Resolvido] Erro MySql

Recommended Posts

Estou usando um script de paginação que peguei na Internet, mas ele só funciona na primeira página.

Quando vou para a segunda dá o seguinte erro:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Marinoski\produtos.php on line 55

 

Já pesquisei em alguns fóruns, e as soluções apresentadas não fizeram efeito!

Será que poderiam me ajudar?

Segue o código:

ps: coloquei tudo numa página só por questão de teste mesmo.

 

<?php
include ('conexao.php');

//paginação;

// Informações da query
$campos_query = "*";
$id = $_GET["id"];
$final_query  = "FROM produto where cod_categoria=$id";


// Maximo de registros por pagina
$maximo = 8;

// Declaração da pagina inicial
$pagina = $_GET["pagina"];
if($pagina == "") {
   $pagina = "1";
}

// Calculando o registro inicial
$inicio = $pagina - 1;
$inicio = $maximo * $inicio;

// Conta os resultados no total da query
$strCount = "SELECT COUNT(*) AS 'num_registros' $final_query";
$query = mysql_query($strCount);
$row = mysql_fetch_array($query);
$total = $row["num_registros"];


?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   <head>

       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
       <link rel="stylesheet" href="estilo.css">


       <title></title>

           <div id="conteudo_prod">
               <br><span class="titulos">Produtos</span> <?php
               $id = $_GET['id'];
               $sql = mysql_query("SELECT $campos_query $final_query LIMIT $inicio,$maximo");

               // Exibimos os nomes dos produtos e seus repectivos valores
               while ($row = mysql_fetch_array($sql)) {
                       $img=$row['imgp'];
                       $idp=$row['cod_produto'];?>
               <table border="0" cellpadding="0" cellspacing="0" bgcolor="#DAE0BE" align="left">

                   <div>
                   <tr>
                       <td bgcolor="#DAE0BE" width="10px"></td>
                       <td  width="121px"><p><span class="textos"><?php echo $row['nome'];?></span></p>
                       <?php echo "<img src=$img>"?><br><br>
                       <?php echo "<a href=\"detalhes.php?id=$idp\" target='conteudo'><img src='recortes/produto_bt_veja.jpg' border='0' align='right'/></a>";?>


                   <td width="14px" align="top" valign="top"><img src="recortes/produto_canto.jpg"></td>
                   <td bgcolor="#FFFFFF" width="10px"></td>



                   </tr>

                   <tr><td bgcolor="#FFFFFF" height="20px"></td>
                       <td bgcolor="#FFFFFF" height="20px"></td>
                       <td bgcolor="#FFFFFF" height="20px"></td>
                       <td bgcolor="#FFFFFF" height="20px"></td></tr>



               </table>
             <?php }
             $id = $_GET["id"];
              $menos = $pagina - 1;
              $mais = $pagina + 1;

              $pgs = ceil($total / $maximo);

              if($pgs > 1 ) {

                  echo "<br />";
             // Mostragem de pagina
             if($menos > 0) {
                   echo "<a href=".$_SERVER['PHP_SELF']."?pagina=$menos&cod=$id>anterior</a>  ";
                   }

            // Listando as paginas
                  for($i=1;$i <= $pgs;$i++) {
                       if($i != $pagina) {
                         echo " <a href=".$_SERVER['PHP_SELF']."?pagina=".($i)."&cod=$id>$i</a> | ";
                           } else {
                                 echo " <strong>".$i."</strong> | ";
                               }
                       } 

                  if($mais <= $pgs) {
                         echo " <a href=".$_SERVER['PHP_SELF']."?pagina=$mais&cod=$id>próxima</a>";
                       }
               }
?></div>


   </body>
</html>

 

Preciso disso urgente!

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

troca:

$query = mysql_query($strCount);

por:

$query = mysql_query($strCount)or die( mysql_error() );

entenda o erro e corrija.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz o que você sugeriu e deu a seguinte mensagem:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa que complicação tu fez.

 

Paginação é simplesmente isso:

 

SELECT * FROM tabela LIMIT 0,20

 

0 - Onde começa a paginação

20 - o limite de resultados.

 

Super simples.

 

Ai tu faz assim:

 

$_GET['pag'] - parâmetro que tu passa para ser a página.

 

$pag = $_GET['pag']-1*20;
$lmt = 20
SELECT * FROM tabela LIMIT $pag,$lmt

 

Olha que simples! Se a página for 1 ela será a página inicial, se for 2 será a segunda página e assim por diante!

 

Abraços Walker

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, fiz o que você sugeriu, mto orbigado...mas meu problema não é bem na paginação..mas sim ao passar o ID..

Meus produtos são divididos por categorias... e nessa página ai..ele pega o ID da categoria e lista os produtos somente de determinada categoria..

Não sei se deu pra entender..

O erro que da é na minha query..

segue o código novamente:

 


<?php
include ('conexao.php');


?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   <head>

       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
       <link rel="stylesheet" href="estilo.css">


       <title></title>

           <div id="conteudo_prod">
               <br><span class="titulos">Produtos</span> <?php

           //Faz a consulta SQL
           $id=$_GET['id'];
           $sql = mysql_query("SELECT * FROM produto where cod_categoria='$id' and LIMIT 0,20");

           // Exibimos os nomes dos produtos e seus repectivos valores
               while($row = mysql_fetch_array($sql)) {
                       $img=$row['imgp'];
                       $idp=$row['cod_produto'];?>
               <table border="0" cellpadding="0" cellspacing="0" bgcolor="#DAE0BE" align="left">

                   <div>
                   <tr>
                       <td bgcolor="#DAE0BE" width="10px"></td>
                       <td  width="121px"><p><span class="textos"><?php echo $row['nome'];?></span></p>
                       <?php echo "<img src=$img>"?><br><br>
                       <?php echo "<a href=\"detalhes.php?id=$idp\" target='conteudo'><img src='recortes/produto_bt_veja.jpg' border='0' align='right'/></a>";?>


                   <td width="14px" align="top" valign="top"><img src="recortes/produto_canto.jpg"></td>
                   <td bgcolor="#FFFFFF" width="10px"></td>



                   </tr>

                   <tr><td bgcolor="#FFFFFF" height="20px"></td>
                       <td bgcolor="#FFFFFF" height="20px"></td>
                       <td bgcolor="#FFFFFF" height="20px"></td>
                       <td bgcolor="#FFFFFF" height="20px"></td></tr>



               </table>


<?php

$pag = $_GET['pag']-1*20;
$lmt = 20;
"SELECT * FROM produto LIMIT $pag,$lmt";
               }
?>

               </div>


   </body>
</html>

 

Consegui achar a solução!!!

Segue o código!


<?php
include ('conexao.php');
//paginação;

if(isset($_GET["pag"]))
  $pag = $_GET["pag"];
else
  $pag = 1;

$quanti = 8; // mude para 8 para mostrar 8 registros por página.
$inicio = ($pag * $quanti) - $quanti;


?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   <head>

       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
       <link rel="stylesheet" href="estilo.css">


       <title></title>

           <div id="conteudo_prod">
               <br><span class="titulos">Produtos</span> <?php

           //Faz a consulta SQL
           //conexão com o servidor
           $conexao = mysql_connect("", "", "");
           $id=$_GET['id'];
           $sql = mysql_query("SELECT * FROM produto where cod_categoria='$id' limit $inicio, $quanti", $conexao);

           // Exibimos os nomes dos produtos e seus repectivos valores
               while($row = mysql_fetch_array($sql)) {
                       $img=$row['imgp'];
                       $idp=$row['cod_produto'];?>
               <table border="0" cellpadding="0" cellspacing="0" bgcolor="#DAE0BE" align="left">

                   <div>
                   <tr>
                       <td bgcolor="#DAE0BE" width="10px"></td>
                       <td  width="121px"><p><span class="textos"><?php echo $row['nome'];?></span></p>
                       <?php echo "<img src=$img>"?><br><br>
                       <?php echo "<a href=\"detalhes.php?id=$idp\" target='conteudo'><img src='recortes/produto_bt_veja.jpg' border='0' align='right'/></a>";?>


                   <td width="14px" align="top" valign="top"><img src="recortes/produto_canto.jpg"></td>
                   <td bgcolor="#FFFFFF" width="10px"></td>



                   </tr>

                   <tr><td bgcolor="#FFFFFF" height="20px"></td>
                       <td bgcolor="#FFFFFF" height="20px"></td>
                       <td bgcolor="#FFFFFF" height="20px"></td>
                       <td bgcolor="#FFFFFF" height="20px"></td></tr>



               </table>


           <?php } ?>
           <div id="paginacao"> <?php
           // seleciona a id do produto
            $sql3  = "select cod_produto from produto";
            $dados3 = mysql_query($sql3);
            $total =  mysql_num_rows($dados3);

           //ceil arredonda pra cima
           $paginas = ceil($total / $quanti);

           //este for varre o vetor de paginas e imprime a pagina atual entre [ ]
           for ($i = 1; $i <= $paginas; $i++){
                if($i == $pag){
                   echo "[$i]   ";
               }else {
                   echo "<a href='produtos.php?pag=$i&id=$id'>";
                   echo "$i </a>   ";
               }

                           }
?>
               </div>
               </div>


   </body>
</html>

 

Muito obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.