Jump to content
Fórum Script Brasil
  • 0

Erro em PHP


Otaner
 Share

Question

Caros amigos.

Estou com o seguinte erro, que está me deixando doido e não consigo resolver.

O erro é esse abaixo:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\imobil\funcoes.php on line 350

Tentei de todas as formas (meus conhecimentos) resolver, mas não tive êxito.

Abaixo estou postando o meu código para paginar:

<!--Função para Paginar -->
<?php function paginator(){
    
    include"Connections/config.php"; //Faz conexão com o banco de dados

    $imovelStatus = 'pendente';
        
    //Paginação da página
    $pag = "$_GET[pag]";
    if($pag >= '1'){
     $pag = $pag;
     } else {
       $pag = '1';
    }

    $maximo = '5'; //RESULTADOS POR PÁGINA
    $inicio = ($pag * $maximo) - $maximo;

   $dataVal = date('Y-m-d H:m:s');
   $sql = 'SELECT * FROM imoveis WHERE imovelStatus = :imovelStatus ORDER BY imovelTermino >= :dataVal ASC LIMIT '.$inicio.','.$maximo;

    try{
      $query = $conecta->prepare($sql);
      $query->bindValue(':imovelStatus',$imovelStatus,PDO::PARAM_STR);
      $query->bindValue(':dataVal',$dataVal,PDO::PARAM_STR);
      $query->execute();
      
      $resultado = $query->fetchAll(PDO::FETCH_ASSOC);
      
      }catch(PDOexception $error){
         echo 'Erro ao selecionar pendentes';
      }

       $sql_res = mysql_query("SELECT * FROM imoveis WHERE imovelStatus = 'pendente' ORDER BY imovelTemino ASC");
       $total = mysql_num_rows($sql_res);  //Erro ocorre aqui - linha 350.

        $paginas = ceil($total/$maximo);
        $links = '3'; //QUANTIDADE DE LINKS NO PAGINATOR

        echo "<a href=\"index.php?pg=filtro&amp;pag=1\">Primeira Página</a>&nbsp;&nbsp;&nbsp;";

        for ($i = $pag-$links; $i <= $pag-1; $i++){
          if ($i <= 0){
          }else{
           echo"<a href=\"index.php?pg=filtro&amp;pag=$i\">$i</a>&nbsp;&nbsp;&nbsp;";
          }
        } echo "$pag &nbsp;&nbsp;&nbsp;";

        for($i = $pag +1; $i <= $pag+$links; $i++){
          if($i > $paginas){
          }else{
           echo "<a href=\"index.php?pg=filtro&amp;pag=$i\">$i</a>&nbsp;&nbsp;&nbsp;";
          }
        }
        echo "<a href=\"index.php?pg=filtro&amp;pag=$paginas\">Última página</a>&nbsp;&nbsp;&nbsp;";
  }

A conexão com o Banco está assim:

<?php

    define('HOST','localhost');
    define('DB','imobil');
    define('USER','root');
    define('PASS','');            

    $conexao = 'mysql:host='.HOST.'; dbname='.DB;

    try{
         $conecta = new PDO($conexao, USER, PASS);
         $conecta->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

       } catch(PDOexception $error_conecta) {
          echo htmlentities('Erro ao conectar'.$error_conecta->getMessage());
       }

?>

Por favor, como corrijo este erro ?

Grato,

Renato

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Esse erro costuma ocorrer quando a consulta devolve um result set vazio ou falha por algum outro motivo.

Tenta testa a consulta que estás a atribuir à variável $sql_res directamente no MySQL (ou phpMyAdmin, se tiveres acesso a algum dos dois) para confirmar.

Link to comment
Share on other sites

  • 0

Se fizeres debug ao programa, confirma se a variável $sql_res não está a false após a execução da consulta. Se estiver, experimenta executar a consulta directamente no phpMyAdmin (se tiveres acesso a tal) e vê se devolve o que estás a espera. Esse erro ocorre quando a variável "resultado" devia ser populada com um result set mas por algum motivo a consulta falha.

Link to comment
Share on other sites

  • 0

Caros amigos

Consegui resolver uma parte do meu problema.

Troquei essa linha:

$sql_res = mysql_query("SELECT * FROM imoveis WHERE imovelStatus = 'pendente' ORDER BY imovelTemino ASC");
$total = mysql_num_rows($sql_res);

Por essa e deu certo:

//Conexão com o Banco de Dados - para função paginar

