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

(Resolvido) Repetir script PHP ate encontrar um resultado satisfatorio


Lucas Trindade

Pergunta

Olá pessoal!

Não sei se coloquei o melhor titulo para o tópico, mas não consequi pensar em nada melhor.

Estou montando um script em PHP que registra no banco de dados todos usuarios que estão on-line no meu site, mas encontrei um problema.

Quando o usuario faz login o script gera uma id que é gravada no MySQL. Essa id é gerada pela função "mt_rand(10000000, 99999999)". Bom, até ai sem problemas, mas parei pra pensar um pouco... "Se o script gera numeros aleatorios quaisquer, ele pode gerar duas vezes o mesmo numero.". Se esse script gerar uma id que esta sendo usada por outro usuario online serão gerados conflitos em outros scripts do site.

Gostaria de saber se é possível fazer o PHP gerar uma id e consultar se ela já esta sendo usada e, se estiver, gerar novas id's até encontar uma que não esteja em uso.

Desde já agradeço a ajuda de todos. Obrigado!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Não entendi o porque de usar rand ao invés de auto incremento mas, basta você executar o mt_rand() e fazer uma busca no banco tipo:

$ctrl=true;

while($ctrl)
{
  $novo=mt_rand(10000000, 99999999);
  $sql=mysql_query("select id from tabela where id=".$novo);
  if(mysql_num_rows($sql))
  {
    $ctrl=false;
  }
}

]

Aí depois que sai do loop a variável "$novo" vai ser única.

Link para o comentário
Compartilhar em outros sites

  • 0
Não entendi o porque de usar rand ao invés de auto incremento mas, basta você executar o mt_rand() e fazer uma busca no banco tipo:

$ctrl=true;

while($ctrl)
{
  $novo=mt_rand(10000000, 99999999);
  $sql=mysql_query("select id from tabela where id=".$novo);
  if(mysql_num_rows($sql))
  {
    $ctrl=false;
  }
}

]

Aí depois que sai do loop a variável "$novo" vai ser única.

Obrigado pela ajuda. Eu tava pensando em algo desse tipo, mas não sabia se funcionaria, nem tinha certeza de como fazer o script.

Não usei o auto incremento pois realmente quero uma nova id para cada seção iniciada. É uma ideia meio dificil de explicar, mas o auto incremento não iria fazer o que eu quero.

Link para o comentário
Compartilhar em outros sites

  • 0

Corrogindo o código, faltou a exclamação dentro do if:

$ctrl=true;

while($ctrl)
{
  $novo=mt_rand(10000000, 99999999);
  $sql=mysql_query("select id from tabela where id=".$novo);
  if(!mysql_num_rows($sql))
  {
    $ctrl=false;
  }
}

Editado por svjets
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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...