Ir para conteúdo

POWERED BY:

Arquivado

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

luamm

Comparação entre Arrays (eu acho...)

Recommended Posts

Salve Pessoal,

 

Tô com um problema que realmente embaralhou minhas idéias http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

Explicarei melhor, vejam só:

 

Eu estou fazendo um cadastro de modelos para um site de uma agência, neste cadastro a modelo pode selecionar mais de uma categoria de trabalho que atua (uso uma lista com a propriedade multiply), tipo: Moda, Beleza, TV, Cinema, Spot, Nú e etc...

Até aí tudo bem, pois tenho um campo na tabela "tbl_models" chamado "Category" onde gravo os dados, formato texto, assim: "1, 2, 4, 6, 8" ou "1" ou "5, 6" enfim...por aí vai, de acordo com as categorias que ela selecionar!

 

O problema é que no site possui uma busca de modelos por categoria, onde uso checkbox dinâmicos, ou seja, o mesmo nome "Categ_Work" para todos, alterando apenas os valores, quando o usuário seleciona as categorias desejadas e dá um submit eu recebo uma variável que pode conter 1 ou mais valores, o que acontece é que eu não sei como comparar estas arrays num select.

 

Pensei em usar a cláusula IN, dessa forma:

 

SELECT * FROM tbl_models WHERE Approved = True AND Category IN ('"&Request.Form("Categ_Work")&"')

 

Mais não funciona quando o campo "Category" possui mais de um valor.

 

Entendem o que eu preciso?

Eu preciso saber se no campo "Category" do bd existe algum dos valores que compõem o 'Request.Form("Categ_Work")'

 

Não sou muito boa em arrays, por favor me ajudem!!

É muuuiiiittttttooooo importante, e este projeto já esta atrasado por causa disto :(

 

Fico no aguardo... Quem puder me ajudar, ficaria muito grata!

BJS

LUAMM :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que esta vindo emRequest.Form("Categ_Work")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada pela atenção "marioufpa",

 

Pois então, o que vem do Request.Form("Categ_Work") são os valores dos checkboxs como eu havia mencionado, esses valores são do tipo:

 

"1, 2, 3, 9, 71"

ou

"1"

ou

"2, 5"

 

e de assim por diante... entende?

 

BJS

LUAMM

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bicicleta, isso não funfa:

SELECT * FROM tbl_models WHERE Approved = True AND Category IN ("&Request.Form("Categ_Work")&")

Ocorre o seguinte erro:Data type mismatch in criteria expression. De qq forma acho que você não entendeu o que eu preciso, tanto no campo "Category" da tabela quanto no "Request.Form..." existem mais de um valor, e o que eu preciso fazer é comparar o conteúdo do "Request.Form..." um a um dentro do conteúdo do campo "Category", por exemplo:No campo "Category" eu possuo os valores: "1, 2, 6, 9" e no "Request.Form..." o seguinte: "2, 9" então eu devo pegar o dois e ver se ele existe em "Category", depois faço este mesmo procedimento com o nove, entende? Preciso saber se algum dos valores do "Request.Form..." se encontram no "Category"É issoAbrçs,Luamm :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta fazer assim:

Divide as categorias nas vírgulas e vai montando as condições

ASP

[*]

 

[*]if request.form("Categ_Work") <> "" then

 

[*] categorias split(Request.Form("Categ_Work"),",")

 

[*] for x=lbound(categorias) to ubound(categorias)

 

[*]  if categorias(x) <> "" then condicao = condicao & " or Category=" & categorias(x)

 

[*]  next

 

[*]  condicao " and (" & mid(condicao,5,len(condicao)) & ")"

 

[*]end if

 

[*]sql "SELECT * FROM tbl_models WHERE Approved = True" & condicao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Luizgrs... :rolleyes:

 

Muito Obrigada pela resposta, creio que é quase isso... quando testei esse script ele deu o erro: "Data type mismatch in criteria expression."

 

O campo "Category" do banco esta em formato texto.

 

Imagino que esse script funcionaria bem se o campo "Category" fosse número, mais no meu caso ele é texto e pode possuir mais de um valor, assim:

 

tbl_Models

------------

id Name_Model Category

1 Mary Anne*** 1, 2, 3, 5, 9

2 Josephy Lin** 1, 3

3 Gael Lebon** 2, 5, 9

4 Julia Scott*** 3

 

Veja que se meu "Request.Form..." trouxesse o valor: "1, 2"

 

Então o resultado do While do meu SELECT seria:

Mary Anne

Josephy Lin

Gael Lebon

 

Ou seja, eu vasculharia se no campo "Category" do banco existe um ou mais dos valores "separados" do "Request.Form..."

 

 

É isso, será que tem como????

É possível se fazer isto???

 

Preciso muito da ajuda de vcs! http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

 

BJS

LUAMM :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oiiiieeeeee Bicicleta,Olha só, você conseguiu entender o que eu quero! Desse jeito funciona... Mais o problema agora é o que você mesmo disse se eu tenho o meu "Request.Form..." um valor "2" por exemplo, e no banco eu tiver um valor "21" ele traz.Eu fiz um teste no campo da tabela e coloquei da forma que você indicou, exemplo: Em um registro estava assim: "|2|9|10|11|15|14|"e em outro: "|9|10|21|"No meu Request.Form estava somente o "2" pois selecionei somente uma opção na página anterior, era pra ele me trazer somente o primeiro registro, mais ele trouxe os dois....Sabe como posso resolver isso?Sinto que estamos quase lá, falta só um pouquinho pra resolver....De qq forma agradeço por sua atenção,BJSLUAMM :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo será que ñ da para alterar lá a forma de guardar os registros lá e por que nem você mostrous aí em cima "|1|2|3|4|" daí éra só procurar pelo número entre esse pauzinhos. Assim:

ASP

[*]if request.form("Categ_Work") <> "" then

 

[*] categorias split(Request.Form("Categ_Work"),",")

 

[*] for x=lbound(categorias) to ubound(categorias)

 

[*]  if categorias(x) <> "" then condicao = condicao & " or Category='%|" & categorias(x) & "|%'"

 

[*]  next

 

[*]  condicao " and (" & mid(condicao,5,len(condicao)) & ")"

 

[*]end if

 

[*]sql "SELECT * FROM tbl_models WHERE Approved = True" & condicao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz!

 

O que dizer.... É Luizgrs, você iluminou meu fim de noite! http://forum.imasters.com.br/public/style_emoticons/default/wub.gif

 

Mais como fui "cabaça" http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

 

Eu não coloquei a barra "|" na minha consulta :blink: como poderia funcionar? http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

 

Muuuuiiiitttttttttoooooo obrigada à você e ao Bicicleta http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif , agora esta tuuuudddddooooo 100% http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

É assim mesmo... as vezes nós mesmos não enxergamos o óbvio, é preciso que outra pessoa nos mostre, tb já estava até caolha de ficar olhando pra esse script... rssssss.

 

Enfim, obrigada mesmo pessoal, foi muito bom contar com vcs mais uma vez!

 

BJS

LUAMM :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.