Ir para conteúdo

Arquivado

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

l_nando

Sorteio de nomes

Recommended Posts

Pessoal, boa tarde.

 

Estou muito enferrujado e preciso da ajuda de vcs.

 

Preciso fazer o seguinte:

 

Pegar vários nomes selecionados ou marcados em checkbox e mostrar em outra tela ou na mesma de ordem aleatória, não na mesma que está selecionada, e separar com um espaço ou enter a cada 6 nomes, se caso eu atualizar a pág., ele mudar a ordem.

 

Isso é possível?

 

Se alguém puder ajudar, agradeço!!!

 

Abraços!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplos, com o RANDOM nos registros de um banco de dados sem repetição.

<%


' Gravamos o Recordset em um Array Bidimensional

Set strRS = Server.CreateObject("ADODB.RecordSet")

strRS.Open "SELECT * FROM membros ", strConexao, 3, 3

arySub = strRS.getRows()



' Fechamos a conexão pois não usaremos mais

strRS.Close

Set strRS = Nothing

strConexao.Close

Set strConexao = Nothing



Dim TotalReg, TotalNum, vran, x, encontrou, arrGerados(0)

Dim Numreg, verGerado, var_arrGerados, xLoop



Function GeraRegistros(TotalNum)

TotalReg=Cint(uBound(arySub,2)) ' Encontramos o Maior Array Gerado

vran = 1



For x = 0 To TotalNum-1 ' LOOP de 1 p/ Total solicitado

encontrou = 1

Randomize() ' Geramos o primeiro Random

NumReg = Cint((rnd*TotalReg))

verGerado = Split(var_arrGerados,",") ' Verifica se nº gerado

For xLoop = LBound(verGerado) To UBound(verGerado)

IF Trim(verGerado(xLoop)) = Trim(NumReg) Then

'Este "response" comentado abaixo, indica qual número se repetiram

'E não armazena no Array único, fazendo gerando um novo Random

'response.write "<b>[ "& verGerado(xLoop) &","& NumReg &" ]</b><br> "

x = x - 1

encontrou = 2

Exit For

End IF

Next

IF encontrou = 1 Then ' NÃO ENCONTROU, gera o próximo número



IF vran = 1 Then ' primeiro (Verificar este trecho)

arrGerados(0) = NumReg

vran = 2

Else

arrGerados(0) = arrGerados(0) &","& NumReg

End IF

var_arrGerados = Join(arrGerados)

End IF

Next

GeraRegistros = var_arrGerados

End Function

' Array gerado, podemos iniciar a formatação de perguntas

number = GeraRegistros(3)



verNum = Split(number, ",")

For x = LBound(verNum) to UBound(verNum)

response.write arySub(0,verNum(x)) &"."

response.write arySub(1,verNum(x)) &"<br>"

Next

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, desculpa minha burrice, é que estou a muito tempo mesmo sem trabalhar com isso e não consegui adaptar ao que eu queria, pois não vai ser por BD, e sim só vou marcar os nomes específicos em checkbox para ele misturar.

 

Se puder ajudar!

 

Valeu!

 

 

Bom dia pessoal!!

 

Com BD consegui fazer, só falta uma coisa, que a cada 6 registros tivessem dois <br> pra ter um espaço entre eles.

e se tem a possibilidade de fazer sem BD, tipo marco os nomes pelo checkbox e ele faz o processo.

 

Abraço!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, só seguir mesmo esquema do code acima, para inserir o <br> só concatenar na geração dos registros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, não me leve a mal!

mas vc pode me dar uma luz de como?

 

Estou a muito tempo parado e enferrujei mesmo!

 

Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um contador simples, quando atingir 6, insere o

 

response.write arySub(1,verNum(x)) &"<br><br>"

 

se não for usar bd, apenas remova a parte da conexão, recordset e SQL do código, fazendo ele apenas ler seus checkbox

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, não sou um completo conhecedor do assunto e fiquei muito tempo parado, mas muito tempo mesmo.

 

Me diz uma coisa, o que você está falando para tirar do cod. são esses trechos:

Dim objConn, strCaminhostrCaminho = Server.MapPath("/Sorteio/test.mdb")        set strConexao = Server.CreateObject("ADODB.Connection")        'Abrindo a Conexão        strConexao.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strCaminho & ";Persist Security Info=False")' Gravamos o Recordset em um Array BidimensionalSet strRS = Server.CreateObject("ADODB.RecordSet")strRS.Open "SELECT * FROM BD ", strConexao, 3, 3arySub = strRS.getRows()' Fechamos a conexão pois não usaremos maisstrRS.CloseSet strRS = Nothing

E substituir pela variável que vem do checkbox?

 

Tks.

 

 

Pessoal, bom dia.

 

Consegui resolver o problema do sorteio, vou postar o cód. abaixo.

Só preciso resolver a questão de pular 2 linhas a cada 6 nomes, alguém pode ajudar?

 

Segue cód. do sorteio:

<% DIM  teste, teste_a, iteste = request("TESTE2")teste_a = split(teste,",")'****************************************' This function randomly reorders the' array aArray using a quick and dirty' approach...  It's fast!'****************************************Function ReOrderArrayQuickNDirty(ByVal aArray)  Dim iUpper, iLower, teste_a, iSwapPos, varTmp  iUpper = UBound(aArray)  iLower = LBound(aArray)  Randomize Timer  'Loop through the array, randomly swapping values  For teste_a = iLower to iUpper    'Get an array index to swap    iSwapPos = Int(Rnd * (iUpper + 1))    'Swap the current element with the element at iSwapPos    varTmp = aArray(teste_a)    aArray(teste_a) = aArray(iSwapPos)    aArray(iSwapPos) = varTmp  Next  ReOrderArrayQuickNDirty = aArray   'Return the jumbled arrayEnd FunctionDim SorteioReDim Sorteio(2)Sorteio = teste_a'Jumble up the array and display the new, random order!Sorteio = ReOrderArrayQuickNDirty(Sorteio)For teste_a = LBound(Sorteio) to UBound(Sorteio)  Response.Write Sorteio(teste_a) & "<BR>"    Next %>

Se alguém puder ajudar na questão do contador eu agradeço, pq esse não sei fazer e não esncontrei em lugar nenhum.

 

Abraço!!

 

 

E aí pessoal, alguém consegue me ajudar a fazer esse contador de nomes sendo que eu não estou usando BD?

Não tenho esse conhecimento.

 

Tks!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

um if simples, com condicional de seis nomes, dae insere o <br>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Recupere os dadsos do array e use o SPLIT para seprará-los

<%

a=Split("Santos, XV de Piracicaba, São Paulo",",")
for each x in a
response.write(x & "<br />")
next

%>

resultado

Santos,
XV de Piracicaba
São Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, isso já estou fazendo!!!

 

O resultado do sorteio sai assim:

 

Nome 1

Nome 2

Nome 3

Nome 4

Nome 5

Nome 6

Nome 7

Nome 8

Nome 9

Nome 10

 

Mas gostaria de fazer isso:

 

Nome 1

Nome 2

Nome 3

Nome 4

Nome 5

Nome 6

 

Nome 7

Nome 8

Nome 9

Nome 10

Nome 11

Nome 12

 

Pular de 6 em 6 e assim por diante, já pesquisei bastante e não consegui achar uma solução.

Desculpa se não consegui explicar direito o que eu pretendia antes.

 

Tks!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

um contador na variável...

 

lembrando que o Split começa o array na posição zero

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.