Jump to content
Fórum Script Brasil
  • 0

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


Question

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 to post
Share on other sites

9 answers to this question

Recommended Posts

  • 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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.

Edited by david.lyonnais
Link to post
Share on other 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

Edited by victor_santos
Link to post
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.

Cloud Computing


  • Forum Statistics

    • Total Topics
      149287
    • Total Posts
      645679
×
×
  • Create New...