1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

PHP - Numeros aleatorios || Base de dados

Discussão em 'Web Development' iniciada por DarkWolfXP, 13 de Março de 2009. (Respostas: 16; Visualizações: 2423)

  1. DarkWolfXP

    DarkWolfXP Power Member

    Boas, estou a desenvolver uma página que irá desenvolver numeros aleatórios, mas no entanto gostaria que eles não repetissem...
    Existe alguma maneira de não usar uma base de dados para atingir esse objectivo?
    Neste momento estou a utilizar uma base de dados e funciona quase perfeitamente, apenas tem um pequeno GRANDE bug :lol:.
    Eu como não quero encher a base de dados de registos desses números coloquei um "while" para remover todos e quaisquer registos que o visitante produziu naquela página (depois de mostrar os numeros gerado é claro).
    O problema está nesse ciclo, se o visitante quiser um grande quantidade de numeros aleatorios o ciclo irá demorar algum tempo e se por algum motivo o utilizador sair da página/parar o script, os registos não são eliminados e ficam acumulados na base de dados. Existe alguma maneira de prevenir isto? Eu agora estou a olhar para a função Trigger, talvez ajude...
    Desde já obrigado
     
  2. anjo2

    anjo2 Power Member

    Explica melhor o que a pessoa recebe, cada vez recebe apenas um valor? Recebe vários valores ao mesmo tempo?
     
  3. DarkWolfXP

    DarkWolfXP Power Member

    Funciona de modo semelhante ao random.org ...
    O utilizador recebe multiplos numeros aleatórios ou apenas um é como o utilizador o definir. O problema está quando ele pretende obter por exemplo 500000 numeros aleatorios sem repetição, e caso ele pare ou quebre o ciclo do script enquanto estava a gerar os numeros, os registos ficam na base de dados e terei de apagar manualmente.
     
  4. anjo2

    anjo2 Power Member

    Mas se é temporário, não precisas de colocar na base de dados, no máximo numa session, tu inseres os numeros num array, mete o código que tens e secalhar é mais fácil te corrigirem, talvez mais logo coloque uma solução que funcione para qualquer quantidade de numeros.
     
  5. DarkWolfXP

    DarkWolfXP Power Member

    Mas através de uma session irei conseguir fazer numeros aleatorios SEM repetição? Eu tive de recorrer à base de dados porque era a unica maneira que estava a ver para ultrapassar esta questão...O problema é que não vejo como fazer numeros aleatorios sem repetição sem usar a base de dados para verificar a existência de numeros ja feitos, eu procurei já no google sobre esta questão mas não encontrei:mad:

    Cumprimentos
     
  6. mcog_blaster

    mcog_blaster Power Member

    PHP:
    $numeros range($minimo$maximo);
    shuffle($numeros);

    $numero1 $numeros[0];
    $numero2 $numeros[1]; 
    .....
     
  7. DarkWolfXP

    DarkWolfXP Power Member

    Obrigado desde já a todos que responderam :)

    Bem experimentei o código do mcog_blaster, e funciona de facto, não me está a repetir os numeros... funciona perfeitamente adicionei o for each para ter mais numeros :) mais daqui a pouco edito para "limitar" os resultados.
    A função o shuffle atribui a cada array um numero não havendo assim repetição :D Certo?
    Cumprimentos
     
  8. DarkWolfXP

    DarkWolfXP Power Member

    Ja tenho o script a limitar o número de colunas :D, e tentei por os numeros numa tabela ou seja, o utilizador depois escolhia o numero de colunas que pretende visualizar, com os numeros gerados.
    Neste código o numero 5 é o numero de colunas que devia de aparecer...
    Eu tentei algo deste genero mas não está a funcionar como eu queria... não fico com as colunas, agora se eu substituir o if ($a<5) por while($a<5); obtenho as 5 colunas mas com o numeros repetidos como é obvio... Existe alguma maneira de contornar este problema ;)?

    Cumprimentos
     
  9. DarkWolfXP

    DarkWolfXP Power Member

    Já consegui organizar a informação numa tabela o problema era na mudança de linha... quando mudava da ultima coluna para a 1º perdia um número :lol:
    Eu para não criar outro tópico, e como ainda tem haver com números... gostaria de perguntar:

    Se existe alguma maneira de criar TXT's temporários e únicos??
    Neste momento, consigo criar apenas 1 TXT e não é temporário...
    Agradecia que me dessem umas luzes neste âmbito, eu nunca utilizei o PHP para gravar a informação num ficheiro temporário e estou curioso para aprender como fazê-lo :)

    Cumprimentos
     
  10. Huckleberry

    Huckleberry Power Member

    tempnam

    tmpfile
     
  11. DarkWolfXP

    DarkWolfXP Power Member

    Boas, não conhecia essas funções, parecem fazer o que pretendo! :D Obrigado

    EDIT: não consegui utilizar o tmpfile ();, não gerava nenhum ficheiro... no entanto consegui utilizar o tempnam para produzir ficheiros .tmp agora será que em vez de gravar em TMP puderia gravar em TXT?
     
  12. anjo2

    anjo2 Power Member

    Que te interessa a extensão? são todos iguais. Estás a guardar os resultados com que intuito? Para outros utilizarem? Para se voltarem a pedir o mesmo?
     
  13. DarkWolfXP

    DarkWolfXP Power Member

    Eu gostaria que os utilizadores após gerarem os seus números pudessem fazer download dos resultados (desses numeros) num ficheiro TXT...
    Mas possivelmente torna-se redundante =/
     
  14. anjo2

    anjo2 Power Member

    Aconselho-te então a usar sessions que também são temporárias e criares um ficheiro tipo download.php
     
  15. DarkWolfXP

    DarkWolfXP Power Member

    Hm, para variar n tinha pensado nisso :lol:
    Acho que já estou a perceber, ao utilizar as sessions a página download.php irá verificar a sessão do utilizador e indicar o ficheiro que ele irá sacar é isso?

    Cumprimentos
     
  16. anjo2

    anjo2 Power Member

    Não, podes guardar arrays na session e é só enviares para output e mudares o header
    ex.:
    PHP:
    header('Content-Disposition: inline; filename="'.$name.'"');
    header('Content-Type: application/x-download');
    echo 
    $numeros;
    E ele vai fazer download do ficheiro $name que pode ser "ficheiro.txt" com o que está na variável numeros que pode ser algo do género "2;5;7"
    Se for um array, para ficar como disse atrás fazes:
    PHP:
    echo implode(";"$numeros);
     
  17. DarkWolfXP

    DarkWolfXP Power Member

    OMG :wow: nunca tinha visto algo assim lol, incrivel, isso simplifica o processo que queria fazer 100x! Funciona perfeitamente, mais daqui a pouco vou ver o que fazem concretamente cada linha das headers para perceber e aprender :D
    anjo2 muito obrigado... ;)

    Cumprimentos
     

Partilhar esta Página