Ir para conteúdo
Fórum Script Brasil
  • 0

Busca Em Banco De Dados Usando Listbox Como ?


Guest {_carnificina_}

Pergunta

Guest {_carnificina_}

Ola pessoal já venho acompanhando o forum há algum tempo sempre lendo as materias.

estou com uma pequena duvida será que alguém poderia me ajudar. a duvida é a seguinte.

tenho um banco de dados access e fiz uma pagina de busca. até ai beleza.

ele faz a busca na coluna musica sendo que tem nove colunas.

o comando fica assin.

SELECT *

FROM ultra

WHERE Musica LIKE '%Varmusica%'

Varmusica % Request.QueryString("busca")

como vocês podem ver essa pagina espera um session do text field chamado ( busca )

eu gostaria de colocar na pagina de busca um listbox que ele possa selecionar a coluna da minha tabela a qual a busca será feita.

usando 2 text field eu consigo mais usando listbox não.

alguém poderia me ajudar gostaria de fazer isso no dreamweaver já que o uso para isso.]

gostaria que ficasse assim.

um campo para busca e outro para selecionar a coluna que seria feita a busca.

user posted image

desde já fico muito grato.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Selecione sua lista e escolha a opção "Dinamico" no inspetor de propriedades, na janela que se abre, basta selecionar os campos dinâmicos que farão parte do menu. Senão me engano é "Definir conjunto de registros".

Desculpa eu não poder te dar uma ajuda mais detalhada, mas estou sem servidor de testes por aqui.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest {_Carnificina_}

Mais ai tá isso não seria só para selecionar para mostrar registros.

o meu problema é a pagina de resultados como fazer para ela receber a varivel do listbox porque a no exemplo a abaixo a causual where Musica não é está que seleciona a coluna da minha tabela ???

e o varmusica está aguardando um variavel de URL vinda da minha pagina que está o campo busca.

SELECT *

FROM ultra

WHERE Musica LIKE '%Varmusica%'

cheguei a pensar que poderia fazer algo assim

WHERE 'Vartable' LIKE '%Varmusica%'

e as vareaveis seriam assim

Varmusica % Request.QueryString("busca")

Vartable % Request.QueryString("listbox")

mais não rola.

tipo assim a variavel Varmusica está esperando a variavel de url do meu text field chamado ( busca )

e o vartable está esperando uma variavel do meu list box.

Vamos supor que na minha pagina de busca no list box eu selecionei Musica e no campo text field digitei love deveria ficar assim.

WHERE Musica LIKE love

só que não Rola alguém poderia me dar uma luz,

como fazer a pagina de resultados da buz receber a varivel da listbox da minha pagina de busca, sento que a varivel deve escolher as colunas em que devera ser feita a busca.

Desde já fico muito grato.

Link para o comentário
Compartilhar em outros sites

  • 0

Deixa só ver se eu entendo...

Você construiu a list box, com method e action corretamente configurados no form, foi no Inspetor de propriedades, botão "valores da lista", associou o identificador de item ao valor na janelinha que surge, preparou a página que recebe a querystring e ainda sim esta dando erro ?

Faz o seguinte, visualiza isso ai em Livedata e na barra de endereços dele insere o valor da sua variável, verifica se esta efetuando a pesquisa nesse método. Isso vai comprovar que a pagina esta recebendo variaveis corretamente, e que o erro esta no listbox.

Eu vou tentar testar isso em casa, estou sem servidor por aqui para estudar os detalhes do seu caso, se a dúvida ainda estiver aqui amanhã nós resolveremos.

Link para o comentário
Compartilhar em outros sites

  • 0

valeu vou testar e sobre o PHP acho que sim, no aspnet funciona na boa.

loco isso da busca, é só do list box se eu coloco 2 text field funciona.

tipo exemplo

Musica [=====] Album [====] [procurar]

como você viu tem um campo para musica e um campo para album

se eu digitar no campo musica e mandar buscar ele procura na boa só na coluna musica da minha tabela se eu digitar no só no campo album ele busca só no campo album. se eu digitar nos 2 campos ele busca nos 2 na boa.

só que com listbox não rola acho que estou errando na parte do list box.

desta forma acima a string fica assim na pagina de resultados.

SELECT *

FROM ultra

WHERE Musica LIKE '%Varmusica%' AND Album LIKE '%varalbum%'

Varmusica % Request.QueryString("busca")

Varalbum % Request.QueryString("buscab")

lembrando que na minha pagina de busca o campo na frente do texto musica chamasse busca e na frente do album chame-se buscab

desta forma funciona na boa sem problemas.

Mais como disse eu gostaria de colocar um listbox para selecionar a coluna que quero fazer a pesquisa e não deixar um text field mandando a variavel pó já pensou 9 colunas cada uma com seu text field ficaria Horrivel.

Gostaria que ficasse como a imagen abaixo.

user posted image

que tem um text field para digitar o texto que deve ser buscado e um list box para selecionar o departamento que deve ser feito a busca, e com certesa cada departamento deve ser uma coluna no BD.

Link para o comentário
Compartilhar em outros sites

  • 0

