Ir para conteúdo

POWERED BY:

Arquivado

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

Priscila Thompson

Erro mysql_fetch_array

Recommended Posts

Olá pessoal http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Se puderem me ajudar com o meu probleminha, agradeço demais! O erro que está dando é esse:

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Arquivos de programas\VertrigoServ\www\tabela2.php on line 32
Configurações:

MYSQL 5.0.22

phpmyadmin 2.10.0.2

PHP 5.2.1

Apache 2.0

 

Tenho uma base de dados com 3 tabelas:

1) tbl_representante (nome_representante, especialidade, endereco, id_bairro, id_cidade) tr

2) tbl_cidade (id_cidade, nome_cidade) tc

3) tbl_bairro (id_bairro, id_cidade, nome_cidade) tb

 

A idéia é fazer uma query através de 4 parâmetros: tr.nome_representante, tr.especialidade, tc.nome_cidade, tb.nome_bairro. Vou omitir o arquivo de conexão e o de funcionamento do ajax, pois estes funcionam corretamente (já que eles têm que conectar ao banco de dados para popular os selects).

 

Vamos aos códigos:

================================================================

consulta_ajax.php

 

<?phpinclude "conn.php";//PEGA AS CIDADES$sql = "                  SELECT id_cidade, nome_cidade        FROM tbl_cidade              ORDER BY nome_cidade"; //EXECUTA A QUERY               $sql = mysql_query($sql);       $row = mysql_num_rows($sql);?><script language="JavaScript" src="funcoes.js"></script><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title></head><body><form name="frmAjax" method="post" action="tabela2.php"> <label>Nome:  <input name="nome" type="text" id="nome" />  </label>  <br />  <label>Especialidade:  <select name="especialidade" id="especialidade">	<?	$query_espec = mysql_query("select distinct especialidade from tbl_representante order by especialidade");		while($query_espec_fetch = mysql_fetch_array($query_espec)){	?>	<option value="<?=$query_espec_fetch["especialidade"];?>"><?=$query_espec_fetch["especialidade"];?></option>	<?};?>	<option value="%" selected>Todos</option>  </select>  </label>  <br /><select name="cidades" onChange="Dados(this.value);">	<option value="0">--Selecione a cidade >></option>		    <? for($i=0; $i<$row; $i++) { ?>		       <option value="<? echo mysql_result($sql, $i, "id_cidade"); ?>">			   <? echo mysql_result($sql, $i, "nome_cidade"); ?></option>		    <? } ?></select><br /><select name="bairros">    <option id="opcoes">--Primeiro selecione a cidade--</option></select><input name="enviar" type="submit" id="enviar" value="Enviar" /></form></body></html>
========================================================================

 

========================================================================

resultados.php

 


$especialidade = $_POST['especialidade']; //pega especialidade

$bairro = $_POST['bairros']; //pega id do bairro

$cidade = $_POST['cidades']; // pega id da cidade

//Fim Pega os valores do form

 

?>

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

<head>

<meta http-equiv="Content-Type" content="text/html"/>

<title>Untitled Document</title>

</head>

 

<body>

<?

