Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    327

    Inserire in un array i record di un database mysql

    Espongo subito le mie necessità.
    Vorrei realizzare uno script il quale mi vada a recuperare una lista di codici da un database e mi faccia il sorteggio di uno solo.

    Pensavo di seguire questa strada, e cioè:

    1. recuperare la lista dei codici dal database
    2. aggiungere in un array tale lista di codici
    3. effettuare il sorteggio dei codici con la funzione "array_rand"

    quindi per esempio nel passo 3 farei:

    Codice PHP:

    // definisco l'array
    $lista = array("AA100""AA101""AA102""AA103""AA104""AA105");
    // estrazione casuale del singolo valore
    $risultato array_rand($lista1);
    // visualizzazione dell'estrazione casuale
    echo "Il numero sorteggiato è: " $lista[$risultato]; 

    Adesso ditemi se secondo voi la strada è corretta o potrei seguirne altre.
    Se così fosse, come faccio ad inserire i dati recuperati dal DB all'interno dell'array?

    Grazie in anticipo.
    Errare è umano, Perseverare è Diabolico.
    sapiente è colui ke sa di non sapere.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,367
    Fai una query che è meglio.

    select campo from tabella order by rand() limit 0,1
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    327
    Grazie badaze per la tua disponibilità.
    In pratica faccio così:

    Codice PHP:
    $result mysql_query("SELECT number FROM lista_codici order by rand() limit 0,1");
    while(
    $row mysql_fetch_array($result))     {
    echo 
    "Il numero sorteggiato è: " $row['number'];

    Sembra funzionare, sembra veloce ed affidabile, non dovrei avere problemi e penso nemmeno con DB con grosse quantità di dati eventualmente.

    Ma se contemporaneamente volessi escludere o meglio eliminare quel record una volta estrapolato, come faccio?
    Visto che non lo salvo in un nessun array come faccio a recuperare lo stesso dato?



    anche se il massimo sarebbe poterlo spostare in un altra tabella!
    Ultima modifica di p73; 19-11-2015 a 00:26
    Errare è umano, Perseverare è Diabolico.
    sapiente è colui ke sa di non sapere.

  4. #4
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    758
    Codice PHP:
    $result mysql_query("SELECT number FROM lista_codici ORDER BY rand() limit 0,1");
    while(
    $row mysql_fetch_array($result))     {
    echo 
    "Il numero sorteggiato è: " $row['number'];
    //cancello il record
    mysql_query("DELETE FROM FROM lista_codici WHERE number=\"$row['number']\"");
    //inserisco il record nella nuova tabella
    mysql_query("INSERT INTO lista_codici_usati (number, [altri campi]) VALUES (\"$row['number']\", [altri campi])");

    eXvision

  5. #5
    Quote Originariamente inviata da p73 Visualizza il messaggio
    Ma se contemporaneamente volessi escludere o meglio eliminare quel record una volta estrapolato, come faccio?
    Visto che non lo salvo in un nessun array come faccio a recuperare lo stesso dato?



    anche se il massimo sarebbe poterlo spostare in un altra tabella!

    La risposta dipende dal perchè vuoi fare questa cosa. Se è semplicemente per non estrarre più volte lo stesso numero ti suggerisco di aggiungere un semplice campo booleano alla tabella che valorizzerai con true o false a seconda che il record sia stato già selezionato in precedenza o no ed aggiungi alla select una clausola where sul valore del campo booleano.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    327
    Grazie brodik il tuo codice mi è prezioso......
    ...tuttavia devo riconoscere che il suggerimento di satifal mi stuzzica, in quanto penso che non andrei ad impegnare molto il DB.

    In effetti la mia necessità è che questo numero non venga estratto più di una sola volta, e nel frattempo deve rimanere disponibile per essere interrogato successivamente per sapere se questo sia stato estratto o meno.

    fermo restando che nella tabella ho altri dati da estrarre come ad esempio l'ora dell'estrazione ecc...
    Errare è umano, Perseverare è Diabolico.
    sapiente è colui ke sa di non sapere.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.