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

Posts relacionados

  1. Julio disse:

    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

    • faael disse:

      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:

      <?php
      // Definimos em um array os participantes do sorteio
      $participantes = array("Rafael", "João", "Maria", "Manoel", "Pedro", "Camila", "Roberto", "Patricia");
      // Definimos o número de participantes que serão sorteados
      $numero_sorteados = 4;
       
      // Enquanto o número de sorteados for maior que zero, o sorteio continua
      while ($numero_sorteados > 0) {
      // Reordenamos os participantes
      sort($participantes);
      // Recontamos o número de participantes
      $numero_participantes = count($participantes) - 1;
      // Sorteamos um número entre zero e o número de participantes
      $sort = rand(0, $numero_participantes);
      // Colocamos o sorteado em um array
      $sorteados[$numero_sorteados] = $participantes[$sort];
      // Retiramos o sorteado do array de participantes, para que ele não seja sorteado novamente
      unset($participantes[$sort]);
      // Decrementamos o número de sorteados
      $numero_sorteados--;
      }
       
      // Reordenamos os sorteados pela chave
      ksort($sorteados);
       
      // Exibindo os ganhadores
      foreach ($sorteados as $lugar => $sorteado) {
      echo "<b>" . $lugar . "º</b> - " . $sorteado . "<br />";
      }
      ?>

      Então para exibir 6 sorteados, por exemplo, basta definir o valor da váriavel $numero_sorteados; Ok?
      Abraços.

  2. um dos primeiros sistemas que eu procuro que fico conformado. parabéns !

  3. Luan disse:

    Muito bom seu sisteminha!! Simples e eficiente!! 2 características fundamentais que um bom programa precisa ter. Parabéns!!

  4. anony disse:

    bastaria..

    e o grande verncerdor é…
    .
    ..
    ….
    ……
    …….
    [...] …. echo rand(111,999).”Parabéns!”;

  5. samara disse:

    Como que faria pegando o nome dos participantes por uma colsulta no bd?
    tipo
    $participantes = “select nome from cadastrados”;

    $resultado = mysql_query($participantes);

  6. Victor disse:

    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.

  7. Albeci disse:

    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.

  1. [...] 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 [...]

  2. [...] 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 [...]

Deixe um comentário