Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema de sorteio


ricardovtav

Pergunta

Boa tarde Pessoal eu não entendo quase nada de php mas estou com um codigo aqui que ate funciona, é um sisteminha de sorteio que mostra um nome dentre 8 disponiveis, isso já esta funcionando veja o link. o que eu gostaria de adaptar é o seguinte, tipo, eu entro na pagina e sai o nome Alessandra, na proxima vez que alguém entrar nesta pagina o nome alessandra não estará mais disponivel, consequentemente outro será sorteado... conto com a ajuda de vocês, o codigo que estou usando é o seguinte:

<?php

// Matriz com todos os participantes

$participantes = array("Ricardo", "Alessandra", "Renata", "Mario", "Catia", "Monica", "Izolete", "Gerson");

// 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)];

// Exibindo ganhadores

echo "<b>Sorteado:</b> <br />";

echo "<b>1°</b> - " . $sorteado[1] . "<br />";

?>

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Boa tarde Pessoal eu não entendo quase nada de php mas estou com um codigo aqui que ate funciona, é um sisteminha de sorteio que mostra um nome dentre 8 disponiveis, isso já esta funcionando veja o link. o que eu gostaria de adaptar é o seguinte, tipo, eu entro na pagina e sai o nome Alessandra, na proxima vez que alguém entrar nesta pagina o nome alessandra não estará mais disponivel, consequentemente outro será sorteado... conto com a ajuda de vocês, o codigo que estou usando é o seguinte:

<?php

// Matriz com todos os participantes

$participantes = array("Ricardo", "Alessandra", "Renata", "Mario", "Catia", "Monica", "Izolete", "Gerson");

// 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)];

// Exibindo ganhadores

echo "<b>Sorteado:</b> <br />";

echo "<b>1°</b> - " . $sorteado[1] . "<br />";

?>

Você pode gravar os sortiados em um txt e verificar se eles já foram sorteados ou não mas no seu caso quando atingir os oitos sorteados jã não sorteará mais pois você so entrarar oito vezes na pagina é necessário adicionar mais uma verificação no sorteio até mais

Link para o comentário
Compartilhar em outros sites

  • 0

exatamente amigo, mas como que eu adicionaria isso no codigo?

Boa tarde Pessoal eu não entendo quase nada de php mas estou com um codigo aqui que ate funciona, é um sisteminha de sorteio que mostra um nome dentre 8 disponiveis, isso já esta funcionando veja o link. o que eu gostaria de adaptar é o seguinte, tipo, eu entro na pagina e sai o nome Alessandra, na proxima vez que alguém entrar nesta pagina o nome alessandra não estará mais disponivel, consequentemente outro será sorteado... conto com a ajuda de vocês, o codigo que estou usando é o seguinte:

<?php

// Matriz com todos os participantes

$participantes = array("Ricardo", "Alessandra", "Renata", "Mario", "Catia", "Monica", "Izolete", "Gerson");

// 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)];

// Exibindo ganhadores

echo "<b>Sorteado:</b> <br />";

echo "<b>1°</b> - " . $sorteado[1] . "<br />";

?>

Você pode gravar os sortiados em um txt e verificar se eles já foram sorteados ou não mas no seu caso quando atingir os oitos sorteados jã não sorteará mais pois você so entrarar oito vezes na pagina é necessário adicionar mais uma verificação no sorteio até mais

Link para o comentário
Compartilhar em outros sites

  • 0

è mais ou menos isso, esse codigo busca os dados da tabela nome e sorteia verifica se já foi sorteado na data e pelo ip, caso tenha sido imprime a tentativa e continua o sorteio caso todos os nomes já tenham sido sorteados ele avisa que não há possibilidade se sorteio para aquela data e para aquele ip.

<?php
mysql_connect("localhost","root","");
mysql_select_db("banco");

class Sorteio
{
 var $Sorteados;
 var $Sorteado;
 var $ip;
 private $Data;
 private $Hora;

 function __construct()
                     {
                      $this->setar();
                      $this->BuscarSorteados();
                     }
                     
 function setar()
               {
                $this->ip=$_SERVER['REMOTE_ADDR'];
                $this->Data=date("Y-m-d");
                $this->Hora=date("H:i:s");
               }
               
 private function Inserir($Codigo)
                         {
                          if (!empty($Codigo)){
                          if (is_numeric($Codigo)){
                          $sql=mysql_query("insert into sorteados (ip, data, hora, id_nome, id) values('$this->ip', '$this->Data', '$this->Hora', '$Codigo', '$id')") or die(mysql_error());
                          if ($sql)
                             {
                              return mysql_insert_id();
                             }
                          }
                          }
                         }
                         