$sql2 = mysql_query("

SELECT

tr.nome_representante,

tr.especialidade,

tr.endereco,

tb.nome_bairro,

tc.nome_cidade

FROM

tbl_representante tr,

tbl_cidade tc,

tbl_bairro tb

WHERE

tr.nome_representante = '$nome'

AND tr.especialidade = '$especialidade'

AND tr.id_bairro = '$bairro'

AND tr.id_cidade = '$cidade'

AND tr.id_cidade = tc.id_cidade

AND tr.id_bairro = tb.id_bairro

");

 

$resultado = mysql_query($sql2,$conn);

while ($linha = mysql_fetch_array($resultado)) {

?>

<tr>

<td><? echo $linha['nome']; ?></td>

<td><? echo $linha['especialidade']; ?></td>

<td><? echo $linha['endereco']; ?></td>

<td><? echo $linha['bairro']; ?></td>

<td><? echo $linha['cidade']; ?></td>

</tr>

<?

}

?>

</body>

</html> linenums:0'><?phpinclude "conn.php";//Início Pega os valores do form$nome = $_POST['nome']; // pega nome$especialidade = $_POST['especialidade']; //pega especialidade$bairro = $_POST['bairros']; //pega id do bairro$cidade = $_POST['cidades']; // pega id da cidade//Fim Pega os valores do form?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><head><meta http-equiv="Content-Type" content="text/html"/><title>Untitled Document</title></head><body><?$sql2 = mysql_query(" SELECT tr.nome_representante, tr.especialidade, tr.endereco, tb.nome_bairro, tc.nome_cidade FROM tbl_representante tr, tbl_cidade tc, tbl_bairro tb WHERE tr.nome_representante = '$nome' AND tr.especialidade = '$especialidade' AND tr.id_bairro = '$bairro' AND tr.id_cidade = '$cidade' AND tr.id_cidade = tc.id_cidade AND tr.id_bairro = tb.id_bairro "); $resultado = mysql_query($sql2,$conn);while ($linha = mysql_fetch_array($resultado)) { ?> <tr> <td><? echo $linha['nome']; ?></td> <td><? echo $linha['especialidade']; ?></td> <td><? echo $linha['endereco']; ?></td> <td><? echo $linha['bairro']; ?></td> <td><? echo $linha['cidade']; ?></td> </tr> <?}?></body></html>

=============================================================

 

Uma observação que eu faço é a seguinte: esqueçam a história de like por causa do tr.nome_representante na consulta. Estou fazendo uma consulta que eu sei qual seria o retorno passando parâmetros que dão certo na consulta lá dentro do phpmyadmin. A consulta que eu faço lá e dá certo é essa:

 


AND tr.especialidade = 'EXAMES DE IMAGEM'

AND tr.id_bairro = '7'

AND tr.id_cidade = '2'

AND tr.id_cidade = tc.id_cidade

AND tr.id_bairro = tb.id_bairro; linenums:0'>SELECT tr.nome_representante, tr.especialidade, tr.endereco, tb.nome_bairro, tc.nome_cidadeFROM tbl_representante tr, tbl_cidade tc, tbl_bairro tbWHERE tr.nome_representante = 'LABS'AND tr.especialidade = 'EXAMES DE IMAGEM'AND tr.id_bairro = '7'AND tr.id_cidade = '2'AND tr.id_cidade = tc.id_cidadeAND tr.id_bairro = tb.id_bairro;

Alguém pode me dar uma luz do porquê desse troço não dar certo? PLEAAAAASE!! Não entendo o porque do mysql_fetch_array dar erro se a consulta está certa....

 

[]´s

 

Priscila

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro que esta havendo é a query que está arrada.Para saber o que está errado na query, tente imprimir ela no browser e executar a query no proprio mysql$sql = mysql_query($sql); echo $sql;exit;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho...Que na verdade esse erro acontece pq a query não está retornando nada, um conjunto vazio, por isso ele da esse erro...principalmente qdo você coloca ele em um loop.Para não aparecer mais isso usa um '@' : @mysql_fetch_array . Mas não aconselho utilizar isso, faça como o Daniel Ribeiro falou imprime o valor da query na tela.Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, colocando o

echo $sql2;exit;
depois da query, o erro mostrado foi:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Arquivos de programas\VertrigoServ\www\tabela2.php on line 40Resource id #4
A questão é: substituindo as variáveis $"whatever" por um valor de um campo da tabela a query é válida no phpMyAdmin. Estou anexando a imagem pra mostrar pra vcs que a query retorna o registro.

 

Imagem Postada

 

E agora, o que fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos ver se agora alguém consegue me ajudar..Ao colocar o seguinte código logo depois da query $sql2:

echo "<pre>"; while ($rs = mysql_fetch_assoc($sql2)) {   print_r($rs); }

a página retorna os seguintes valores:

Array(    [nome_representante] => LABS    [especialidade] => EXAMES DE IMAGEM    [endereco] => TEL. 25383600 (CENTRAL)    [nome_bairro] => CENTRO    [nome_cidade] => RIO DE JANEIRO)

Mas, quando eu insiro o comando mysql_fetch_array

$resultado = mysql_query($sql2);	while ($linha =  mysql_fetch_array($resultado)) { 	?>	<tr>	<td><? echo $linha['nome_representante']; ?></td>	<td><? echo $linha['especialidade']; ?></td>	<td><? echo $linha['endereco']; ?></td>	<td><? echo $linha['nome_bairro']; ?></td>	<td><? echo $linha['nome_cidade']; ?></td>	</tr>}

ele retorna o seguinte erro:

Warning:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Arquivos de programas\VertrigoServ\www\tabela2.php on line 56

O que está errado na montagem do resultado? Alguém tem alguma idéia??????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, no mysql_query, você deve indicar qual a conexão que está sendo realizada.

 

por exemplo

 

$query = mysql_query("select * from tabela",$conexaoAtiva);

 

Se o problema continuar da um post ae denovo.

 

Olha só http://br.php.net/mysql_query

 

Flwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

no mysql_query coloque um or die com um mysql_error() pra mostrar o erro. mysql_query( $sql2 ) or die( mysql_error() );se não identificar o erro é só postar

Compartilhar este post


Link para o post
Compartilhar em outros sites

voces pereceberam que estao respondendo uma pergunta do dia 9 de abril?a essas horas ela ja deve ter sanado a duvida...cuidado ao reviver topicos...

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.