Otaner Posted May 12, 2015 Report Share Posted May 12, 2015 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&pag=1\">Primeira Página</a> "; for ($i = $pag-$links; $i <= $pag-1; $i++){ if ($i <= 0){ }else{ echo"<a href=\"index.php?pg=filtro&pag=$i\">$i</a> "; } } echo "$pag "; for($i = $pag +1; $i <= $pag+$links; $i++){ if($i > $paginas){ }else{ echo "<a href=\"index.php?pg=filtro&pag=$i\">$i</a> "; } } echo "<a href=\"index.php?pg=filtro&pag=$paginas\">Última página</a> "; } 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 Quote Link to comment Share on other sites More sharing options...
0 wootzor Posted May 12, 2015 Report Share Posted May 12, 2015 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. Quote Link to comment Share on other sites More sharing options...
0 Otaner Posted May 13, 2015 Author Report Share Posted May 13, 2015 Caro amigo não entendi. Por favor, pode explicar melhor. Grato, Renato Quote Link to comment Share on other sites More sharing options...
0 wootzor Posted May 13, 2015 Report Share Posted May 13, 2015 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. Quote Link to comment Share on other sites More sharing options...
0 Otaner Posted May 16, 2015 Author Report Share Posted May 16, 2015 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&pag=1\">Primeira Página</a> "; for ($i = $pag-$links; $i <= $pag-1; $i++){ if ($i <= 0){ }else{ echo"<a href=\"index.php?pg=filtro&pag=$i\">$i</a> "; } } echo "$pag "; for($i = $pag +1; $i <= $pag+$links; $i++){ if($i > $paginas){ }else{ echo "<a href=\"index.php?pg=filtro&pag=$i\">$i</a> "; } } echo "<a href=\"index.php?pg=filtro&pag=$paginas\">Última página</a> "; } ?> Grato, Renato Quote Link to comment Share on other sites More sharing options...
Question
Otaner
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:
A conexão com o Banco está assim:
Por favor, como corrijo este erro ?
Grato,
Renato
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.