+ Rispondi alla Discussione
Risultati da 1 a 9 di 9

Estrazione nomi in maniera casuale senza ripetizione

Ultimo Messaggio di MiWebDesign il:
  1. #1
    User
    Data Registrazione
    Jul 2014
    Località
    Napoli
    Messaggi
    61

    Estrazione nomi in maniera casuale senza ripetizione

    Buongiorno a tutti del forum, mi occorrerebbe un codice che estragga nomi a caso da una lista, e l'estrazione dei nomi deve essere univoca...per me andrebbe bene anche da database, file di testo, ecc....tipo come se fosse una tombola, però nomi e non numeri. Grazie in anticipo.

  2. #2
    Moderatore L'avatar di PietroR
    Data Registrazione
    Feb 2013
    Località
    Brescia
    Messaggi
    494
    Aggiungi PietroR su Linkedin
    Ciao
    potresti creare una matrice n x 2
    dando una corrispondenza univoca nome e numero
    Es:
    0 Marco
    1 Antonio
    2 Giovanni
    ....
    Estrarre i numeri con un rand ed in base al numero estratto leggere il nome

  3. #3
    User
    Data Registrazione
    Jul 2014
    Località
    Napoli
    Messaggi
    61
    Ciao PietroR....grazie per la dritta, ho creato una tabella mysql con id e nome....ho utilizzato questa query: $query = "SELECT * FROM tbfc ORDER BY RAND() LIMIT 0,1";
    l'estrazione avviene in maniera casuale come desidero io però mi ripete numeri gia' usciti in precedenza...qualche suggerimento? grazie.

  4. #4
    Moderatore L'avatar di PietroR
    Data Registrazione
    Feb 2013
    Località
    Brescia
    Messaggi
    494
    Aggiungi PietroR su Linkedin
    Nel senso che tutte le volte ti ri-estrae gli stessi numeri?
    potresti in alternativa fare una select secca in cui gli passi l'id estratto a caso da un array in php con l'array_rand()

    http://php.net/manual/en/function.array-rand.php

  5. #5
    User
    Data Registrazione
    Jul 2014
    Località
    Napoli
    Messaggi
    61
    si si pietroR....ri-estrae gli stessi numeri...ho visitato il tuo link...purtroppo non va...scusami non voglio farti perdere tempo.

  6. #6
    Moderatore L'avatar di PietroR
    Data Registrazione
    Feb 2013
    Località
    Brescia
    Messaggi
    494
    Aggiungi PietroR su Linkedin
    Domenico2014 figurati!
    cosa non funziona? l'utilizzo della funzione o la pagina?
    Quella ho provato a cliccarla ora e funziona (comunque è la guida alla funzione array_rand() )

  7. #7
    User
    Data Registrazione
    Jul 2014
    Località
    Napoli
    Messaggi
    61
    Ciao PietroR grazie per le risposte...il link da te postato funziona bene, solo che l'estrazione avviene anche per i nomi gia' estratti...invece a me occorre estrazioni univoche, senza ripetizioni.

  8. #8
    Moderatore L'avatar di PietroR
    Data Registrazione
    Feb 2013
    Località
    Brescia
    Messaggi
    494
    Aggiungi PietroR su Linkedin
    Potresti estrarre i valori da un array di supporto che viene decurtato ogni volta del valore estratto.

  9. #9
    Moderatore L'avatar di MiWebDesign
    Data Registrazione
    May 2015
    Località
    Palermo
    Messaggi
    198
    Segui MiWebDesign su Twitter Aggiungi MiWebDesign su Google+ Aggiungi MiWebDesign su Facebook Aggiungi MiWebDesign su Linkedin
    Se ho capito bene:

    Text-Mode:
    - Crei due array, uno conterrà i nomi esistenti e l'altro i nomi scelti (senza ripetizioni)
    - Cicli i nomi dal DB, controlli preventivamente se è già tra gli esistenti o meno ed includi il valore nell'array adatto
    - Conti i valori dentro l'array filtrato e per ogni valore ne stampi uno in posizione casuale

    Code-Mode (commentato):

    Codice PHP:
    <?php
    $mysqli 
    = new mysqli("host","nomeutente","password","database"//ti connetti al DB tramite mysqli

    $exi = []; // creo array nomi esistenti

    $notexi = []; // creo array nomi scelti

    $query $mysqli->query("SELECT nome from nomi"); // seleziono tutti i nomi

    while($row $query->fetch_row()){ // ciclo tutti i nomi

        
    foreach($exi as $nome){ // per ogni nome esistente

            
    if($row[1]!=$nome){ // se non è già uscito 

                    
    array_push($notexi,$row[1]); //lo metto negli scelti

            
    }else{ // se è già uscito

                    
    array_push($exi,$row[1]); //lo metto negli esistenti

            
    }

        }

    }

    $tot count($notexi); // conto i  nomi puliti e filtrati

    for($i=0;$i<=$tot;$i++){ // per ogni nome fino alla fine della condizione

        
    $r rand(0,$tot); //ne piglio uno a caso tra il primo e l'ultimo

        
    echo $notexi[$r]; // lo stampo o ci faccio quello che voglio

    }

    ?>
    Scusa ma non ho il tempo di testarlo, fammi sapere se và

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.