A coisa parece toda certa cara, isso que é estranho, com toda certeza tem algo relacionado aos valores do list box por que via caixa de texto as variáveis estão funcionando legal, mas eu vou testar lá em casa mais tarde e nas madrugadas da vida te respondo o que obtive por aqui.

Link para o comentário
Compartilhar em outros sites

  • 0

Olha não seicomo seria em php ou asp, mas posso te mostrar como eu façõ isso em JSP...

Primeiro a pagina com os campos

<form name="form1" method="post" action="resposta.jsp">
 <select name="tipo" class="estilo">
              <option value="1">Nome</option>
              <option value="2" selected>Email</option>
          </select>
         <input name="txt" type="text" class="estilo" size="30" maxlength="20">
          <input name="Submit" type="submit" class="estilo" value="OK">
</form>



Beleza, ai a pagina que vai receber os dados

<%
int mod=(Integer.parseInt(request.getParameter("tipo")));
	String g="";
   switch(mod){
	case 1 : g="nome";break;
	case 2 : g="email";break;
	}

   String resultado=request.getParameter("txt");

   String Query="Select id,nome,modulo from tabela where "'+g '"+like'%"+resultado.substring(0)+"%'";

%>

Ai basta você pegar os resultados da query e exibir... è mais ou menos isso e da certo!!!

No caso o substring faz com que pegue qualquer palavra que contenha a letra digitada ou a palavra toda!!!

Valeu!!

há fiz algo parecido com isso aqui

http://www.clanfks.com/COD/mapascod.jsp

Link para o comentário
Compartilhar em outros sites

  • 0

No PHP eu fiz assim, usando uma tabela ficticia chamada JOGOS com dois campos apenas, "Titulo" e "Genero".

>> Construir um campo de texto ( Nome: Var1 );

>> Construi um listbox ( Nome: Var2 ) com os seguintes valores:

Atributo ----------- Valor

aventura ----------- aventura

acao --------------- acao

>> Botão Submit

As caracteristicas do FORM:

Method: GET

Action: recebe.php

Na página recebe.php...

>> Criei uma conexão com o banco de dados;

>> No painel ligações fiz um record set avançado:

SELECT * FROM jogos WHERE genero='var2' AND titulo like '%var1%'

Características das variáveis incluidas no recordset:

variavel ------------ valor padrão -------------- runtime values

var1 ----------------- % -------------------- $HTTP_GET_VARS['var1'];

var2 ---------------- % --------------------- $HTTP_GET_VARS['var2'];

No Asp só varia o runtime que é request.querystring('var'), ainda acho que o erro todo esta na configuração do seu listbox.

Link para o comentário
Compartilhar em outros sites

  • 0

Nossa como pode uma coisa que parece ser tão facil se tornar dificil sad.gif

hehhe e realmete é facil , mas o ideal é você colocar o erro aqui para ajudar....Faz com calma que não tem erro

você apenas pegue o request do list menu com o nome da variavel e o request do textfield e coloca em uma variavel

então faça o select e substitua as partes pelas varáveis como mostrei acima!!

Link para o comentário
Compartilhar em outros sites

  • 0
como eu tinha dito acima o que parece que a pagina de resultados não está recuperando a variavel da url enviada pelo listmenu já enviada pelo text field vai na boa.

è o que eu te mostrei ali, faça como te disse no jsp e coloque em asp que vai dar certo....O list menu retorna um inteiro , v c deve fazer um switch() case , para transformar um inteiro em string......

Link para o comentário
Compartilhar em outros sites

  • 0

OLha não sei olhando assim parece ta correto, nunca programei usando assistene(não sei bem o que é isso que você colocou é do DW???) Mas o ideal é colocar o código da pagina com os campos e o código da pagina que recebe as variáveis...Como eu disse parece que está certo olgando isso , mas acho que listbox retorna um inteiro e não vai funcionar com sql se receber um inteiro ..Por isso o Switch(){}

Link para o comentário
Compartilhar em outros sites

  • 0

justamente isso parece que a informação enviada pelo listmenu não encaixa na variavel.

Olha essa causula WHERE Musica LIKE '%varmusica%'

estou falando para a busca ser feita no campo Musica com qualquer palavra que entrar no varmusica

isso funciona.

até se eu colocar no listmenu para enviar a variavel para o varmusica funciona,

mais como eu quero usar o list menu para selecionar o campo em que quero que a busca seje feita não rola.

na logica deveria ficar assim.

WHERE 'Varlist' LIKE '%Varmusica%'

o listmenu manda a variavel para escolha de campo do DB e o text field manda a variavel para o VarMUSICA

Digamos que escolhi no listmenu o Campo Album e digitei no text field vento a causa da pagina de resultado deveria ficar assim

WHERE Album LIKE %vento%

correto ???

Link para o comentário
Compartilhar em outros sites

  • 0
justamente isso parece que a informação enviada pelo listmenu não encaixa na variavel.

Olha essa causula WHERE Musica LIKE '%varmusica%'

estou falando para a busca ser feita no campo Musica com qualquer palavra que entrar no varmusica

isso funciona.

até se eu colocar no listmenu para enviar a variavel para o varmusica funciona,

