Ir para conteúdo
Fórum Script Brasil
  • 0

Erro Com While


(!_Odisséa_!)

Pergunta

Bom dia. Estou fazendo uma página de busca em um BD MySQL. E fui formando um codigo, mas como fui fazendo lendo textos do forum e de outros lugares, não estou sabendo resolver o problema.

o codigo é esse:

<head>
<title>::: Busca :::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>
<form name="form1" id="form1" method="get" action="">
  Pesquisa:&nbsp;&nbsp;&nbsp; 
  <input type="text" name="pesq" id="pesq"/>
  &nbsp;&nbsp;
  <input type="submit" name="Submit" value="Submit" />
</form>
<? 
if ($_GET['Submit']) {
$login="name";
$senha="xxxx";
$host="host";

mysql_connect($host,$login,$senha);

mysql_select_db ("banco");

if ($_GET['pesq'] !="") {
    $pesquisa = "pesq=\"".$_GET['pesq']."\"";
} else {
    $pesquisa = "pesq<>\"94477692\"";
}
$query = "SELECT * FROM n_ori WHERE".$pesquisa;

$resultado = mysql_query ($query);

?>
<br />
<br />
<table width="95%" border="1" cellpadding="1" cellspacing="0" bordercolor="#990099">
  <tr> 
    <td colspan="3">Resultado da Busca:</td>
  </tr>
  <tr> 
    <td>Numero Fabricante</td>
    <td>Numero Original</td>
    <td>Aplica&ccedil;&atilde;o</td>
  </tr>
<? 
    while ($ok=mysql_fetch_object($resultado)){
    $URL = "view.php?id=".$ok->n_eng;
?>
  <tr> 
    <td><?=$ok->n_eng?></td>
    <td><?=$ok->n_ori?></td>
    <td><a href=<?=$URL?>>Amplia</a></td>
  </tr>
<?
    }
?>
</table>
<?
}
?>
</body>
</html>

Só que toda vez que mando rodar ele retorna um erro na linha que esta o WHILE.

O erro que aparece é o seguinte:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /webpoint/engrecon/busca/busca.php on line 47

alguém poderia me ajudar, por favor?

Muito obrigado.

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Então passa ele assim:

$resultado = mysql_query ("SELECT * FROM n_ori WHERE $pesquisa");

Seria interessante você passar a modelagem do seu BD para entender como deveria funcionar o seu script, porque eu acho que o select correto para você seria algo do jeito:

...SELECT * FROM n_ori WHERE coluna LIKE $pesquisa...

Ps.: Note que coluna é o lugar onde estará alocada a query ($pesquisa), isso possibilitará o mysql_fetch_object funcinar.

Link para o comentário
Compartilhar em outros sites

  • 0

ESerra, valeu pela dica, vou ver se funciona.

QUando você pede pra eu mostrar a modelagem do BD, você esta pedindo pra mostrar todos os campos, que tenho? tipo as colunas? POr exemplo: Imagem / n_eng / n_ori / descr / ..... assim.

Isso que eu acabei de escrever acima, são nomes de colunas do BD.

Valeu.

----

Cara não consegui, dá o mesmo erro e na linha do while.

você não em nenhum código pronto?

valeu.

Link para o comentário
Compartilhar em outros sites

  • 0

O que você quer com esse script?

Pelo que eu entendi você quer só pegar os dados de uma determinada linha, linha essa que será determinada pelo termo pego através do método GET, seria isso?

Se for isso é bem simples, mas como o seu problema está na sintaxe da pesquisa tenta o seguinte:

...SELECT * FROM tabela WHERE coluna LIKE $pesquisa... isso deve resolver, em anexo vai um código que funciona (você vai ter que montar os dados na tabela, mas isso é um detalhe):

<?
$sql = mysql_query("SELECT * FROM $bd WHERE $coluna LIKE $pesq");
while($l = mysql_fetch_array($sql)) {
$categoria = $l["categoria"];
$url = $l["url"];
$id = $l["id"];
}
?>

Note o seguinte, $categoria, $url e $id são colunas de uma tabela minha, você deve mudar para as colunas que você tiver (e forem do seu interesse serem pegas no array), depois de pegar elas bastar voce dar echo $id, echo $url, etc, dentro da sua tabela para os resultados aparecerem...

Link para o comentário
Compartilhar em outros sites

  • 0

oi cara, então. To começando achar que é algum erro do servidor ou do banco não é possivel.

Toda hora da erro nesse while. coloquei o novo codigo que você me passou:

<!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>
<title>::: Busca :::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>
<form name="form1" id="form1" method="get" action="">
  Pesquisa:&nbsp;&nbsp;&nbsp; 
  <input type="text" name="pesq" id="pesq"/>
  &nbsp;&nbsp;
  <input type="submit" name="Submit" value="Submit" />
