Ir ao conteúdo

Ajuda Dreamweaver SQL::busca de palavra em um campo text


jrabelha

Posts recomendados

Postado

AJUDEMMM POR FAVOR.........................

Bom pessoal, dei uma procurada nos foruns e num achei nada relacionado, então to criando este novo tópica para que um de vocês possa me ajudar.

É o seguinte, tenho uma busca que pretendo fazer onde quero que esta busca filtre por um intervalo de int e uma palavra chave, onde esta palavra chave tem que ser encontrada em um campo text.

Resumindo, num formulário tem: Ano início (ano_ini) ____ Ano Fim (ano_fim) ____ Palavra Chave (pal_chave) ______________________

Certo, meu sql é mais o menos esse:

SELECT noticia.noticia FROM noticia WHERE noticia.ano_ref >= ano_ini AND noticia.ano_ref <= ano_fim AND noticia.noticia LIKE %pal_chave%

Pois é isso num está dando certo, num pega a palavra chave. Alguém tem uma solução para esse problema???

Exemplo:

Notícia 1: "olá tudo bem" (text) Ano de Referencia Noticia 1: 1990 (int)

Notícia 2: "Parabéns, gol marcado" (text) Ano de Referencia Noticia 1: 1990 (int)

Ai quando o usuario digita lá: Ano INICIO: 1900 / Ano FIM: 2000 / Palavra chave: "tudo"

Essa busca é para buscar somente a Noticia 1, pois ela tem a palavra "tudo" em seu conteudo.

Lembrando, o problema é só na palavra chave, o intervalo está OK.

Falou e desde já obrigado.

Ahhh, Banco de dados Mysql 5.0. O formulário é em PHP. valeu

  • Membro VIP
Postado

SELECT noticia.noticia FROM noticia WHERE noticia.ano_ref >= '$ano_ini' AND noticia.ano_ref <= '$ano_fim' AND noticia.noticia LIKE '%$pal_chave%'

Tentou colocar as aspas simples nas variáveis como acima?

Postado

bom pessoal, mais uma dúvida. Estou desenvolvenso uma web com banco de dados pelo dreamweaver e está quase tudo beleza, implemeto, apreto F12 e abre o browser (firefox) e faço as consultas, tudo perfeito. Agora fui la na pasta www do EasyPhp, onde está hostedado, e coloco pra abrir (com firefox), primeiramente que no dreamweaver a pagina está limpa, sem nenhum erro, ja quando abro diretamente pelo firefox aparece algumas parte do código e o pior de tudo não faz nenhuma consulta, num aparece nada.

Como pode isso, no mesmo firefox, quando testado pelo mozilla, está tudo perfeito e quando abro diretamente pelo mesmo firefox aparece parte de código e não faz as consultas! Ajudem por favor!

bom pessoal, mais uma dúvida. Estou desenvolvenso uma web com banco de dados pelo dreamweaver e está quase tudo beleza, implemeto, apreto F12 e abre o browser (firefox) e faço as consultas, tudo perfeito. Agora fui la na pasta www do EasyPhp, onde está hostedado, e coloco pra abrir (com firefox), primeiramente que no dreamweaver a pagina está limpa, sem nenhum erro, ja quando abro diretamente pelo firefox aparece algumas parte do código e o pior de tudo não faz nenhuma consulta, num aparece nada.

Como pode isso, no mesmo firefox, quando testado pelo mozilla, está tudo perfeito e quando abro diretamente pelo mesmo firefox aparece parte de código e não faz as consultas! Ajudem por favor!

Por favor pessoal, ajudem aí. To passando as imagens. A primeira é a que foi aberta usando o dreamweaver, quando acesso o browser diretamente pelo programa.

http://img146.imagevenue.com/img.php?image=76820_imagem1_dreamweaver_122_722lo.JPG

E essa outra é a que foi aberta diretamente pelo browser.

http://img18.imagevenue.com/img.php?image=76835_imagem1_aberta_diretamente_do_browser_122_350lo.JPG&loc=loc350

galera por favor me ajudem ai, as notícias que coloquei no banco tem acento e "ç", mas andei dando uma pesquisada que o php não suporta esses tipos, mas que tem como corrigir. Se alguém souber me ajuda ai

SELECT noticia.noticia FROM noticia WHERE noticia.ano_ref >= '$ano_ini' AND noticia.ano_ref <= '$ano_fim' AND noticia.noticia LIKE '%$pal_chave%'

Tentou colocar as aspas simples nas variáveis como acima?

olá amigo, eu fiz e funcionou da forma '%'+pal_chave+'%'. vem k, tem como eu fazer com que a busca seja feita somente pelos campos de formularios preenchido???

Postado

Eu nao sabia disso, mais se você não está conseguindo exibir acentos e letras com ç, você pode usar echo htmlentities($str);, ou codificar a palavra antes, ex: base64_encode($str), base64_decode($str).

