Ir para conteúdo

POWERED BY:

Arquivado

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

reme

Sistema de Pesquisa Interna PHP

Recommended Posts

Boas pessoal, a questão aqui é simples, mais ta me confundindo, e fiz esse script de pesquisa interna e ele funcionou perfeitamente, mais tarde inseri mais alguns campos e provavelmente mexi em algo que não devia e não estou conseguindo identificar onde esta o erro ja que estou seguindo a mesma logica de quando fiz pela primeira vez..

 

O erro é o seguinte: quando rodo o codigo ele até me traz resultados, por exemplo, se digito ana, ele me traz ana e rogerio, mas se digito rogerio aí ele me tras só rogerio

 

include "../conect/conecta.php";

function moeda($get_valor) {  
       $source = array('.', ',');  
       $replace = array('', '.');  
       $valor = str_replace($source, $replace, $get_valor); //remove os pontos e substitui a virgula pelo ponto  
       return $valor; //retorna o valor formatado para gravar no banco  
       }  

               $id = $_POST["id"];
               $datacad =  $_POST["datacad"];
               $novadata  = substr($datacad,6,4)."-".substr($datacad,3,2)."-".substr($datacad,
0,2);
               $cliente = addslashes($_POST["cliente"]);
               $orcado = addslashes($_POST["orcado"]);
               $empresaparceira = addslashes($_POST["empresaparceira"]);
               $localidade = addslashes($_POST["localidade"]);
               $quilometro = $_POST["quilometro"];
               $v_transporte=moeda($_POST["v_transporte"]);
               $v_equipe =moeda($_POST["v_equipe"]);
               $cidade = $_POST["listCidades"];
               $estado = $_POST["listEstados"];
               $end = addslashes($_POST["end"]);
               $dataentrega = $_POST["dataentrega"];
               $novaentrega = substr($dataentrega,6,4)."-".substr($dataentrega,3,2)."-".substr($
dataentrega,0,2);
               $veiculo = addslashes($_POST["veiculo"]);
               $obs = addslashes($_POST["obs"]);
               $descricao = addslashes($_POST["descricao"]);

$campos = array(); 

if (!empty($id)) { // primeira busca
 $campos[] = "id LIKE '%{$id}%'";
}
if (!empty($novadata)) { // segunda busca
 $campos[] = "datacad LIKE '%{$novadata}%'"; 
} 
if (!empty($cliente)) { // segunda busca
 $campos[] = "cliente LIKE '%{$cliente}%'"; 
} 
if (!empty($orcado)) { // segunda busca
 $campos[] = "orcado LIKE '%{$orcado}%'"; 
} 
if (!empty($empresaparceira)) { // segunda busca
 $campos[] = "empresaparceira LIKE '%{$empresaparceira}%'"; 
} 
if (!empty($localidade)) { // segunda busca
 $campos[] = "localidade LIKE '%{$localidade}%'"; 
} 
if (!empty($quilometro)) { // segunda busca
 $campos[] = "quilometro LIKE '%{$quilometro}%'"; 
} 
if (!empty($cidade)) { // segunda busca
 $campos[] = "cidade LIKE '%{$cidade}%'"; 
} 
if (!empty($estado)) { // segunda busca
 $campos[] = "estado LIKE = '%{$estado}%'"; 
} 
if (!empty($end)) { // segunda busca
 $campos[] = "end LIKE = '%{$end}%'"; 
}
if (!empty($veiculo)) { // segunda busca
 $campos[] = "veiculo LIKE = '%{$veiculo}%'"; 
}  
if (!empty($novaentrega)) { // segunda busca
 $campos[] = "dataentrega LIKE '%{$novaentrega}%'"; 
} 
if (!empty($obs)) { // segunda busca
 $campos[] = "observacao LIKE '%{$obs}%'"; 
} 
if (!empty($descricao)) { // segunda busca
 $campos[] = "descricao LIKE '%{$descricao}%'"; 
} 
if (!empty($v_quipe)) { // segunda busca
 $campos[] = "valorequipe LIKE '%{$v_equipe}%'"; 
} 
if (!empty($v_transporte)) { // segunda busca
 $campos[] = "valortransporte LIKE '%{$v_transporte}%'"; 
} 

$resultado = "Select * FROM cadorcamento"; 
if (count($campos)) {
 $resultado .= " WHERE ".join(" OR ", $campos);
} 

$resultado .= " ORDER BY id DESC";
$sql = mysql_query($resultado);
if(!$sql){echo mysql_error();exit();}