</form>
<? 
if ($_GET['Submit']) {
$login="login";
$senha="senha";
$host="host";
$bd="produto";
$coluna="n_ori";

mysql_connect($host,$login,$senha);

mysql_select_db ("banco");

if ($_GET['pesq'] !="") {
    $pesquisa = "pesq=\"".$_GET['pesq']."\"";
} else {
    $pesquisa = "pesq<>\"94477692\"";
}

$sql = mysql_query("SELECT * FROM '$bd' WHERE '$coluna' LIKE '$pesquisa'");
/*while($l = mysql_fetch_array($sql)) {
$categoria = $l["n_eng"];
$url = $l["n_ori"];
$id = $l["descr"];
}*/
echo "$pesquisa";

}
?>
</body>
</html>

O que eu quero com o codigo é o seguinte, eu queria realizar uma busca em um banco de dados em uma determinada coluna, entendeu? Tem um codigo mais facil que esse?

Valeu. e desculpe a demora pra responder desta vez.

Link para o comentário
Compartilhar em outros sites

  • 0

Olha fiz um bd de teste aqui, a moldagem foi:

CREATE TABLE teste (

n_eng INT(10) NOT NULL,

n_ori VARCHAR(30) NOT NULL,

descr VARCHAR(255) NOT NULL,

PRIMARY KEY (n_eng)

);

Fiz umas alterações no seu script... lembre-se que variável (coisas que começam com $ não podem ir entre aspas simples '')

<!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>
<title>::: Busca :::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>
<form name="form1" id="form1" method="get" action="">
  Pesquisa:&nbsp;&nbsp;&nbsp;
  <input type="text" name="pesq" id="pesq"/>
  &nbsp;&nbsp;
  <input type="submit" name="Submit" value="Submit" />
</form>
<?
if ($_GET['Submit']) {
$login="login";
$senha="senha";
$host="localhost";
$bd="teste";
$coluna="n_eng"; // LEMBRE-SE É DAQUI QUE IRÁ SAIR A CONSULTA SE A SUA COLUNA FOR OUTRA ALTERE!!!!

mysql_connect($host,$login,$senha);

mysql_select_db (""); // ADICIONE AQUI O BD

if ($_GET['pesq'] !="") {
    $pesquisa = "".$_GET['pesq']."";
} else {
    $pesquisa = "94477692";
}

$sql = mysql_query("SELECT * FROM $bd WHERE $coluna LIKE $pesquisa");

while($l = mysql_fetch_array($sql)) {
$categoria = $l["n_eng"];
$url = $l["n_ori"];
$id = $l["descr"];
}
echo "$categoria <BR>";
echo "$url <BR>";
echo "$id <BR>";
}

?>
</body>
</html>

Testei e funfou... qualquer coisa pode olhar ai » http://www.edgarserra.com/teste/con_bd_sb.php é o script em ação, obviamente só cadastrei uma linha no bd, ela pode ser chamada pelo número 456405 , qualquer outra coisa que você digitar não vai retornar nada na tela pois não será encontrado no banco de dados...

Link para o comentário
Compartilhar em outros sites

  • 0

Meu.... deve ser problema do servidor, sei lá..... porque eu montei o mesmo bnco de dados que o seu, e coloquei o mesmo codigo que você me passou e continua dando o erro na porcaria desse WHILE, será que pode ser configuração do servidor? existe uma busca sem esse while?

valeu, mesmo pela paciencia e pela atenção.

da uma olhada: www.engrecon.com.br/busca/red.php os valore podem ser 1 ou 2.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu acho que você tá errando na hora de configurar no cpanel... lembre-se que você deve criar o banco de dados e relacionar um usuário a esse banco de dados... você já testou pra ver se em primero lugar a conexão com o banco de dados está sendo feita?

EDIT!!!

Tava testando o sistema de permissões do MySQL... e adivinha o que aconteceu quando eu removi a permissão do usuário acessar o BD...

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/*******/public_html/teste/con_bd_sb.php on line 35

Link para o comentário
Compartilhar em outros sites

  • 0

olha eu fiz aquele teste de conexão, sabe?

da uma olhada numa parte do código

$link = mysql_connect($host,$login,$senha);
if (!$link) {
   die('Não foi possível conectar: ' . mysql_error());
}
echo 'Conexão bem sucedida';

$db_selected = mysql_select_db('engrecon', $link);
if (!$db_selected) {
   die ('Can\'t use foo : ' . mysql_error());
}
echo 'Conexão de banco bem sucedida';

e deu tudo certo. Esta conectando direitinho.

Agora não sei, esse usuário que você esta falando? tem amis algum teste que eu possa saber se esse usuário esta conectado? Ou o usuário é aquele Login e senha que coloco antes de entrar no banco?

valeu.

Link para o comentário
Compartilhar em outros sites

  • 0

Duvido que trocar o while vá fazer o script funcionar, mesmo porque ele funciona comigo, o while é o modo mais simples de fazer loop, logo deveria funcionar em qualquer server de php... você não tem como conseguir outro server pra testar? Nem que você instale o php/mysql no seu pc...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...