Ir para conteúdo

POWERED BY:

Arquivado

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

Marcela Romero

Sistema busca em PHP

Recommended Posts

Boa Tarde !!!

 

Sou nova aqui no forum e estou desenvolvendo meu tcc de Web Design onde nosso site será de cotação de preço de produtos de supermercados aqui da cidade, e no site terá um botao de busca onde a pessoa digitará o produto desejado e aparecerá o resultado, porém estou tendo dificuldades...Alguem poderia me ajudar explicando detalhadamente como fazer esse sistema de busca

Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um sistema de busca basicamente é uma requisição ao banco(MYSQL por exemplo) que vai utilizar SELECT CAMPO(preço por exemplo,pode ser mais de um) FROM TABELA(Aonde estão os produtos) WHERE CAMPO X LIKE PARAMETRO Y. Essa é a ideia central, não tem muito segredo. Campo X, é o campo pelo qual tu vai fazer consulta, por exemplo: Campo NOME(O nome do produto), já o SELECT, tu pode selecionar mais de um campo(nome, preço, estoque, por exemplo). Já o WHERE, é o que faz a comparação para ver se o valor pesquisado(pelo usuário) "bate" com algum no banco, o segredo aqui é o LIKE. Dá uma olhadinha nesse tuto: http://blog.thiagobelem.net/sistema-de-busca-em-php-e-mysql/

Compartilhar este post


Link para o post
Compartilhar em outros sites

no banco 3 tabelas se comunicam... a tabela produto, valor e mercado... onde na tabela valor tem chave estrangeira da tabela mercado e da produto, pois um mesmo produto pode ter diferentes preços em dois supermercados.

estou com dificuldade em usar inner join e exibir os resultados em outra pagina....

estou usando ajaz para substituir somente o conteudo do site.

Compartilhar este post


Link para o post
Compartilhar em outros sites

consulta inner join, para o seu caso ficaria mais ou menos assim:

 

SELECT * FROM valor V INNER JOIN mercado M ON V.campo = M.campo INNER JOIN produtos P ON P.campo=V.campo WHERE P.campo LIKE '%shampoo%'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você passaria o valor digitado no campo, se estiver usando POST faria: $_POST['nome_do_campo_do_formulario'] se estiver usando GET: $_GET['nome_do_campo_do_formulario']

 

Na sua query:

 

 

$valor = isset($_POST['campo']) ? $_POST['campo'] : $_GET['campo'];

SELECT * FROM valor V INNER JOIN mercado M ON V.campo = M.campo INNER JOIN produtos P ON P.campo=V.campo WHERE P.campo LIKE '%$valor%'

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz todo o select, montei a pagina resultado porem nao estou conseguindo acertar os modos de apresentar

 

a pagina resultado nao reconhece a variavel txt_pesquisa pois é o id do botao cotar que esta na index

 

pagina resultado.php

 