$con = mysql_connect("localhost", "root", "");
mysql_select_db("imobil", $con);
$sql_res = mysql_query("SELECT * FROM imoveis WHERE imovelStatus = 'pendente' ORDER BY imovelTermino ASC") or die(mysql_error());
$total = mysql_num_rows($sql_res);
Agora estou com um problema que não mostra a quantidade de Dados na Tela, por exemplo: quero que mostre 5 dados por cada página.
Isso não faz, por que?
Abaixo postei novamente o código do Filtro e do Paginador.
<!--Função para Filtrar o Selecionar -->
<?php function get_filtro(){
	
	include"Connections/config.php";

      $tipo      = $_POST['tipo'];
      $categoria = $_POST['categoria'];
      $subCat    = $_POST['sub-cat'];
      $bairro    = $_POST['bairro'];
	  
	$dataVal = date('Y-m-d H:m:s');
	$sql = 'SELECT * FROM imoveis WHERE imovelTermino >= :dataVal AND imovelNegocio LIKE :tipo AND imovelTipo LIKE :categoria
	        AND ImovelBairro LIKE :subcat AND imovelComodos LIKE :bairro ORDER BY imovelId DESC';
	try{
		$query = $conecta->prepare($sql);
		$query->bindValue(':dataVal',$dataVal,PDO::PARAM_STR);
		$query->bindValue(':tipo','%'.$tipo.'%',PDO::PARAM_STR);
		$query->bindValue(':categoria','%'.$categoria.'%',PDO::PARAM_STR);
		$query->bindValue(':subcat','%'.$subCat.'%',PDO::PARAM_STR);
		$query->bindValue(':bairro','%'.$bairro.'%',PDO::PARAM_STR);
		$query->execute();
		
		$resultado = $query->fetchAll(PDO::FETCH_ASSOC);
		
		}catch(PDOexception $error_imovels){
		  echo 'Erro ao selecionar os imoves!'; 	
		}
		
		foreach($resultado as $res){
			$imovelID    = $res['imovelId'];
			$tipo        = $res['imovelTipo'];
			$negocio     = $res['imovelNegocio'];
			$valor       = $res['imovelValor'];
			$thumb       = $res['imovelThumb'];
			$titulo      = $res['imovelTitulo'];
			$dormitorios = $res['imovelComodos'];
			$data        = $res['imovelCadastro'];

         
           echo '<tr>';
		   echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'"><img src="timthumb.php?src=midias/'.$thumb.'&h=60&w=100&zc=1" alt="'.$titulo.'" title="'.$titulo.'" border="0" /></a></td>';
		   echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.$tipo.'</a></td>';
		   echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'"><strong>'.$negocio.'</strong></a></td>';
		   echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.$dormitorios.' Domitórios</a></td>';
		   echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'">'.date('d/m/Y',strtotime($data)).'</a></td>';
		   echo '<td align="center" bgcolor="#F0F0F0"><a href="index.php?pg=single&imovel='.$imovelID.'" class="veja_mais">Veja Mais</a></td>';
		   echo '</tr>';
         
		}
			
	}
	
?>


<!--Função para Paginar -->
<?php function paginator(){

    include"Connections/config.php";

    $imovelStatus = 'pendente';

    //Paginação da página
    $pag = "$_GET[pag]";
    if($pag >= '1'){
     $pag = $pag;
     } else {
       $pag = '1';
    }

    $maximo = '5'; //RESULTADOS POR PÁGINA P/ TESTE
    $inicio = ($pag * $maximo) - $maximo;

    $dataVal = date('Y-m-d H:m:s');
    $sql = 'SELECT * FROM imoveis WHERE imovelStatus = :imovelStatus ORDER BY imovelTermino >= :dataVal ASC LIMIT '.$inicio.','.$maximo;

    try{
      $query = $conecta->prepare($sql);
      $query->bindValue(':imovelStatus',$imovelStatus,PDO::PARAM_STR);
      $query->bindValue(':dataVal',$dataVal,PDO::PARAM_STR);
      $query->execute();
      
      $resultado = $query->fetchAll(PDO::FETCH_ASSOC);
      
      }catch(PDOexception $error){
         echo 'Erro ao selecionar pendentes';
      }
    

        //Conexão com o Banco de Dados - para função paginar
        $con = mysql_connect("localhost", "root", ""); 
               mysql_select_db("imobil", $con);

        $sql_res = mysql_query("SELECT * FROM imoveis WHERE imovelStatus = 'pendente' ORDER BY imovelTermino ASC") or die(mysql_error());
        $total = mysql_num_rows($sql_res);

      	$paginas = ceil($total/$maximo);
	  	$links = '4'; //QUANTIDADE DE LINKS NO PAGINATOR

		echo "<a href=\"index.php?pg=filtro&amp;pag=1\">Primeira Página</a>&nbsp;&nbsp;&nbsp;";

		for ($i = $pag-$links; $i <= $pag-1; $i++){
			if ($i <= 0){
			}else{
			 echo"<a href=\"index.php?pg=filtro&amp;pag=$i\">$i</a>&nbsp;&nbsp;&nbsp;";
			}
		} echo "$pag &nbsp;&nbsp;&nbsp;";

		for($i = $pag +1; $i <= $pag+$links; $i++){
			if($i > $paginas){
			}else{
			 echo "<a href=\"index.php?pg=filtro&amp;pag=$i\">$i</a>&nbsp;&nbsp;&nbsp;";
			}
		}
		echo "<a href=\"index.php?pg=filtro&amp;pag=$paginas\">Última página</a>&nbsp;&nbsp;&nbsp;";


  }

?>

Grato,
Renato
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
      150.1k
    • Total Posts
      647k
×
×
  • Create New...