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

Dúvida em um Módulo de Busca usando MySQL


victor_santos

Pergunta

Pessoal, estou batendo cabeça faz uns 3 dias nesses código pra fazer o módulo de busca do meu site funcionar, a princípio é coisa bem básica, porém estou passando 3 argumentos como referência da busca (modelo,motor e ano).Só para nível de informação, o programa em questão é para controle de estoque de uma loja de peças automotivas ,portanto, a passagem de mais de um parâmetro na hora da busca já agiliza o processo de achar alguma peça, tendo em vista que tem milhares no estoque.

Segue o código abaixo:

<?php 
//captura informações do formulário 
$modelo = $_POST['modelo']; 
$motor = (float)($_POST['motor']); 
$ano = intval($_POST['ano']); 

// Usa a função mysql_real_escape_string() para evitar erros no MySQL
$modelo = mysql_real_escape_string($modelo);
$motor = mysql_real_escape_string($motor);
$ano = mysql_real_escape_string($ano);


//conecta-se ao banco de dados
$mysql['servidor']    = "localhost:8888";
$mysql['usuario']    = "root";
$mysql['senha']        = "root";
$mysql['banco']        = "banco";

$banco = mysql_connect($mysql['servidor'],$mysql['usuario'],$mysql['senha']);
if($banco == NULL)
{
    echo "Erro ao conectar o servidor!";
    exit();
}
else
{
    $con = mysql_select_db($mysql['banco'],$banco);
    if(!$con)
    {
        echo "Erro ao acessar a base de dados!";
        exit();
    }
}


//monta a query de busca, inserindo o nome como parâmetro  
$query ="SELECT * FROM `banco` WHERE (`modelo` LIKE '%$modelo%') AND (`motor` LIKE '%$motor%') AND (`ano` LIKE '%ano%')"; 

//executa a query 
$res = mysql_query($query); 



while($mostra = mysql_fetch_array($res)) {

$marca = $mostra['marca'];
$modelo = $mostra['modelo'];
$ano = $mostra['ano'];
$motor = $mostra['motor'];
$peca = $mostra['peca'];
$corlata = $mostra['corlata'];
$nportas = $mostra['nportas'];
$preço = $mostra['preço'];


echo "<tr>"; 
//exibe os resultados 

echo "<td> .$marca </td>"; 
echo "<td> .$modelo </td>"; 
echo "<td> .$ano </td>";
echo "<td> .$motor </td>";
echo "<td> .$peca </td>";
echo "<td> .$corlata </td>";
echo "<td> .$nportas </td>";
echo "<td> .$preço </td>"; 
echo "</tr>"; 
} 
//encerra a tabela 

//encerra a conexão mysq

mysql_close($con); 
?>

Estou usando um formulário POST para mandar os parâmetros da busca para o search.php.

O código original não era assim tão seco, desmembrei ele um pouco só pra ver se ele me mostrava alguma informação mesmo, mas não me retorna nada :/

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Victor,

Imprima a query na tela e verifique o que está chegando nela. Então cole e execute a query no mysql para ver se ela está correta.

//monta a query de busca, inserindo o nome como parâmetro  
  $query ="SELECT * FROM `banco` WHERE (`modelo` LIKE '%$modelo%') AND (`motor` LIKE '%$motor%') AND (`ano` LIKE '%ano%')"; 
  echo $query;
  exit;

Link para o comentário
Compartilhar em outros sites

  • 0

Galera, quero agradecer pela ajuda.

Fiz os passos citados por vocês e o navegador me retornou essa mensagem:

SELECT * FROM `banco` WHERE (`modelo` LIKE '%Toyota%') AND (`motor` LIKE '%2%') AND (`ano` LIKE '%ano%')

Warning: mysql_close() expects parameter 1 to be resource, boolean given in /Users/victor/mamp/search.php on line 78

Não sei o que pode estar errado, já revisei esse código várias vezes e para fazer essa busca do banco eu vasculhei por vários tutoriais na internet e seguí todos à risca.

Entrei como parâmetros para a busca: Toyota no campo modelo,2.0 no campo motor, e 2010 no campo ano.

Desculpem se essa dúvida é meio idiota pra vocês, mas como estou tendo que aprender tanto PHP como a mecher no MySQL sozinho, algumas coisas eu tenho um pouco de dificuldade pra assimilar o que leio.

Link para o comentário
Compartilhar em outros sites

  • 0

Solução referente a esse error:

Warning: mysql_close() expects parameter 1 to be resource, boolean given in /Users/victor/mamp/search.php on line 78
É a seguinte ,olhe bem essa linha:
mysql_close($con);
É pra colocar a variavel de resposta do mysql_connect Vendo a linha do mysql_connect():
$banco = mysql_connect($mysql['servidor'],$mysql['usuario'],$mysql['senha']);
Ou seja,eles não se correspondem. Pra resolver isso mude esse bloco de código:
$banco = mysql_connect($mysql['servidor'],$mysql['usuario'],$mysql['senha']);
if($banco == NULL)
{
    echo "Erro ao conectar o servidor!";
    exit();
}
else
{
    $con = mysql_select_db($mysql['banco'],$banco);
    if(!$con)
    {
        echo "Erro ao acessar a base de dados!";
        exit();
    }
}
Por isso:
$con = mysql_connect($mysql['servidor'],$mysql['usuario'],$mysql['senha']);
if($con == NULL)
{
    echo "Erro ao conectar o servidor!";
    exit();
}
else
{
    $bd = mysql_select_db($mysql['banco'],$con);
    if(!$bd)
    {
        echo "Erro ao acessar a base de dados!";
        exit();
    }
}

Link para o comentário
Compartilhar em outros sites

  • 0

Beleza, não tá mais dando erro..

Agora o navegador só me retorna isso:

SELECT * FROM `banco` WHERE (`modelo` LIKE '%Corolla%') AND (`motor` LIKE '%2%') AND (`ano` LIKE '%ano%')

Duas perguntas:

1)É impressão minha ou ele não está reconhecendo o campo "ano"?

2)Não era pra ele estar mostrando o que ele achou no banco de dados com esses parâmetros??

Link para o comentário
Compartilhar em outros sites

  • 0

já tentou fazer o select no banco de dados

SELECT * FROM `banco` WHERE (`modelo` LIKE '%Corolla%') AND (`motor` LIKE '%2%') AND (`ano` LIKE '%ano%')

Ver se da erro ou vai tudo ok..

@EDIT

Vai no phpmyadmin abre a tabela e em cima coloca em sql e executa esse sql de cima nele ver se da algum erro.

Editado por david.lyonnais
Link para o comentário
Compartilhar em outros sites

  • 0

Antes de ver o seu post já tinha me tocado do porquê do ano não estar aparecendo, era burrice minha..

Acho que agora está tudo certo :)

SELECT * FROM `banco` WHERE (`modelo` LIKE '%Corolla%') AND (`motor` LIKE '%2%') AND (`ano` LIKE '%2010%') ORDER BY `id`

3 Toyota Corolla 2010 2 Vidro 4 200

4 Toyota Corolla 2010 2 teto verde 4 200

Vou fazer esse negócio do phpmyadmin também, pra ter certeza que tá tudo certo!

@EDIT

Tudo certo no phpmyadmin David, Obrigado cara..

Agora o próximo passo é bolar um jeito mais bonitinho de mostrar o retorno da busca, deixar assim só no echo é sofrível! :P

Editado por victor_santos
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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...