Para exibir o "ç", acentos e simbolos, em alguns navegadores, você primeiro tem que passar para "entidade HTML", usando a função htmlentities($str);

Postado

o resultado final de meu SQL é:

SELECT noticia.fn_n, noticia.ano_ref_noticia, noticia.noticia, noticia.pagina_n, noticia.num_livro_n, noticia.data_n

FROM noticia

WHERE noticia.ano_ref_noticia = ano_ref_noticia_pg AND noticia.num_livro_n = num_livro_pg AND (noticia.noticia LIKE %pal_chave% OR noticia.p_chave1 LIKE %pal_chave% OR noticia.p_chave2 LIKE %pal_chave% OR noticia.p_chave3 LIKE %pal_chave%)

só que, não consigo buscar palavras com acento.

é o PHP eu sei, eu corregi a parte de quando eu buscava do banco, vinha todo desconfigurado o texto, ai concertei, mas agora essa parte da busca, que não pega com acento é nova!

Eu nao sabia disso, mais se você não está conseguindo exibir acentos e letras com ç, você pode usar echo htmlentities($str);, ou codificar a palavra antes, ex: base64_encode($str), base64_decode($str).

Para exibir o "ç", acentos e simbolos, em alguns navegadores, você primeiro tem que passar para "entidade HTML", usando a função htmlentities($str);

rpa eu to usando isso aqui: utf8_encode($str) e deu certo, pelo menos em ocalhost, firefox, sera que vou ter problemas futuramente. esse htmlentities($str) é padrão é?

vem k, nao consigo fazer consulta de palavras com assento no banco, sabe como reverter isso?

  • Membro VIP
Postado

1º Dreamweaver e qualquer semelhante gera lixo no código fonte. Você deve sempre revisar códigos feitos nesses programas, sempre. Daí é que entra seu conhecimento na linguagem mesmo.

2º Acento pode ser pela codificação da página, deve estar como UTF-8 quando para mostrar acentos sem transformação html seria ISO-8859-1. O PHP dispõe de algumas funções para tanto, como htmlentities(), dentre outras.

3º Tem um lance da data nas suas imagens... Pra pesquisar pelo formato do banco (aaaa-mm-dd) ou você dá um explode() na variável da data e inverte os dados ou utiliza o STR_TO_DATE($variavelData,'%d/%m/$Y') dento da sua própria query.

Postado

para exibir o "ç", acentos e simbolos, em alguns navegadores, você primeiro tem que passar para "entidade html", usando a função htmlentities($str);

como assim, nÃo entendi. valeu pela forÇa

1º Dreamweaver e qualquer semelhante gera lixo no código fonte. Você deve sempre revisar códigos feitos nesses programas, sempre. Daí é que entra seu conhecimento na linguagem mesmo.

2º Acento pode ser pela codificação da página, deve estar como UTF-8 quando para mostrar acentos sem transformação html seria ISO-8859-1. O PHP dispõe de algumas funções para tanto, como htmlentities(), dentre outras.

3º Tem um lance da data nas suas imagens... Pra pesquisar pelo formato do banco (aaaa-mm-dd) ou você dá um explode() na variável da data e inverte os dados ou utiliza o STR_TO_DATE($variavelData,'%d/%m/$Y') dento da sua própria query.

oh cara, valeu pela atenção ai. o lance das datas ta bom, eu to usando umas funcoes aqui. A transformação, tipo, pra mostar as palavras com acento to usando a funçã utf8_encode() e deu certo.

Quanto ao lixo de código, o pior é q quando visualizo pelo atalho do feamweaver ta beleza, quando vou na pasta aparece aquilo, e o lixo que aparece é a abertura de chaves para condiçoes do tipo , se a busca for dirente de vazio mostre, se tiver mais que 4 resultados mostar o next pag, por exemplo e isso se eu tirar vai dar erro. Tipo na condição de mostrar um layoutzinho la só se tiver busca realizada, como eu vou corrigir isso?

e aproveitando sua disposição, é o seguite, usei essa função pra mostar os acentos e tudo mais, utf8_encode(), mas tenho uma consulta aqui por palavra chave, e ta funcionando bem, só que quando eu coloco uma palava chave com acento, não consigo buscar nada. o que será?

Postado
Se no seu banco ela tiver acento normal, trata para apresentar na tela, e "destrata" para consultar no banco.

E ai amigo, esta funcionando só que ainda permace um erro, onde eu não consigo fazer consultas de palavras com acento.

Quanto a impressão dos carcteres com com acento e ç ... o resultado foi o seguinte, as elterações no código:

<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br" xml:lang="pt-br">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

e na saida da noticia:

<?php echo utf8_encode($row_Recordset_Busca1['noticia']); ?>

Ja em relação a query de consulta por palavra chave, fiz da seguinte forma (minha consulta procura um palavra em quatro campos: 1 text e 3 varchar (banco mysql)):

SELECT noticia.fn_n, noticia.ano_ref_noticia, noticia.noticia, noticia.pagina_n, noticia.num_livro_n, noticia.data_n

