Sistema de sorteio com PHP
Escrito por Rafael em 20 janeiro, 2009 826 visualizaçõesHoje iremos desenvolver um sisteminha de sorteio bem simples que pode ser utilizado em alguns casos. Iremos armazenar nossos participantes em um array, porém o mais correto seria armazena-los em um banco de dados, mas o conceito é o mesmo.
Veja como o sistema funciona, clicando aqui.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <?php // Matriz com todos os participantes $participantes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila", "Roberto"); // Definindo o número de participantes $numParticipantes = sizeof($participantes); // Informações adicionais $chances = round((1 / $numParticipantes) * 100); echo "- Temos no total <b>".$numParticipantes."</b> participantes; <br />"; echo "- Cada participante teve <b>".$chances."%</b> de chance de ganhar; <br /><br />"; // Sorteando # Primeiro ganhador $sorteado[1] = $participantes[rand(0,$numParticipantes - 1)]; # Segundo ganhador for ($i = 1; $i < 2; $i++) { $sorteado[2] = $participantes[rand(0,$numParticipantes - 1)]; // Caso o ganhador já tenha saido, sorteia novamente. if ($sorteado[2] == $sorteado[1]) { --$i; } } # Terceiro ganhador for ($i = 1; $i < 2; $i++) { $sorteado[3] = $participantes[rand(0,$numParticipantes - 1)]; // Caso o ganhador já tenha saido, sorteia novamente. if ($sorteado[3] == $sorteado[1] || $sorteado[3] == $sorteado[2]) { --$i; } } // Exibindo ganhadores echo "<b>Ganhadores:</b> <br />"; echo "<b>1°</b> - " . $sorteado[1] . "<br />"; echo "<b>2°</b> - " . $sorteado[2] . "<br />"; echo "<b>3°</b> - " . $sorteado[3] . "<br />"; ?> |
Agora vou tentar explicar melhor o sisteminha:
- Linha 4: Colocamos todos os participantes em um array(), porém como já foi dito, o mais correto seria colocar os participantes em uma tabela no banco de dados;
- Linha 7: Armazenamos o numero de participantes em uma variável;
- Linha 10: Calculamos a chance que o participante tem de ganhar (em %);
- Linha 11 e 12: Exibimos as informações adicionais;
- Linha 17: Sorteamos o primeiro ganhador e armazenamos o individuo em um array(). Utilizamos a função rand() para sortear um numero desde 0 (zero) até o numero máximo de participantes, colocamos “-1″ pois lembre-se que em um array o primeiro valor sempre é 0 (zero) e não 1;
- Linha 20 a 26: Utilizamos o laço for() para sortear o segundo ganhador, pois se o segundo ganhador for igual a o primeiro, precisamos sortear novamente até sair um participante diferente;
- Linha 29 a 35: Utilizamos novamente o laço for(), desta vez para sortear o terceiro ganhador. E segue o mesmo conceito do segundo ganhador;
- Linha 38 a 42: Exibimos os ganhadores.
Isso é apenas uma base de como você pode desenvolver um sistema de sorteio, o conceito praticamente será sempre o mesmo. Até mais.


24 dezembro, 2009 as 10:18
e pra eu por mais participantes? por exemplo, 5 ou 6 participantes serem sorteados como faz?
valeu e eu achei bem bacana por ser simples
28 dezembro, 2009 as 13:33
Olá Julio,
Bom, esse script que eu fiz não é muito flexível, e para exibir mais sorteados teria que fazer mais alguns loops; O objetivo era mesmo mostrar alguns recursos possíveis para fazer um sistema de sorteio. Porém eu fiz aqui um script mais flexível, onde basta você configurar uma váriavel para definir o número de sorteados:
Então para exibir 6 sorteados, por exemplo, basta definir o valor da váriavel $numero_sorteados; Ok?
Abraços.
1 março, 2010 as 18:01
[...] favorecer quaisquer participantes. Vale destacar que ele foi, inicialmente disponibilizado no site http://faael.net/sistema-de-sorteio-com-php/, e foi alterado para se adaptar às nossas [...]
20 junho, 2010 as 20:55
[...] Utilizamos um script desenvolvido por Rafael Couto que encontramos na internet que pode ser baixado aqui. Colocamos o nome das 26 pessoas e de forma aleatória o sistema escolheu um ganhador ou ganhadora [...]