Jump to content


Photo

Sistema De Pesquisa Interna Php


  • Faça o login para participar
5 replies to this topic

#1 reme

reme

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 09/02/2011, 10:43

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).

#2 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 09/02/2011, 13:04

Pode ser devido ao OR. Dependendo do que você quer, você precisa usar AND.
$resultado .= " WHERE ".join(" OR ", $campos);


#3 elitediego

elitediego

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:Rio de janeiro

Posted 09/02/2011, 16:40

Continue o while para nós podermos obsrvar, derrepente o erro pode está nele...

 while ($dados = mysql_fetch_array($sql)) {        // enquanto houverem resultados...                


#4 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 10/02/2011, 08:15

O while está sendo feito féra!!

Veja a chave no começo e a chave no final.

#5 reme

reme

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 10/02/2011, 22:33

olá a todos obrigado pelas dicas, 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 postaram ou postarem

Edição feita por: reme, 10/02/2011, 22:33.


#6 reme

reme

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 18/02/2011, 14:47

Pode ser devido ao OR. Dependendo do que você quer, você precisa usar AND.

$resultado .= " WHERE ".join(" OR ", $campos);

Não é o caso aqui, com o operador AND todos os campos teriam que ser preenchidos.


Pode ser devido ao OR. Dependendo do que você quer, você precisa usar AND.

$resultado .= " WHERE ".join(" OR ", $campos);

Não é o caso aqui, com o operador AND todos os campos teriam que ser preenchidos.

e aí? ninguém mais?




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq