← PHP

[PHP]Gerador de números aleatório e sem repetição

Lida 8535 vezes

Offline

bfms 
Equipa
Mensagens 1769 Gostos 40
Feedback +1

Troféus totais: 35
Trófeus: (Ver todos)
Search Level 6 Apple User Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter

Preciso de ter uma página com uma base de dados com números de telemóvel.

Essa base de dados serviria apenas para gerir dois números aleatórios por dia e os mesmos não podem repetir.

Alguém tem alguma ideia como poderia ser feita esta página?

Obrigado.
Offline

Júnio Branco 
Membro
Mensagens 563 Gostos 0
Feedback +2

Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Não percebi bem o que pretendes fazer... queres usar a base de dados para gerir dois numeros aleatorios, esses numeros aleatorios são numeros de telemoveis da base de dados em si certo?
Offline

bfms 
Equipa
Mensagens 1769 Gostos 40
Feedback +1

Troféus totais: 35
Trófeus: (Ver todos)
Search Level 6 Apple User Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter

Não percebi bem o que pretendes fazer... queres usar a base de dados para gerir dois numeros aleatorios, esses numeros aleatorios são numeros de telemoveis da base de dados em si certo?

Certo. E só poderão aparecer novamente quando a lista de números terminar...
Offline

Júnio Branco 
Membro
Mensagens 563 Gostos 0
Feedback +2

Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Bem... o metodo que tou a ver para fazer isso n sei se será o que pretendes...
Normalmente numa tabela existe a coluna "ID", que permite identificar cada linha da tabela, sendo este unico. À medida que se insere um novo registo na tabela o ID vai tomar valores cada vez maiores.

Por exemplo tens uma tabela com 20 numeros de telemóveis logo 20 ID's.
O que te aconselhava fazer era fazeres algo como isto:
Código: [Seleccione]
while ($contador<=2)
// O ciclo while permite selecionar
{

$random = rand(1,20);
$sql = mysql_query(" SELECT * FROM nomedatabela WHERE ID ='$random'");
$get=mysql_fetch_array($sql);
$numero = $get['numero'];
$contador++;
}
Tipo neste script pode haver repetições... mas se meteres um IF resolve o assunto.... Não sei se te ajudei..
Offline

bfms 
Equipa
Mensagens 1769 Gostos 40
Feedback +1

Troféus totais: 35
Trófeus: (Ver todos)
Search Level 6 Apple User Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter

Bem... o metodo que tou a ver para fazer isso n sei se será o que pretendes...
Normalmente numa tabela existe a coluna "ID", que permite identificar cada linha da tabela, sendo este unico. À medida que se insere um novo registo na tabela o ID vai tomar valores cada vez maiores.

Por exemplo tens uma tabela com 20 numeros de telemóveis logo 20 ID's.
O que te aconselhava fazer era fazeres algo como isto:
Código: [Seleccione]
while ($contador<=2)
// O ciclo while permite selecionar
{

$random = rand(1,20);
$sql = mysql_query(" SELECT * FROM nomedatabela WHERE ID ='$random'");
$get=mysql_fetch_array($sql);
$numero = $get['numero'];
$contador++;
}
Tipo neste script pode haver repetições... mas se meteres um IF resolve o assunto.... Não sei se te ajudei..


Penso que ajudaste, tenho de por isto depois em prática.

Como farias esse if?

Definitivamente tenho de começar a pescar mais php lol

Edit: como uso um script de perfis depois é só ir buscar os dados da tabela onde estarão os telemóveis, correcto?
Offline

Júnio Branco 
Membro
Mensagens 563 Gostos 0
Feedback +2

Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Fazendo isso à papo seco  :superlol: ficaria algo assim:
Código: [Seleccione]

$random = rand(1,20);
$sql = mysql_query(" SELECT * FROM nomedatabela WHERE ID ='$random'");
$get=mysql_fetch_array($sql);
$numero = $get['numero'];
echo "$numero";

$randomizer= rand(1,20);
if ($randomizer ==$random){
while ($randomizer == $random){
$randomizer =rand(1,20);
}
}
$sql2 = mysql_query(" SELECT * FROM nomedatabela WHERE ID ='$randomizer'");
$get2=mysql_fetch_array($sql2);
$numero2 = $get2['numero'];
echo "$numero2";


P.S: Este script até mete medo lol como tá feito :P podia ter sido simplificado mas n me tou a lembrar neste momento... mas deve de dar para fazer o que pretendes...Amanha ou quando tiver tempo (cheio de trabalhos para fazer :S) penso um pouco nisto para simplificar...Mas de certeza que alguem aqui do forum faz um melhor lol... Mas tenta este para desenrascar :P

P.S: Sim, vais aos dados da tabela onde estão os numeros de telemoveis....


Offline

bfms 
Equipa
Mensagens 1769 Gostos 40
Feedback +1

Troféus totais: 35
Trófeus: (Ver todos)
Search Level 6 Apple User Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter

Obrigado pela ajuda :)

E digamos que só vou a essa página uma vez por dia... ele pode repetir os números do dia anterior, certo?

Offline

Júnio Branco 
Membro
Mensagens 563 Gostos 0
Feedback +2

Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Sim repete..., e tipo à medida que vais tendo mais registo vais ter de alterar o numero 20 para o numero de registos que tens :P é um grande inconveniente que tens com este script... Mas é como te digo kd tiver mais tempo irei altera-lo...e kd o fizer aviso-te (adicionei-te no msn)

Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Devias explicar melhor... não percebi nada, mas pelo código do Dark vou resumi-lo.
Código: [Seleccione]
<?php
  $query 
mysql_query("SELECT * FROM nomedatabela ORDER BY RAND() LIMIT 2");
  while(
$result mysql_fetch_array($query)) {
    
// Usar o array $result
  
}
?>
Se queres guardar os que já usaste, é só criares outra tabela.
Offline

Júnio Branco 
Membro
Mensagens 563 Gostos 0
Feedback +2

Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

 :superlol: Eu bem sabia que havia uma maneira de simplificar o que escrevi... :p
Offline

bfms 
Equipa
Mensagens 1769 Gostos 40
Feedback +1

Troféus totais: 35
Trófeus: (Ver todos)
Search Level 6 Apple User Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter

Devias explicar melhor... não percebi nada, mas pelo código do Dark vou resumi-lo.
Código: [Seleccione]
<?php
  $query 
mysql_query("SELECT * FROM nomedatabela ORDER BY RAND() LIMIT 2");
  while(
$result mysql_fetch_array($query)) {
    
// Usar o array $result
  
}
?>
Se queres guardar os que já usaste, é só criares outra tabela.

Hmm os que vao saindo automaticamente são "movidos" para outra tabela?
Muito bem, parece-me bem...
No entanto quando chegar ao fim da lista esses voltam a "sorteio", retirando apenas alguns...

Sim repete..., e tipo à medida que vais tendo mais registo vais ter de alterar o numero 20 para o numero de registos que tens :P é um grande inconveniente que tens com este script... Mas é como te digo kd tiver mais tempo irei altera-lo...e kd o fizer aviso-te (adicionei-te no msn)



Muito obrigado pela ajuda.
Já passo por lá... :)
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Não são movidos, crias um timestamp e os ids que foram usados, e depois é só fazeres um query com as duas tabelas e retirares esses ids e fazeres o rand.