<style type="text/css">
table{border-spacing:10px; float:right;}
</style>
<?php
include "../bd/conexao_mysql.php";
$busca=$_POST["txt_pesquisa"];
if (isset($_POST["btn_cotar"]));{
$resultado=mysql_query("SELECT *FROM tbproduto inner join tbvalor on tbvalor.codproduto=tbproduto.idproduto inner join tbmercado on tbvalor.codmercado=tbmercado.idmercado inner join tbsecaoproduto on tbproduto.codsecaoproduto=tbsecaoproduto.idsecaoproduto where nomeproduto LIKE '%".$busca."%' order by valor, nomeproduto");
echo "<table width='70%'> <tr><th width='29%' align='center' valign='middle' id='produto'>Produto</th><th width='29%' align='center' valign='middle' id='produto'>Descrição</th><th width='29%' align='center' valign='middle' id='produto'>Valor</th><th width='29%' align='center' valign='middle' id='produto'>Mercado</th></tr>";
while ($linha=mysql_fetch_array($resultado))
{
$imagem=$linha["imagem"];
$nome=$linha["nomeproduto"];
$peso=$linha["peso"];
$un=$linha["unidade"];
$tam=$linha["tamanho"];
$v=$linha["valor"];
$nm=$linha["nomefantasia"];
echo "<tr> <td><img src='".$imagem."'/></td>
<td>".$nome. "<br>".$un. "<br>".$peso."<br>".$tam." </td>
<td>".$v. "</td>
<td>".$nm."</td></tr>";
}
echo "</tr>";
echo "</table>";
}
//mysql_close(res);
?>
</div>
meu botao de busca esta na index
<div id="barrapesquisa">
<FORM method="post" action="JavaScript: abrir('resultado.php','corpo');">
<div> <input class="txt_busca" type="text" name="txt_pesquisa" id="txt_pesquisa" maxlength="20"size"20"/> </div>
<div> <input class="btn_cotar" type="submit" name="btn_cotar" id="btn_cotar" value="Cotar" /> <!--<img src="../images/cotar.png"/>--> </div>
</FORM>
</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que você quer abrir a popup, utilize a função fora do action, pois do modo em que está a página resultado não vai reconhecer. Teste sem a popup e veja se consegue recuperar o valor digitado.

<FORM method="post" action="resultado.php">

 

E isso aqui vai te gerar um erro. Devido ao " ; " no final do IF a menos que você tenha errado ao colar aqui.




