problema con do while

Valshy

Nuovo Utente
14 Mag 2011
23
0
0
Ciao a tutti, vi scrivo per chiedervi aiuto perchè c'è uno script che mi sta facendo impazzire...


Ho una tabella che si chiama codice_utente che è formata da: id ( chiave primaria), utente e codice.
Ho una pagina che dovrebbe generare un codice utente che deve essere diverso da tutti gli altri codici già presenti in tabella.
Ho strutturato lo script in questo modo

$azzeccato=0;

do
{
$numero=(rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9))

dopo aver generato il numero casuale controllo la tabella

select count (id) as trovati from codice_utente where codice = $numero

if ($trovati == 0) {$azzeccato = 1} elseif ($trovati > 0) {$azzeccato = 0}

} while ($azzeccato == 1);

In sostanza il codice genera una stringa di numeri casuali finchè non ne trova una non presente nel database... il problema è che quando tento di eseguire lo script mi dice che si è bloccato xke ci ha impiegato troppo x eseguire lo script..qualcuno mi sa suggerire un modo per farlo funzionare?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se vuoi aumentare il tempo di vita dello script metti la seguente istruzione

set_time_limit(tempo_in_secondi);
es.
set_time_limit(240);

poi guarda se puoi modificare lo script per renderlo piu rapido
 

Valshy

Nuovo Utente
14 Mag 2011
23
0
0
Il problema è che questa tabella è completamente vuota al momento, quindi teoricamente lo script dovrebbe ripetersi una volta sola. Non vorrei che vada in loop per un problema che non riesco a capire...Non è che c0'è un altro modo x fare la stessa cosa?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Io userei una funzione ricorsiva:
PHP:
function getId()
{
    $id = rand(0, 9999);

    $sql = 'SELECT * FROM tabella WHERE id = ' . $id;
    $query = mysql_query($sql) or die(mysql_error());

    if (mysql_num_rows($sql) == 0) {
        return $id;
    }

    return getId();
}
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
oltre a quello che ha postato alex
per provare ad accelerare prova a sostituire la sequenza di rand e modificare il do while in questo modo

PHP:
<?php
//..........
do{
	$numero=(string)rand(100000,999999);
	$numero= substr($numero, 1, 5);// toglie la prima cifra riducendo la stringa a 5 caratteri che possono iniziare anche con 0
	$trovati=mysql_num_rows(mysql_query("SELECT id FROM codice_utente WHERE codice='$numero'"));
	//eventualmente questo
	if($trovati==0){break;}
}while($trovati > 0)
echo $numero; //per vedere se funzia
//...........
?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Problema con ciclo for e while PHP 2
M Problema ciclo while con mysql_fetch_assoc PHP 6
D Problema con while PHP 0
D problema con il ciclo while PHP 2
M Problema con join e ciclo while PHP 0
M Problema con "do while" Classic ASP 10
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
N Problema con position absolute e overflow HTML e CSS 4
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
O problema con query PHP 4
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
M Problema con Try Catch PHP 0
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema con eccessiva nitidezza apertura Camera Raw Photoshop 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
T problema con select dinamica con jquery Javascript 0
S Problema con spazi bianchi HTML e CSS 5
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
Tommy03 Problema con z-index HTML e CSS 3
M Problema inserimento parole con apostrofo nel db PHP 5

Discussioni simili