Sorteio de numeros sem ordem
O Problema é o seguinte:
Possuo 3 tabelas:
- promocao
- inscritos
- sorteio
Para efetuar o sorteio, seleciono a promoção em um select, cujo value é o seu id na tabela "promocao" e digito o número de sorteados (limite) em um input.
Esse form é enviado para uma outra página que recebe os dados, busca na tabela inscritos todos os cadastrados com o "id_promo" igual ao "id" da promocao enviado pelo form.
Para sorteá-los preciso pegar o "id" de cada um na tabela de "inscritos", organizar e sortear randomicamente.
Até aí tudo bem. Mas os "ids" são fora da ordem, pois o cadastro é feito a toda hora no site, em diversas promoções, sendo assim fica tudo fora de ordem (ex: id_promo=1 retorna ids (5,6,9,15,27,85,110,112)) e quero sortear um número x dentre eles.
Tentei utilizar a função rand() mas ele sorteia um número sequencial entre limites pré-definidos.
Preciso que sorteie assim, utilizando números avulsos e que não se repita nunca o mesmo número em um sorteio.
No código abaixo adicionei uma ação que envia e-mail sempre que o usuário ganha, mas preciso é saber do resto, do sorteio.
>
<?
$id_promocao = $_REQUEST[promocao];
$limite = $_REQUEST[limite];
require('docs/conexao.php');
$select = "SELECT * FROM tb_inscritos WHERE id_promo='$id_promocao' ORDER BY nome LIMIT $limite";
$query = mysql_query($select);
$conta = @mysql_num_rows($query);
if($conta < $limite) {
echo "Número se Usuários a serem sorteados ($limite) é superior ao número de cadastrados inscritos ($tot)";
echo "<br><br><a href='java script:window.history.go(-1)'>Volte e tente novamente</a>";
}
else {
$i = 1;
$c = 1;
while($row = mysql_fetch_array($query)) {
$numero[$i] = $row[id];
$nome[$i] = $row[nome];
$i++;
}
echo "<br><br>";
echo "<strong> Sorteados </strong><br><br>";
$i--;
$a = 1;
for($n=1; $n<=$limite; $n++) {
$sorteio[$a] = rand(1, $i);
$temp = $sorteio[$a];
while(in_array($temp, $sorteio)) {
$sorteio[$a] = rand(1, $i);
}
$i = $a;
echo "<strong>$sorteio[$a]</strong>. $nome[$i]<br>";
$pro = mysql_query("SELECT * FROM tb_promocoes WHERE id='$id_promocao'");
$mensagem = "Parabéns, você ganhou um prêmio da Promoção <strong>"$linha[titulo]"</strong>";
$mensagem.= "<br><br>O prêmio será enviado ao endereço cadastrado, posterior a um contato telefônico para confirmação do endereço.";
$headers = "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n";
$envia = mail("$row[", "Orbytal Promoções - Parabéns Você Ganhou!", $mensagem, $headers);](mailto:)
echo "E-mail de aviso enviado!
";
Discussão (13)
Carregando comentários...