mais como eu quero usar o list menu para selecionar o campo em que quero que a busca seje feita não rola.

na logica deveria ficar assim.

WHERE 'Varlist' LIKE '%Varmusica%'

o listmenu manda a variavel para escolha de campo do DB e o text field manda a variavel para o VarMUSICA

Digamos que escolhi no listmenu o Campo Album e digitei no text field vento a causa da pagina de resultado deveria ficar assim

WHERE Album LIKE %vento%

correto ???

È isso que estou tentando le dizendo a 4548454 tópicos atraz biggrin.gif

WHERE Musica LIKE '%varmusica%'

vai funcionar pois o TXt recebe uma String.. Beleza

WHERE 'Varlist'

Num vai funcionar , porque ele ta esperando uma string correto, como você disse "Album" OKZ????

O quye acontece

quando você escolhe na lista Album , na verdade você está escolhendo o Número digamos 1...O que sew deve fazer o SWITCH(){} para receber o número e tranformar em String.... ASSIm como eu postei

<%
int mod=(Integer.parseInt(request.getParameter("tipo")));
String g="";
  switch(mod){
case 1 : g="Album";break;
case 2 : g="Artista";break;
case 3 : g="Reggae";break;
}

  String resultado=request.getParameter("txt");

  String Query="Select id,nome,modulo from tabela where "'+g+ '"+like'%"+resultado.substring(0)+"%'";

%>


Entendeu agora??

where Album vai funcionar como está ta saindo assim

where 1 , não vai funcionart

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe minha ignorancioa não entendi.

porque no list menu

estou colocando o seguinte

Musica    Musica

Album    Album

e no url aparece claramente select=album

então ele está enviando a palavra album para a varivel

OK coloque o código do formulário para agente ver... olha esse exemplo:

<select name="tipo" class="estilo">
             <option value="1">Album</option>
             <option value="2" selected>Musica</option>
         </select>


Veja se tá assim..

Peça para ele aparecer na tela(imprimir) a váriavel que recebe esse valor para ver o que ele ta gerando...ele vai te voltar 1 ou 2..Verifique isso

achoq ue é esse "formCatch"...

No Jsp mesmo que eu tente pegar esse tipo de escolha no formulário select eu tenho que declarar uma varável tipo Int , repare no código

int mod=(Integer.parseInt(request.getParameter("tipo")));

Se ue fizer isso

String mod=request.getParamenter("Tipo");

o servidor já me retorna um erro dizendo que o tipo é inteiro!!!

Tipo é o nome do formulario da lista como está acima

Link para o comentário
Compartilhar em outros sites

  • 0

O forum não está deixando eu postar os codigos das paginas porque ???

Ai vai o codigo da pagina está bem basico.

Pagina de busca

<body>

<div align="center">
  <form name="form1" method="get" action="acho.asp">
    <label>
    <select name="select">
      <option value="Musica" selected>Musica</option>
      <option value="Album">Album</option>
      <option value="Interprete">Interprete</option>
    </select>
    </label>
    <label>
    <input name="busca" type="text" id="busca">
    <input type="submit" name="Submit" value="Procurar">
</label>
  </form>
</div>
</body>

Link para o comentário
Compartilhar em outros sites

  • 0

Pagina de resultados

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/ucom.asp" -->
<%
Dim Recordset1__MMColParam
Recordset1__MMColParam = "1"
If (Request.QueryString("Busca") <> "") Then 
  Recordset1__MMColParam = Request.QueryString("Busca")
End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_ucom_STRING
Recordset1.Source = "SELECT * FROM ultra WHERE Musica LIKE '%" + Replace(Recordset1__MMColParam, "'", "''") + "%'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0
%>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>

Link para o comentário
Compartilhar em outros sites

  • 0

Nem coloquei campo na pagina de resultado só para elustrar o que o dreamweaver gera foi usado vbscript.

Olha.

"SELECT * FROM ultra WHERE Musica LIKE '%" + Replace (Recordset1__MMColParam, "'", "''") + "%'"

Como você pode ver depois do LIke ele está solicitando uma string que está sendo enviada pelo campo de texto da pagina de busca.

Desta forma funciona só que está fazendo a busca só no campo musica do banco de dados

FROM ultra WHERE Musica

o que eu queria era fazer com que a string mudasse o WHERE Musica

como musica é um dos campo se o select mandasse um string para esse pedaço mudaria o campo ao qual seria feita a busca.

ex:

WHERE Musica

WHERE Album

WHERE Interprete

mais quando coloco um request.string depois do where ele não recebe ela de forma alguma.

tipo assim pagina de resultados com string depois do WHERE

Link para o comentário
Compartilhar em outros sites

  • 0

<%
Dim Recordset1__MMColParam
Recordset1__MMColParam = "Blank"
If (Request.QueryString("Busca") <> "") Then 
  Recordset1__MMColParam = Request.QueryString("Busca")
End If
%>
<%
Dim Recordset1__Varcampo
Recordset1__Varcampo = "Blank"
If (Request.QueryString("Select") <> "") Then 
  Recordset1__Varcampo = Request.QueryString("Select")
End If
%>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...