 function BuscarSorteados()
                         {
                          /* selecionando os sorteados pelo ip e pela data */
                          $sql=mysql_query("select * from sorteados where ip='$this->ip' && data='$this->Data'") or die(mysql_error());
                          if (mysql_num_rows($sql)>0)
                             {
                              while($s=mysql_fetch_object($sql))
                                   {
                                    $cods[]=$s->id_nome;
                                   }
                             }
                              else
                             {
                              $Sor='N';
                             }
                           /* selecionando todos os nomes disponiveis */
                           $sqlb=mysql_query("select * from nomes") or die(mysql_error());
                           $Numero=mysql_num_rows($sqlb);
                           if (mysql_num_rows($sqlb) >0)
                              {
                               while($sb=mysql_fetch_object($sqlb))
                                    {
                                     $nomes[]=$sb->nome;
                                     $cod[]=$sb->id;
                                    }
                              }
                               else
                              {
                               echo "Não há nenhuma lista de nomes disponiveis no momento.";
                               exit;
                              }
                              
                           /* comparando os arrays de elementos */
                           if (is_array($cods))
                              {
                               $bsd=0;
                               foreach($cod as $key => $ids)
                                      {
                                       if (in_array($ids, $cods))
                                          {
                                           $bsd++;
                                          }
                                      }
                               if ($bsd == count($cod))
                                  {
                                   echo "Todos os nomes da lista já foram sorteados pelo seu ip $this->ip, na data atual $this->Data.";

                                  }
                              }
                           /* sorteando um numero */

                           do{
                              $N_sort=rand(0,$Numero);
                              $C_sort=$cod[$N_sort];
                              if ($Sor!='N')
                                 {
                                  if (in_array($C_sort, $cods))
                                     {
                                      $Tentativas[]=$N_sort;
                                      continue;
                                     }
                                      else
                                     {
                                      $Cso=$this->Inserir($C_sort);
                                      $Sorteio=$nomes[$N_sort]."(".$C_sort.")";
                                      echo "<br/>Codigo do sorteado $Cso.<br/>";
                                      break;
                                     }
                                 }
                                  else
                                 {
                                  $Cso=$this->Inserir($C_sort);
                                  $Sorteio=$nomes[$N_sort]."(".$C_sort.")";
                                  echo "<br/>Codigo do sorteado $Cso.<br/>";
                                  break;
                                 }
                             }
                              while(1>1);
                           echo "Tentativa número ".count($Tentativas).".<br/>";
                           echo $Sorteio;
                         } /* final da  função */
} /* final da classe */

$sorteio=new Sorteio;
sql
-- phpMyAdmin SQL Dump
-- version 2.9.1.1
-- [url="http://www.phpmyadmin.net"]http://www.phpmyadmin.net[/url]
-- 
-- Servidor: localhost
-- Tempo de Geração: Dez 11, 2010 as 12:15 AM
-- Versão do Servidor: 5.0.27
-- Versão do PHP: 5.2.9-1
-- 
-- Banco de Dados: `agenda`
-- 

-- --------------------------------------------------------

-- 
-- Estrutura da tabela `sorteados`
-- 

CREATE TABLE `sorteados` (
  `ip` varchar(20) NOT NULL,
  `data` date NOT NULL,
  `hora` time NOT NULL,
  `id_nome` int(20) NOT NULL,
  `id` int(20) NOT NULL auto_increment,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5;

-- 
-- Extraindo dados da tabela `sorteados`
-- 

INSERT INTO `sorteados` (`ip`, `data`, `hora`, `id_nome`, `id`) VALUES 
('127.0.0.1', '2010-12-11', '00:09:06', 2, 1),
('127.0.0.1', '2010-12-11', '00:09:08', 1, 2),
('127.0.0.1', '2010-12-11', '00:11:17', 3, 3),
('127.0.0.1', '2010-12-11', '00:11:34', 4, 4);


-- phpMyAdmin SQL Dump
-- version 2.9.1.1
-- [url="http://www.phpmyadmin.net"]http://www.phpmyadmin.net[/url]
-- 
-- Servidor: localhost
-- Tempo de Geração: Dez 11, 2010 as 12:16 AM
-- Versão do Servidor: 5.0.27
-- Versão do PHP: 5.2.9-1
-- 
-- Banco de Dados: `agenda`
-- 

-- --------------------------------------------------------

-- 
-- Estrutura da tabela `nomes`
-- 

CREATE TABLE `nomes` (
  `nome` varchar(250) NOT NULL,
  `id` int(20) NOT NULL auto_increment,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5;

-- 
-- Extraindo dados da tabela `nomes`
-- 

INSERT INTO `nomes` (`nome`, `id`) VALUES 
('robson ricardo', 1),
('ricardo silva', 2),
('maicon santos', 3),
('silvia oliveira', 4);

qualquer duvida post ai até mais

Link para o comentário
Compartilhar em outros sites

  • 0

Cria um arquivo mesma pasta que esse daí, digamos, nomes.txt, com permissões de ler e gravar. Bota nele uma lista de nomes, tipo

Mario

Ana

(sem linhas em branco no início e no fim, e com uma quebra de linha como espaço entre os nomes)

No início, você carrega o array $participantes com os nomes desse arquivo de texto. Tem uma função chamada file que faz isso por você. [É importante, como você vai ver mais pra frente, verificar se esse arquivo ainda tem elementos. Se o arquivo estiver vazio, a funão file vai retornar "FALSE", então você verifica isso e manda pra uma página de fim do sorteio, por exemplo.]

Depois você sorteia um número entre 0 e número de elementos de $participantes, exatamente como você tinha feito. Chama esse número de $numeroSorteado.

Bota o resultado lá usando $numeroSorteado.

Depois reescreve todos os elementos do vetor $participantes no nomes.txt (que será devidamente "truncado" para 0 byte) exceto o elemento cujo número foi sorteado ali em cima. É um loop assim:

$alc = fopen("nomes.txt", "w"); //a opção w abre o arquivo para escrever, e trunca o arquivo para 0 byte 

for($i=0; $i<count($participantes); $i++)
  {
      if($i!=$numeroSorteado){  
      fwrite($alc,$participantes[$i]); //Se não me engano, ao fim de cada elemento já haverá um "\n".
      }
  }

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...