- Home
- Categorie
- Coding e Sistemistica
- PHP
- Estrazione nomi in maniera casuale senza ripetizione
-
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
-
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.
-
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()
-
si si pietroR....ri-estrae gli stessi numeri...ho visitato il tuo link...purtroppo non va...scusami non voglio farti perdere tempo.
-
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() )
-
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.
-
Potresti estrarre i valori da un array di supporto che viene decurtato ogni volta del valore estratto.
-
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à
-
Qualcuno ha una soluzione valida per oggi?
1 Risposta -
@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 Risposta -
@shazarak ottimo