Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 166

Busca com Filtro

11-05-2009 09:48

Galera eu criei um sistema simples de busca/filtro em uma pagina de noticias, só que só esta funcionando a busca por texto, se selecionar uns dos checkbox liberado ou bloqueado, ele seleciona todos os dados sem distinção. Segue o código abaixo.

<?php // Pagina de Cadastro, atualização e Exclusao de Noticias //Data Crianção: 06.04.2009 //Data Atualização: 06.05.2009 ?> <h3>:: Not&iacute;cias Cadastradas ::</h3> <hr /> <!-- inicio form busca --> <form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST" name="filtro"> <table width="100%" cellpadding="1" cellspacing="1" border="0" /> <thead> <tr bgcolor="#EEEEEE"> <td colspan="3" align="center" class="doze">Filtros</td> </tr> </thead> <tbody> <tr bgcolor="#EEEEEE"> <td width="50%">&nbsp;Trecho de Texto <input type="text" class="caixa_form" size="40" maxlength="30" name="texto" id="texto"></td> <td> <table width="100%"> <tr bgcolor="#EEEEEE"> <td>Status:</td> <td><input name="s_liberado" type="checkbox" id="s_liberado" value="S">&nbsp;<img src="imgs/liberado.png" border=0 width="16" title="particular">&nbsp;Liberado</td> <td><input name="s_bloqueado" type="checkbox" id="s_bloqueado" value="N">&nbsp;<img src="imgs/bloqueado.png" border=0 width="16" title="particular">&nbsp;Bloqueado</td> </tr> </table> </td> <td align="center" valign="middle"><input type="submit" value="Filtrar" class="botoes_envio" /></td> </tr> </tbody> </table> </form> <!-- fim form busca --> <table width="100%" border="0" cellpadding="0" cellspacing="1"> <thead bgcolor="#E4EEF5"> <th width="10%" align="center">Data</th> <th align="left">&nbsp;&nbsp;Titulo</th> <th width="10%" align="center">Status</th> </thead> <?php // Seleciona o banco de dados $sql = mysql_query("SELECT * FROM noticias WHERE noticia LIKE '%" . @$_POST['texto'] . "%' OR tit LIKE '%" . @$_POST['texto'] . "%' OR public = '" . @$_POST['s_liberado'] ."' OR public = '" . @$_POST['s_bloqueado'] ."' order by data desc;"); $count = mysql_num_rows($sql); // conta quantos registros encontrados com a nossa especificação if ($count == 0) { echo "Nenhum resultado!"; } else { // senão if ($count == 1) { echo "1 resultado encontrado!"; } // se houver um resultado diz que existe um resultado if ($count > 1) { echo "$count resultados encontrados!"; } // se houver mais de um resultado diz quantos resultados existem while ($dados = mysql_fetch_array($sql)) { // enquanto houverem resultados... $cod = $dados["cod"]; $titulo = $dados["tit"]; $var = $dados["data"]; $var = explode(" ",$var); $dia = $var[0]; $hora = $var[1]; $dia = explode("-",$dia); $data = "$dia[2].$dia[1].$dia[0]"; $public = $dados['public']; if(!isset($t)) $t = 0; $t++; if ($t % 2 == 0) {$cor="#FFFFFF";} else {$cor="#F2F0D1";} if($public == 'S'){ $img = 'liberado.png'; }else{ $img = 'bloqueado.png'; } // monta a pagina echo "<tr bgcolor=\"$cor\" height=\"22\" onClick=\"location.href='pg_admin.php?page=news/alt_news&cod={$cod}'\"> <td align=\"center\" width=\"10%\"> $data </td> <td> &nbsp;&nbsp;$titulo </td> <td width=\"10%\" align=\"center\" valign=\"middle\"> <img src=\"imgs/$img\" alt=\"\" border=\"0\" /> </td> </tr>"; // exibir a coluna nome e a coluna email } } ?> </table>

MOVIDO: de PHP para MySQL
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca com Filtro

