Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Estrazione nomi in maniera casuale senza ripetizione
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • D
      domenico2014 User • ultima modifica di

      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.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • P
        pietror User Attivo • ultima modifica di

        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

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • D
          domenico2014 User • ultima modifica di

          si si pietroR....ri-estrae gli stessi numeri...ho visitato il tuo link...purtroppo non va...scusami non voglio farti perdere tempo.

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • P
            pietror User Attivo • ultima modifica di

            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() )

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • D
              domenico2014 User • ultima modifica di

              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.

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • P
                pietror User Attivo • ultima modifica di

                Potresti estrarre i valori da un array di supporto che viene decurtato ogni volta del valore estratto.

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • M
                  miwebdesign Moderatore • ultima modifica di

                  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):

                  [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; // lo stampo o ci faccio quello che voglio
                  

                  }

                  ?>

                  [/PHP]

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

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • giorgiotave
                    giorgiotave Community Manager • ultima modifica di

                    Qualcuno ha una soluzione valida per oggi?

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      shazarak 1 Risposta Ultima Risposta
                    • shazarak
                      shazarak User Attivo • ultima modifica di @giorgiotave

                      @giorgiotave
                      qua estrae 6 numeri per la lotteria
                      https://codereview.stackexchange.com/questions/124223/generate-6-random-numbers-for-lottery-in-php
                      ma il concetto è piu o meno lo stesso fatto pero con un array di stringhe

                      1 Miglior Risposta 1 Ringrazia Cita Rispondi

                        giorgiotave 1 Risposta Ultima Risposta
                      • giorgiotave
                        giorgiotave Community Manager • ultima modifica di @shazarak

                        @shazarak ottimo

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        Caricamento altri post
                        Rispondi
                        • Topic risposta
                        Effettua l'accesso per rispondere
                        • Da Vecchi a Nuovi
                        • Da Nuovi a Vecchi
                        • Più Voti