Jump to content


Photo

Sistema De Pesquisa C/ Filtros Por $_get?


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

#1 tesla

tesla

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 19/02/2009, 21:29

estou montando um site pra um projeto mas estou com um problema, bom primeiro vou explicar:
tenho uma tabela no MySQL chamada novidades, ela vai conter todas as novidades do site, eu montei uma pagina do meu site pras pessoas que quiserem acessar as novidades mais antigas, com os filtros da pesquisa pelas novidades passadas por metodo $_GET montei o seguinte código:
<?
include ("config.php");
//---------------- Captura os Filtros para pesquisa
$novidade["id"] = $_GET["novidadeid"];
$novidade["titulo"] = $_GET["novidadetitulo"];
$novidade["data"] = $_GET["novidadedata"];
$novidade["autor"] = $_GET["novidadeautor"];
$novidade["tipo"] = $_GET["novidadetipo"];
$novidade["sqt"] = $_GET["novidadesqt"];
$novidade["spt"] = $_GET["novidadespt"];
//---------------- Mensgens
$nao_encontrado = '<table id="titulo_erro">
  <tr>
	<td><img src="imgs/symbols/symbol_stop.gif" />N&atilde;o Foi Poss&iacute;vel Obter Resultados Com Os Filtros Selecionados <img src="imgs/symbols/symbol_stop.gif" /></td>
  </tr>
</table>';
//--------------- Condições & Funções
mysql_select_db ("disclecow",$lig);

$psq_query = 'SELECT * FROM novidades';
$psq_query1 = ' WHERE id>'.$novidade["spt"].' and ver=1 '; 
$psq_query2 = ' ORDER BY id DESC LIMIT '.$novidade["sqt"];
$condic_query = '';
//----- Verifica Se Get É um Valor Válido em ID
if (($novidade["id"] != "0") or ($novidade["id"] != " ") or ($novidade["id"] != "") or ($novidade["id"] != "null")) {
$condic_query = $condic_query.' and id='.$novidade["id"];
}
//----- Verifica Se Get É um Valor Válido em Titulo
if (($novidade["titulo"] != "") or ($novidade["titulo"] != " ") or ($novidade["titulo"] != "null")) {
$condic_query = $condic_query.' and titulo="'.$novidade["titulo"].'"';
}
//----- Verifica Se Get É um Valor Válido em Data
if (($novidade["data"] != "") or ($novidade["data"] != " ") or ($novidade["data"] != "null")) {
$condic_query = $condic_query.' and data="'.$novidade["data"].'"';
}
//----- Verifica Se Get É um Valor Válido em Autor
if (($novidade["autor"] != "") or ($novidade["autor"] != " ") or ($novidade["autor"] != "null")) {
$condic_query = $condic_query.' and autor="'.$novidade["autor"].'"';
}
//----- Verifica Se Get É um Valor Válido em Tipo
if (($novidade["tipo"] != "") or ($novidade["tipo"] != " ") or ($novidade["tipo"] != "null")) {
$condic_query = $condic_query.' and tipo="'.$novidade["tipo"].'"';
}
//--------------- Obtendo Resultados
$all_query = $psq_query.$psq_query1.$condic_query.$psq_query2;
$query_psq = mysql_query($all_query,$lig);
echo $all_query;
e o código continua mas seria desnescessário eu postar o resto...

Problema quando eu fui dar um echo no $all_query pra ver se ele ia montar um comando certo pro MySQL ele imprimiu isso:
SELECT * FROM novidades WHERE id>1 and ver=1 and id=2 and titulo="null" and data="null" and autor="null" and tipo="null" ORDER BY id DESC LIMIT 1
Eu passei as instruções deste modo:
http://meusite.com/index.php?uid=889&novidadeid=2&novidadetitulo=null&novidadedata=null&novidadeautor=null&novidadetipo=null&novidadesqt=1&novidadespt=1
No Caso o Problem é que ele não está respeitando a condição de que se o parâmetro for =null ele não adiciona a query que será passada para o mysql. Qual eh o meu erro?

#2 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 19/02/2009, 23:29

Você errou em todas as condicionais. Veja esse exemplo:

($novidade["titulo"] != "") or ($novidade["titulo"] != " ") or ($novidade["titulo"] != "null")

Como o operador é != (diferente), você não pode usar OR porque senão vai anular tudo. Você deve usar AND ou &&.

($novidade["titulo"] != "") && ($novidade["titulo"] != " ") && ($novidade["titulo"] != "null")

(ok2)
att,
Muller Dias
ex-administrador Fórum WMO

#3 tesla

tesla

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 20/02/2009, 04:30

ótimo valew, agora to com outra dúvida, é sobre um sistema de comentários:
eu to salvando os comentários no mysql como um text e com o separador </ct> e os nicks dos comentários com </nk>, dps eu dou um explode nos dois e obtenho um array, ai eu uso um for pra postar todo esse array no site, mas estou com uma dúvida...
existe algum método de eu por exemplo, apagar um comentário de mau gosto, sem ser via mysql?
jah pensei, pensei e pensei mas n consegui achar algo correspondente, alguem pod me da uma base ae?

#4 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 20/02/2009, 14:22

Eu não faria dessa forma não...

Crie uma nova tabela. Coloque nessa tabela somente os comentários, nela vai ficar os comentários de todas as novidades do site.

Os únicos campos que vai precisar serão:

id_comentario (int auto_increment)
id_novidade (int)
id_usuario (int)
texto_comentario (text)

O campo id_comentario será o identificador o comentário (chave primária), sabendo qual é o identificador você consegue excluir / editar facilmente. ;)

O campo id_novidade será o identificador da novidade. Se você tiver uma novidade no site que tenha o id=18 por exemplo, todos os comentários para essa novidade terão o id_novidade=18. Assim você consegue listar todos os comentários apenas da novidade 18. :D

O campo id_usuario guardará o id do usuário que postou o comentário. ^_^

O campo texto_comentario eu nem preciso explicar, né? :P

(ok2)
att,
Muller Dias
ex-administrador Fórum WMO




0 user(s) are reading this topic

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

IPB Skin By Virteq