Sistema de sorteio com PHP
Hoje 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.
Compartilhar




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
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.
um dos primeiros sistemas que eu procuro que fico conformado. parabéns !
Muito bom seu sisteminha!! Simples e eficiente!! 2 características fundamentais que um bom programa precisa ter. Parabéns!!
bastaria..
e o grande verncerdor é…
.
..
….
……
…….
[...] …. echo rand(111,999).”Parabéns!”;
Como que faria pegando o nome dos participantes por uma colsulta no bd?
tipo
$participantes = “select nome from cadastrados”;
$resultado = mysql_query($participantes);
Olá,
Bacana d+ o sistema de sorteio.
Gostaria que me ajudasse na seguinte questão: Ao invés de colocar os nomes no código php, gostaria que ele buscasse os nomes através de uma coluna no Excel (XLS), tem como fazer isso? fico no aguardo, abs.
Olá Rafael, muito bom seu sistema, mas tenho uma dúvida como faria para pegar os dados do banco mysql e colocar dentro da variável $participantes:
// Matriz com todos os participantes
$participantes = array(“Rafael”, “João”, “Maria”, “Pedro”, “Patricia”, “Camila”, “Roberto”);
na variavel vc está colocando os participantes manual como seria se fosse obtendo de um banco de dados?
Obrigado e parabéns pelo site.