if (isset($_POST["btn_cotar"]));{

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcela, seu problema agora não é mais PHP.

 

Vejamos.

 

 

 

 

<FORM method="post" action="resultado.php" name="dados" id="dados">
<div> <input class="txt_busca" type="text" name="txt_pesquisa" id="txt_pesquisa" maxlength="20" /> </div>
<div> <input class="btn_cotar" type="submit" name="btn_cotar" id="btn_cotar" value="Cotar" /> <!--<img src="../images/cotar.png"/>--> </div>
</FORM>

resultado.php

 

 

 

 

<?php
include "../bd/conexao_mysql.php";

$busca= isset($_POST["txt_pesquisa"]) ? $_POST["txt_pesquisa"] : false;

if (isset($_POST["btn_cotar"]))
{
   print $busca;
}
?>

Vai executar corretamente. Sua maneira de tentar utilizar o ajax é que está incorreta. Está usando jQuery ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcela, seu problema agora não é mais PHP.

 

Vejamos.

 

 

 

 

<FORM method="post" action="resultado.php" name="dados" id="dados">
<div> <input class="txt_busca" type="text" name="txt_pesquisa" id="txt_pesquisa" maxlength="20" /> </div>
<div> <input class="btn_cotar" type="submit" name="btn_cotar" id="btn_cotar" value="Cotar" /> <!--<img src="../images/cotar.png"/>--> </div>
</FORM>

resultado.php

 

 

 

 

<?php
include "../bd/conexao_mysql.php";

$busca= isset($_POST["txt_pesquisa"]) ? $_POST["txt_pesquisa"] : false;

if (isset($_POST["btn_cotar"]))
{
   print $busca;
}
?>

Vai executar corretamente. Sua maneira de tentar utilizar o ajax é que está incorreta. Está usando jQuery ?

estou utilizando somente uma galeria Jquery para colocar um banner no inicio. e a abertura das paginas do menu esta abrindo corretamente dentro do div corpo

 

esse codigo que vc passou seria incluido na index?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, este código que eu te passei é apenas uma prova de que sua rotina php funciona.

 

 

Sua busca funciona, o modo como está querendo exibir é que está o problema... vamos passo a passo.

 

Você quer fazer a busca, certo ? OK. Esquece o ajax, tente primeiro dar conta de seu sistema de busca, e sua consulta SQL, depois você da um estudada no jquery para fazer os demais implementos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu problema ta sendo justamento esse, em chamar o resultado da busca...e como nao sou expert fica um um pouco dificil entender códigos pesquisados...

 

nao entendi onde usarei o jquery nesse caso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então não utilize !

 

Faça sem javascript, pois você não tem conhecimento sobre, então façamos apenas com PHP para não te complicar ainda mais, visando que você não fez o código, fica difícil ajudá-la.

 

Na sua index temos:

 

 

 

<div id="barrapesquisa">
<FORM method="post" action="resultado.php">
<div> <input class="txt_busca" type="text" name="txt_pesquisa" id="txt_pesquisa" maxlength="20"size"20"/> </div>
<div> <input class="btn_cotar" type="submit" name="btn_cotar" id="btn_cotar" value="Cotar" /> <!--<img src="../images/cotar.png"/>--> </div>
</FORM>

</div>

Na sua página resultado.php ficará assim:

 

 

 

 

<?php
include "../bd/conexao_mysql.php";

if($_SERVER['REQUEST_METHOD']=='POST' and isset($_POST['btn_cotar']))
{

$busca= isset($_POST["txt_pesquisa"]) ? $_POST["txt_pesquisa"] : false;


$resultado=mysql_query("SELECT * FROM tbproduto inner join tbvalor on tbvalor.codproduto=tbproduto.idproduto inner join tbmercado on tbvalor.codmercado=tbmercado.idmercado inner join tbsecaoproduto on tbproduto.codsecaoproduto=tbsecaoproduto.idsecaoproduto where nomeproduto LIKE '%".$busca."%' order by valor, nomeproduto");

echo "<table width='70%'> <tr><th width='29%' align='center' valign='middle' id='produto'>Produto</th><th width='29%' align='center' valign='middle' id='produto'>Descrição</th><th width='29%' align='center' valign='middle' id='produto'>Valor</th><th width='29%' align='center' valign='middle' id='produto'>Mercado</th></tr>";

while ($linha=mysql_fetch_array($resultado))
{
$imagem=$linha["imagem"];
$nome=$linha["nomeproduto"];
$peso=$linha["peso"];
$un=$linha["unidade"];
$tam=$linha["tamanho"];
$v=$linha["valor"];
$nm=$linha["nomefantasia"];


echo "<tr> <td><img src='".$imagem."'/></td>
<td>".$nome. "<br>".$un. "<br>".$peso."<br>".$tam." </td>
<td>".$v. "</td>
<td>".$nm."</td></tr>";

}



echo "</tr>";
echo "</table>";

}
//mysql_close(res);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

aparece o seguinte erro

 

Undefined index: txt_busca in C:\xampp\htdocs\marcela\coteja_php\paginas\resultado.php on line 10



lembrando que eu ja tenho uso do ajax no site para chamar outras paginas.... nao posso tirá-lo

Compartilhar este post


Link para o post
Compartilhar em outros sites

.



resultado .php

 

 

<style type="text/css">
table{border-spacing:10px; float:right;}
</style>
<?php
include "../bd/conexao_mysql.php";
$busca=$_POST["txt_busca"];
if (isset($_POST["btn_cotar"]))
{
$resultado=mysql_query("SELECT *FROM tbproduto inner join tbvalor on tbvalor.codproduto=tbproduto.idproduto inner join tbmercado on tbvalor.codmercado=tbmercado.idmercado inner join tbsecaoproduto on tbproduto.codsecaoproduto=tbsecaoproduto.idsecaoproduto where nomeproduto LIKE '%".$busca."%' order by valor, nomeproduto");
echo "<table width='70%'> <tr><th width='29%' align='center' valign='middle' id='produto'>Produto</th><th width='29%' align='center' valign='middle' id='produto'>Descrição</th><th width='29%' align='center' valign='middle' id='produto'>Valor</th><th width='29%' align='center' valign='middle' id='produto'>Mercado</th></tr>";
while ($linha=mysql_fetch_array($resultado))
{
$imagem=$linha["imagem"];
$nome=$linha["nomeproduto"];
$peso=$linha["peso"];
$un=$linha["unidade"];
$tam=$linha["tamanho"];
$v=$linha["valor"];
$nm=$linha["nomefantasia"];
echo "<tr> <td><img src='".$imagem."'/></td>
<td>".$nome. "<br>".$un. "<br>".$peso."<br>".$tam." </td>
<td>".$v. "</td>
<td>".$nm."</td></tr>";
}
echo "</tr>";
echo "</table>";
}
//mysql_close(res);
?>
</div>


index.php

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="CoteJá- O seu site de cotação" />
<meta name="keywords" content="cotacao, menor preco, mais barato, Sao Jose do Rio Preto, pesquisa de precos, site, sites, cotacao on-line ">
<meta http-equiv="content-language" content="pt-br" />
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta name="author" content="CoteJa">
<title>Cote Já</title>
<link rel="stylesheet" href="../css/estilo2.css" type="text/css" />
<link rel="stylesheet" href="../css/screen.css" type="text/css" media="screen" />
<link rel="shortcut icon" href="../images/favicon.ico">
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/easySlider1.7.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#slider").easySlider({
auto: true,
continuous: true
});
mostrarTexto();
});
function esconderTexto()
{
$('#container').hide();
$('#container2').show();
}
function mostrarTexto()
{
$('#container').show();
$('#container2').hide();
}
</script>
<script>
function teste_submit()
{
var obj_form = document.getElementById('formulario');
var obj_nome = document.getElementById('nome');
var obj_email = document.getElementById('email');
var obj_assunto = document.getElementById('assunto');
var obj_opcradio = document.getElementById('opcradio');
var obj_mensagem = document.getElementById('mensagem');
var erroAssunto = document.getElementById('erroAssunto');
var erroNome = document.getElementById('erroNome');
var erroEmail= document.getElementById('erroEmail');
var erroConheceu= document.getElementById('erroConheceu');
var msg_erro = '';
if(obj_nome.value == '')
{
msg_erro = 'Preencha seu nome';
erroNome.innerHTML = msg_erro;
}else{
erroNome.innerHTML = '';
}
if(obj_email.value == '')
{
msg_erro='Email Obrigatório';
erroEmail.innerHTML=msg_erro;
}else{
erroEmail.innerHTML = '';
}
if(obj_assunto.value=='')
{
msg_erro='Selecione um assunto';
erroAssunto.innerHTML=msg_erro;
}else{
erroAssunto.innerHTML='';
}
if(obj_opcradio.value=='')
{
msg_erro='Selecione uma opção';
erroConheceu.innerHTML=msg_erro;
}else{
erroConheceu.innerHTML='';
}
if(obj_mensagem.value=="")
{
msg_erro='Digite sua mensagem ';
erroMensagem.innerHTML=msg_erro;
}else {
erroMensagem.innerHTML='';
}
if(msg_erro == '')
obj_form.submit();
}
</script>
<?php //header("Content-Type: text/html; charset=ISO-8859-1",true) ?>
<script type="text/javascript">
function id( el ){
return document.getElementById( el );
}
function getHTTPObject(){
if(window.XMLHttpRequest){
return new XMLHttpRequest();
}else if(window.ActiveXObject){
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
for(var i = 0; i < prefixes.length; i++){
try {
return new ActiveXObject(prefixes + ".XMLHTTP");
} catch (e) {}
}
}
}
function abrir( pagina, idcomp ){
var xmlHttp = getHTTPObject();
xmlHttp.open("GET", pagina, true);
xmlHttp.onreadystatechange = function(){
if ( xmlHttp.readyState == 4 )
{
id( idcomp ).innerHTML = xmlHttp.responseText;
}
}
xmlHttp.send( null );
}
window.onload = function(){
abrir('inicio.php','corpo');
}
</script>
</head>
<body>
<div id="topo"> <img src="../images/topo.png" width="100%" height="92"/>
<!-- ############## MENU ########################-->
<div id="home"><font class="cor"> <a href="JavaScript: abrir('inicio.php','corpo');mostrarTexto();"> Home </a>  |</font> </div>
<div id="secoes"> <font class="cor"><a href="JavaScript: abrir('secoes.php','corpo');mostrarTexto();">Seções </a>   | </font></div>
<div id="mercados"><font class="cor"> <a href="JavaScript: abrir('mercados.php','corpo');mostrarTexto();"> Mercados</a></font></div>
<div id="logo"> <a href="JavaScript: abrir('inicio.php','corpo');mostrarTexto();"><img src="../images/coteja.png" /> </a></div>
<div id="ofertas"> <font class="cor"> <a href="JavaScript: abrir('ofertas.php','corpo');mostrarTexto();"> Ofertas </a>  |</font></div>
<div id="receitas"> <font class="cor"> <a href="JavaScript: abrir('receitas.php','corpo');esconderTexto();"> Receitas </a>  |</font></div>
<div id="contato"> <font class="cor"> <a href="JavaScript: abrir('contato.php','corpo');mostrarTexto();"> Contato </a></font> </div>
<p class="slogan">           Economizar ficou mais fácil</p> <br />
</div>
<div id="container">
<div id="slider">
<ul>
<li> <img src="../images/erduraselegumes.jpg" alt="Css Template Preview" /></li>
<li> <img src="../images/foto_coqueteis.jpg" alt="Css Template Preview" /></li>
<li> <img src="../images/1.png" alt="Css Template Preview" /></li>
</ul>
</div>
</div>
<div id="container2">
<img src="../images/banner_receita2.png" />
</div>
<div id="barrapesquisa">
<FORM method="post" action="JavaScript: abrir('resultado.php','corpo');">
<div> <input class="txt_busca" type="text" name="txt_busca" id="txt_busca" maxlength="20"size"20"/> </div>
<div> <input class="btn_cotar" type="submit" name="btn_cotar" id="btn_cotar" value="Cotar" /> <!--<img src="../images/cotar.png"/>--> </div>
</FORM>
</div>
<div id="corpo" > </div> <!--corpo-->
<div id="rodape">
<ul class="col1">
<li>    <img src="../images/logofooter.png" /></li>
<br /><br />
<li> <a href="https://www.facebook.com/" target="_new"><img src="../images/facebook.png"/></a></li>   
<li> <a href="https://accounts.google.com/" target="_new"><img src="../images/google+.png" /></a></li>   
<li> <a href="https://www.twitter.com/" target="_new"><img src="../images/twitter.png"/></a></li>
</ul>
<ul class="col2">
<li class="titulo">Seções </li>
<li> Bolachas/Biscoitos</li>
<li> Padaria/Confeitaria</li>
<li> Higiene e Perfumaria</li>
<li> Bebidas em geral</li>
<li> Frios/Laticínios</li>
<li> Leite e Iogurte</li>
<li> Bombonieri</li>
<li> Diet/Light</li>
</ul>
<ul class="col3">
<br />
<li> Mercearia</li>
<li> Congelado</li>
<li> Café e Cia</li>
<li> Limpeza</li>
<li> Carnes</li>
<li> Massas</li>
<li> Feira</li>
<li> Chá</li>
</ul>
<ul class="col4">
<li class="titulo"> Receitas </li>
<li> <a href="JavaScript: abrir('receitasdietlight.php','receitasdestaque');">Diet/Light</a> </li>
<li> Salgados </li>
<li> Entradas </li>
<li> Bebidas </li>
<li> Saladas </li>
<li> Carnes </li>
</ul>
<ul class="col5">
<br />
<li> Massas </li>
<li> Doces </li>
<li> Bolos </li>
<li> Tortas </li>
<li> Sopas </li>
<li> Pães </li>
</ul>
<ul class="col6">
<li class="titulo"> Institucional </li>
<li> Termos de Uso e Condições</li>
<li> Política de Privacidade</li>
<li> Publicidade</li>
<li class="titulo"> Mercados </li>
<li> Mercados Cadastrados </li>
</ul>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcela, eu te passei as alterações a serem feitas e estudadas, você me trouxe o mesmo código anterior... fica difícil eu te ajudar dessa forma sem que você matenha o fôco no que está fazendo.

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.