$count = mysql_num_rows($sql);
// conta quantos registros encontrados com a nossa especificação
if ($count == 0) {
       echo "Nenhum resultado encontrado!";
} else {
       // senão
       if ($count == 1) { ?>
       <html><div align="center"> <? echo "1 resultado encontrado!"; ?> </div></html>
       <? 
       }
       // se houver um resultado diz que existe um resultado
       if ($count > 1) { ?>
       <html><div align="center"> <? echo "$count resultados encontrados!"; ?></div></html>
       <?
       }
       // se houver mais de um resultado diz quantos resultados existem
       while ($dados = mysql_fetch_array($sql)) {
       // enquanto houverem resultados...

?>                      
<html>
<div>Número do Orçamento:<? echo $dados["id"];?> 
<div class="right">Data do Cadastro:<? echo $dados["datacad"];?></div></div>
<? echo "<p>"; ?>
<div>Cliente/Contato:<? echo $dados["cliente"];?>
<div class="right">Orçado Por:<? echo $dados["orcado"];?></div></div>
<? echo "<p>";?>
<div>Endereço da Entrega:<? echo $dados["end"];?>
<div class="right">Cidade:<? echo $dsc_cidade?> - Estado: <? echo $dsc_estado;?></div></div>
<? echo "<p>";?>
<div>Empresa Parceira:<? echo $dados["empresaparceira"];?>
<div class="right">Localidade:<? echo $dados["localidade"];?></div></div>
<? echo "<p>";?>
<div>Data da Entrega:<? echo $dados["dataentrega"];?>
<div>Distancia:<? echo $dados["quilometro"];?>Km</div></div>
<div align="right">Valor de Equipe: <? echo $dados["valorequipe"];?></div>
<div class="right">Valor do Transporte:<? echo $dados["valortransporte"];?></div>
<? echo "<p>";?>
<div>Veiculo:<? echo $dados["veiculo"];?></div>
<? echo "<p>";?>
<div>Observações: <h3><pre><? echo $dados["obs"];?></pre></h3></div>
<div>Descrição:<h3><pre><? echo $dados["descricao"]?></pre></h3></div>
<div class="left"><a href='../editar.php?id=<? echo "$id" ?>'>Editar</a></div>
<div align="center"><a href='deletar.php?id=<? echo "$id" ?>'>Excluir</a></div><br>
<? echo "<hr>";?>
</html>
<?
       }
}
?>

 

 

 

criei o codigo a partir de exemplo que vi na internet, porém os exemplos que vi eram para um campo só, adaptei para que atendesse a multiplos campos de pesquisa. (Lembrando que no começo ele funcionou perfeitamente, só me passou a dar erros quando acrescentei mais alguns campos de pesquisa).

 

olá a todos, a situação agora mudou.

o codigo passou a funcionar corretamente...

Por que? isso eu não sei.

o que foi feito? bem eu tinha duas inserções no banco, uma com id nº127 e outra com id nº 132, exclui o nº127 e adicionei o nº133, apartir de então o codigo passou a funcionar (não tenho certeza se foi esse realmente o motivo)...

Mais enfim, se foi esse mesmo o motivo, tenho medo de que sem mais nem menos ao fazer algumas exclusões no banco o codigo passe a gerar erros novamente.

Então se puderem continuar analizando o codigo...

um abraço a todos que postarem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo , troque as tags <? , pra <?php

 

Abraços

acredito que não seja o caso, caso contrario iria gerar um erro fatal e não trabalhar de forma errada apenas

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho pessoal, a logica que eu usei para este caso parece perfeita, mais muitas vezes o codigo não funciona corretamente

Compartilhar este post


Link para o post
Compartilhar em outros sites
quando rodo o codigo ele até me traz resultados, por exemplo, se digito ana, ele me traz ana e rogerio, mas se digito rogerio aí ele me tras só rogerio

ficou muito vago isso.

 

$resultado .= " ORDER BY id DESC";
echo $resultado;

 

analise como ficou a string SQL.

Não consegui entender 'o erro'.

 

Eu faria desta forma também, não vi nada de anormal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu tentar explicar melhor o erro.

 

diga mos que tenho a seguinte tabela:

 

Nome ------------- Idade -------------- Sexo

Junior ----------- 22 -------------- M

Sandra ----------- 18 -------------- F

Thiago ----------- 32 -------------- M

Henrique --------- 40 -------------- M

 

caso eu preencha nos campos nome -> junior e idade -> 18 a resposta deveria ser:

Junior e Sandra

caso eu preencha no campo nome -> Thiago a resposta deveria ser:

Thiago

Porém o que acontece é que no primeiro caso a resposta vem correta e no segundo vem:

Thiago e Sandra e Henrique.

isso é só um exemplo, os resultados estão sendo muito inesperados. pesquiso por cibeli e me aparece even e depois cibeli, mais se digito even o resultados vem corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho outra aqui.

Esse codigo ta dando dor de KBça heim.

é o seguinte, as variaveis $cidade e $estado, estão sendo transmitidas corretamente, mais não trazem resultado, em vez disso ele da este erro:

 

531816You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '%16%' OR dataentrega LIKE '%--%' ORDER BY id DESC' at line 1

 

Onde 5318 é o codigo referente a cidade e 16 é referente ao estado, como vcs podem ver, as variaveis estão sendo transmitidas.

a quem estiver disposto a ajudar obrigado, e a quem quiser o codigo do sistema completo me mande um e-mail -- remington@armonline.com.br

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.