11-05-2009 13:08

E qual a dúvida?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 166

Busca com Filtro

11-05-2009 13:31

Foi mal, eu quero como eu faço para filtro pelos checkbox também.

Vlw
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca com Filtro

11-05-2009 13:52

Trabalha com if, faz uma condição que quando vier o valor do checkbox, será o SELECT TAL, se não vier, outro SELECT.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 166

Busca com Filtro

11-05-2009 22:53

Web eu fiz assim, só que não deu certo.

1. Quando eu seleciono a pagina. aparece assim
Notice: Undefined variable: sql in C:\xampp\htdocs\ems\admin\pg_news.php on line 47

2. Não esta fazendo a busca por texto;

3. Não esta fazendo a busca com os 2 checkbox selecionados, apenas com 1;

segue o código abaixo.
<?php // Pagina de Cadastro, atualização e Exclusao de Noticias //Data Crianção: 06.04.2009 //Data Atualização: 06.05.2009 ?> <h3>:: Not&iacute;cias Cadastradas ::</h3> <hr /> <!-- inicio form busca --> <form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST" name="filtro"> <table width="100%" cellpadding="1" cellspacing="1" border="0" /> <thead> <tr bgcolor="#EEEEEE"> <td colspan="3" align="center" class="doze">Filtros</td> </tr> </thead> <tbody> <tr bgcolor="#EEEEEE"> <td width="50%">&nbsp;Trecho de Texto <input type="text" class="caixa_form" size="40" maxlength="30" name="texto" id="texto"></td> <td> <table width="100%"> <tr bgcolor="#EEEEEE"> <td>Status:</td> <td><input name="s_liberado" type="checkbox" id="s_liberado" value="S" checked />&nbsp;<img src="imgs/liberado.png" border=0 width="16" title="particular">&nbsp;Liberado</td> <td><input name="s_bloqueado" type="checkbox" id="s_bloqueado" value="N" checked />&nbsp;<img src="imgs/bloqueado.png" border=0 width="16" title="particular">&nbsp;Bloqueado</td> </tr> </table> </td> <td align="center" valign="middle"><input type="submit" value="Filtrar" class="botoes_envio" /></td> </tr> </tbody> </table> </form> <!-- fim form busca --> <table width="100%" border="0" cellpadding="0" cellspacing="1"> <thead bgcolor="#E4EEF5"> <th width="10%" align="center">Data</th> <th align="left">&nbsp;&nbsp;Titulo</th> <th width="10%" align="center">Status</th> </thead> <?php $noticia = @$_POST['texto']; $liber = @$_POST['s_liberado']; $bloq = @$_POST['s_bloqueado']; // Seleciona o banco de dados $sql .= "SELECT * FROM noticias WHERE "; // se todos os campos foram preenchidos if($noticia <> "" and $liber <> "" and $bloq <> "") { // procura por todos os campos $sql .= "noticia LIKE '%$noticia%' AND tit LIKE '%$noticia%' AND public LIKE '$liber' AND public LIKE '$bloq'"; } // senão, se o campo noticia e o campo liberado FOI preenchido mas os outros campos NÃO FOI preenchido else if($noticia <> "" and $liber <> "" and $bloq == "") { // procura só pela noticia e liberado $sql .= "noticia LIKE '%$noticia%' AND tit LIKE '%$noticia%' AND public LIKE '$liber'"; } // senão, se o campo noticia e o bloqueado FOI preenchido mas os outros campos FORAM preenchidos else if($noticia <> "" and $bloq <> "" and $liber == "") { // procura só pela rua $sql .= "noticia LIKE '%$noticia%' AND tit LIKE '%$noticia%' AND public LIKE '$bloq'"; } // senão, se o campo liberado e bloqueado FOI preenchido mas noticia NÂO else if($noticia == "" and $bloq <> "" and $liber <> "") { // procura só por liberado e bloqueado $sql .= "public LIKE '%$liber%' AND public LIKE '$bloq'"; } //senão, se o campo noticia e liberado NÂO foram preenchidos else if($noticia == "" and $bloq == "" and $liber <> "") { // procura só por liberado $sql .= "public LIKE '%$liber%'"; } //senão, se o campo noticia e bloqueado NÂO foram preenchidos else if($noticia == "" and $bloq <> "" and $liber == "") { // procura só por liberado $sql .= "public LIKE '%$bloq%'"; } else { $sql = "SELECT * FROM noticias order by data desc "; } $query = mysql_query($sql); // se houver mais de um resultado diz quantos resultados existem while ($dados = mysql_fetch_array($query)) { // enquanto houverem resultados... $id = $dados["id"]; $titulo = $dados["tit"]; $var = $dados["data"]; $var = explode(" ",$var); $dia = $var[0]; $hora = $var[1]; $dia = explode("-",$dia); $data = "$dia[2].$dia[1].$dia[0]"; $public = $dados['public']; if(!isset($t)) $t = 0; $t++; if ($t % 2 == 0) {$cor="#FFFFFF";} else {$cor="#F2F0D1";} if($public == 'S'){ $img = 'liberado.png'; }else{ $img = 'bloqueado.png'; } // monta a pagina echo "<tr bgcolor=\"$cor\" height=\"22\" onClick=\"location.href='pg_admin.php?page=news/alt_news&id={$id}'\"> <td align=\"center\" width=\"10%\"> $data </td> <td> &nbsp;&nbsp;$titulo </td> <td width=\"10%\" align=\"center\" valign=\"middle\"> <img src=\"imgs/$img\" alt=\"\" border=\"0\" /> </td> </tr>"; // exibir a coluna nome e a coluna email } ?> </table>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca com Filtro