FROM noticia

WHERE noticia.ano_ref_noticia = ano_ref_noticia_pg AND noticia.num_livro_n = num_livro_pg AND (noticia.noticia LIKE %pal_chave% OR noticia.p_chave1 LIKE %pal_chave% OR noticia.p_chave2 LIKE %pal_chave% OR noticia.p_chave3 LIKE %pal_chave%)

esse é o código que eu coloco no dreamweaver, o que ele gera no php é esse:

$query_Recordset_Busca2 = sprintf("SELECT noticia.fn_n, noticia.ano_ref_noticia, noticia.noticia, noticia.pagina_n, noticia.num_livro_n, noticia.data_n FROM noticia WHERE noticia.ano_ref_noticia = %s AND noticia.num_livro_n = %s AND (noticia.noticia LIKE %s OR noticia.p_chave1 LIKE %s OR noticia.p_chave2 LIKE %s OR noticia.p_chave3 LIKE %s) ", GetSQLValueString($ano_ref_noticia_pg_Recordset_Busca2, "int"),GetSQLValueString($num_livro_pg_Recordset_Busca2, "int"),GetSQLValueString("%" . $pal_chave_Recordset_Busca2 . "%", "text"),GetSQLValueString("%" . $pal_chave_Recordset_Busca2 . "%", "text"),GetSQLValueString("%" . $pal_chave_Recordset_Busca2 . "%", "text"),GetSQLValueString("%" . $pal_chave_Recordset_Busca2 . "%", "text"));

Quanto a questão das datas, estou utilizando duas funções, fiz uma php só pra estas funções e quando preciso, faço um import, as funções são:

<?php

function dateformat($data){ // formata datas do mysql(padrão americano) para o formato brasileiro....

$data = explode("-", $data);

$datanova = array_reverse($data);

return $datanova[0]."/".$datanova[1]."/".$datanova[2];

}

?>

<?php

//colocar nos get:

function ConverteDatabr($Data){

if (strstr($Data, "/"))//verifica se tem a barra /

{

$d = explode ("/", $Data);//tira a barra

$rstData = "$d[2]-$d[1]-$d[0]";//separa as datas $d[2] = ano $d[1] = mes etc...

return $rstData;

} elseif(strstr($Data, "-")){

$d = explode ("-", $Data);

$rstData = $d[2]."/".$d[1]."/".$d[0];

return $rstData;

}else{

return "Data invalida";

}

}

?>

Quando vou imprimir uma data faço:

<?php echo dateformat($row_Recordset_Busca2['data_n']); ?>

E quando o usuario digita a data brasileira e eu tenho que colocar americana para fazer a culdulta faço:

$date_inicio_Recordset_Busca4 = ConverteDatabr($_GET['date_inicio']);

ME RESTA AGORA CONULTAR AS PALAVRAS COM ACENTO, QUE AINDA NÃO CONSEGUI.

Postado
Se no seu banco ela tiver acento normal, trata para apresentar na tela, e "destrata" para consultar no banco.

olá amigo, eu num faço nenhum tratamento quendo a pessoa faz a busca não, ou seja o que ele coloca no formulário é o que eu passo como parametro pra busca. Eu só trato quendo imorimo do banco. O que será isso?

TIPO LA NO BANCO TEM O CAMPO noticia, UM EXEMPLO "notícia nova", se minha palavra chave for nova ele busca, se for notícia (com acento, igual ao do banco) ele não busca.

??????????????????????????????????

Postado
Eu nao sabia disso, mais se você não está conseguindo exibir acentos e letras com ç, você pode usar echo htmlentities($str);, ou codificar a palavra antes, ex: base64_encode($str), base64_decode($str).

Para exibir o "ç", acentos e simbolos, em alguns navegadores, você primeiro tem que passar para "entidade HTML", usando a função htmlentities($str);

e ai parceiro, o que você acha de eu num ta conseguindo fazer a buscas por palaras que possuem acento? o que pode ser?

TIPO LA NO BANCO TEM O CAMPO noticia, UM EXEMPLO "notícia nova", se minha palavra chave for nova ele busca, se for notícia (com acento, igual ao do banco) ele não busca.

??????????????????????????????????

Postado
Tenta dar um html_entity_decode() na variável antes de buscar.

Rpz, tu me falou disso ai, ai lembrei que tava usando utf8_encode() para imprimir, ai tb lembrei que ja tinha visto o utf8_decode(). Agora, a ultima duvida, espero eu, qual a diferença entre utf8_decode() e html_entity_decode() ?????

Ah, valeu pela força ai, me ajudou muito. fico muito grato pela atençã, de esta sempre respondendo. se precisar de algo, estamos ai. Falou man. obrigado!

  • Membro VIP
Postado

A diferença básica é que utf8_encode() trabalha exclusivamente com utf8, htmlentities() além de ter mais parâmetros para controle, pode ser utilizado para diversos conjuntos de caracteres, inclusive utf-8.

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!