phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.
Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.
Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.
Grazie ancora,
Carlo - Amministratore di phpBB Italia
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.
Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.
Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.
Grazie ancora,
Carlo - Amministratore di phpBB Italia
nomi random senza ripetizione
-
- Utente
- Messaggi: 14
- Iscritto il: 16/07/2015, 16:08
- Sesso: Maschio
- Server: Windows
- Database: MySQL
Re: nomi random senza ripetizione
ciao, l'estrazione deve avvenire ad ogni click del mouse. il risultato deve comparire nella stessa pagina web. per me andrebbe benissimo una lista casuale che parte dall'inizio fino alla fine..diciamo che dovrebbe essere tipo una tombola virtuale ma con nomi invece di numeri. spero di essere stato chiaro. Grazie di tutti.
- Micogian
- Leader Programmatori
- Messaggi: 3704
- Iscritto il: 07/01/2010, 8:51
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.4.36
- Database: MySQL 5.1.70-log
- Località: Udine
- Contatta:
Re: nomi random senza ripetizione
Per prima cosa va creata una tabella di nome "lista_nomi" nel database.
La tabella contiene 3 campi: id, nome, sel.
Il campo id deve essere AUTOINCREMENT, il campo sel è impostato a 0, viene sostituito con 1 se il record viene estratto.
Per creare la tabella apri il database con phpmyadmin, selezioni SQL e inserisci questo codice:
La tabella va aggiornata con i nomi, il campo id è automatico e il campo sel è impostato a 0.
Il file php che estrae il nome a caso è questo:
La procedura provvede a leggere la tabella "lista_nomi", crea una lista de nomi non estratti e la mette in ordine random.
Al primo record estratto viene sostituito il valore 0 del campo sel con 1 e la volta successiva non rientra nella lista.
Quando le estrazioni sono arrivate all'ultimo record i valori del campo "sel" vengono ripristinati a 0 e la sequenza ricomincia.
Questo è il codice php necessario per l'estrazione, poi va realizzata la pagina che deve contenere i risultati.
Una DEMO del risultato ottenuto (su una lista di 10 record) si può vedere qui
aggiornare la pagina per estrarre il record successivo.
La tabella contiene 3 campi: id, nome, sel.
Il campo id deve essere AUTOINCREMENT, il campo sel è impostato a 0, viene sostituito con 1 se il record viene estratto.
Per creare la tabella apri il database con phpmyadmin, selezioni SQL e inserisci questo codice:
Codice: Seleziona tutto
CREATE TABLE IF NOT EXISTS `lista_nomi` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome` text COLLATE utf8_unicode_ci NOT NULL,
`sel` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
Il file php che estrae il nome a caso è questo:
Codice: Seleziona tutto
<?php
// CONNESSIONE AL DATABASE
global $db_name, $db_host, $db_user, $db_pwd ;
$db_name = 'nome_database' ;
$db_host = 'nome_dominio' ;
$db_user = 'user' ;
$db_pwd = 'password' ;
if (!@mysql_connect($db_host,$db_user,$db_pwd)) exit('<p>Impossibile connettersi al server del database b5 in questo momento.</p>');
if (!@mysql_select_db($db_name)) exit('<p>Impossibile connettersi al database in questo momento.</p>');
// Seleziona la lista dei records della tabella lista_nomi
$sql = "SELECT *
FROM lista_nomi
ORDER BY id";
$i = 1;
$lista = '';
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result))
{
$id[$i] = $row['id'];
$nome[$i] = $row['nome'];
$sel[$i] = $row['sel'];
//crea una lista dei nomi non estratti
if ($sel[$i] == '0' )
{
if ($lista == '')
{
$lista = $id[$i] ;
}else {
$lista = $lista . "," . $id[$i] ;
}
}
++$i ;
}
echo "Lista dei non estratti: " . $lista . "<br />";
$lista1 = explode(",", $lista);
//$numbers = range(1, 10);
shuffle($lista1);
echo "id e nome estratto: " . $lista1[0] . " - " . $nome[$lista1[0]] . "<br />";
// Aggiorna il campo sel del nome selezionato
$sql = "UPDATE lista_nomi
SET sel = '1'
WHERE id = $lista1[0]" ;
if (!@mysql_query($sql))
{
echo '<p>errore nella procedura di aggiornamento: ' . mysql_error() . '</p>' ;
}
if ($lista1[1] == '')
{
// Ripristina i valori iniziali della tabella lista_nomi
$sql1 = "UPDATE lista_nomi
SET sel = 0" ;
if (!@mysql_query($sql1))
{
echo '<p>errore nella procedura di azzeramento: ' . mysql_error() . '</p>' ;
}
}
?>
Al primo record estratto viene sostituito il valore 0 del campo sel con 1 e la volta successiva non rientra nella lista.
Quando le estrazioni sono arrivate all'ultimo record i valori del campo "sel" vengono ripristinati a 0 e la sequenza ricomincia.
Questo è il codice php necessario per l'estrazione, poi va realizzata la pagina che deve contenere i risultati.
Una DEMO del risultato ottenuto (su una lista di 10 record) si può vedere qui
aggiornare la pagina per estrarre il record successivo.
- brunino
- Moderatore
- Messaggi: 2819
- Iscritto il: 12/01/2013, 16:35
- Sesso: Maschio
- Versione: 3.1.2
- Server: UNIX/Linux
- PHP: php 5.3
- Database: mysql
- Località: Toscana, Firenze
- Contatta:
Re: R: nomi random senza ripetizione
Potevi usare semplicemente nella query "ORDER BY RAND()"...
Inviato dal mio GT-S5360 con Tapatalk 2
Inviato dal mio GT-S5360 con Tapatalk 2
E' sempre gradito un grazie
Creo estensioni per phpBB 3.1 su misura: contattami via MP.
Mie Estensioni: Top Ten Topics | Ban List | Topic List
Visita il mio forum di test e sviluppo stili e estensioni phpBB 3.1
Creo estensioni per phpBB 3.1 su misura: contattami via MP.
Mie Estensioni: Top Ten Topics | Ban List | Topic List
Visita il mio forum di test e sviluppo stili e estensioni phpBB 3.1
- Micogian
- Leader Programmatori
- Messaggi: 3704
- Iscritto il: 07/01/2010, 8:51
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.4.36
- Database: MySQL 5.1.70-log
- Località: Udine
- Contatta:
Re: R: nomi random senza ripetizione
In PHP le strade per ottenere un risultato sono spesso diverse.brunino ha scritto:Potevi usare semplicemente nella query "ORDER BY RAND()"...
Inviato dal mio GT-S5360 con Tapatalk 2
Ho preferito cosi perchè ho bisogno di tenere una lista progressiva di tutti i records presenti in tabella, mentre i non estratti aggiornano la lista random, questo nel caso di debba creare un maschera che contenga i numeri da 1 a 100 che vengono sostituiti dal nome estratto.
In pratica si puo inserire in una tabella di 10 righe per 10 colonne i valori da 1 a 100 che vengono sostituiti da $nome[1]....$nome[100] per i records estratti (quelli che hanno il valore 1 nel campo "sel").
Si ottiene una tabella che evidenzia tutti i nomi estratti in precedenza mentre l'utimo estratto può essere di colore diverso.
-
- Utente
- Messaggi: 14
- Iscritto il: 16/07/2015, 16:08
- Sesso: Maschio
- Server: Windows
- Database: MySQL
Re: nomi random senza ripetizione
Ciao brunino grazie per la risposta, mi è stata utilissima
Chi c’è in linea
Visitano il forum: Google [Bot] e 130 ospiti