11-05-2009 23:14

Você tem que verificar o que tem na linha do erro, tenta avaliar porque 1 dos checkbox não é usado, provavelmente você tem que adicionar uma condição para cada 1, tipo:

se o checkbox 1 estiver marcado
... WHERE campo1='valor do checkbox'

se o checkbox 2 estiver marcado
... WHERE campo2='valor do checkbox'
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 166

Busca com Filtro

12-05-2009 08:56

A linha que o erro corresponde é a seguinte

$sql .= "SELECT * FROM noticias WHERE ";

Quanto a isso:

se o checkbox 1 estiver marcado
... WHERE campo1='valor do checkbox'

se o checkbox 2 estiver marcado
... WHERE campo2='valor do checkbox'

Está aqui:

else if($noticia == "" and $bloq <> "" and $liber <> "")
{
// procura só por liberado e bloqueado
$sql .= "public LIKE '%$liber%' AND public LIKE '$bloq'";
}

Não teria motivo para não procurar
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca com Filtro

12-05-2009 16:52

No seu script você tem
$sql .= "SELECT * FROM noticias WHERE ";

Mas, não criou o $sql antes. Outra coisa, ao invés de executar o $sql, dá um echo dele, e vê o que está retornando, vê se faz sentido para sua consulta.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 166

Busca com Filtro

13-05-2009 09:18

a variavel $sql eu tirei o ponto antes do = e resolveu o notice, qto ao echo apareceu o seguinte resultado Resorce id # 11.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca com Filtro

13-05-2009 12:33

Quando vai usar uma variável dentro do while da forma que está usando, você tem que criar ela antes do while, com valor vazio.

$var = "";

Dentro do while...

$var.="valor a se adicionado..."

Eu indiquei o uso do echo para a variável para ser mostrado na tela após o submit, como o select está sendo enviado para query, assim visualmente você observa os erros.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 166

Busca com Filtro

14-05-2009 13:05

Web conseguiu resolver o problema, estava faltando o if que verifica se algum texto foi digitado, trocar alguns OR por AND para funcionar da maneira que eu queria.

Vlw
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Busca com Filtro

14-05-2009 17:01

boa :wink
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado