Evitate di trattare i numeri come tringhe... provala e dimmi (ho fatto pochi test...):
Codice PHP:
function check_id ($id)
{
$numero_img_dir = 4000; // "circa" dati i delete
$end = ((floor($id/($numero_img_dir+1))+1)*$numero_img_dir);
$start = ($end - $numero_img_dir) != 0 ? ($end - $numero_img_dir +1) : 1;
return $start.'_'.$end;
}
PS: se vieni sul mio sito guarda l'ultimo articolo che ho pubblicato... ironia della sorte...
PS2: prova questa... quella di prima mi sà che è errata...
Codice PHP:
function check_id ($id)
{
$numero_img_dir = 4000; // "circa" dati i delete
$end = ((floor(($id-1)/$numero_img_dir))*$numero_img_dir)+$numero_img_dir;
$start = ($end - $numero_img_dir +1);
return $start.'_'.$end;
}
PS 3: mi ha fatto talmente intestardire che ho fatto pure la funzione test... sembra che va ok la seconda che ti ho postato:
Codice PHP:
function check_id ($id)
{
$numero_img_dir = 4000; // "circa" dati i delete
$end = ((floor(($id-1)/$numero_img_dir))*$numero_img_dir)+$numero_img_dir;
$start = ($end - $numero_img_dir +1);
return $start.'_'.$end;
}
for($i=1; $i<=30; $i++) // facciamo 30 test
{
$random = rand(0, 50000);
echo check_id($random).'/'.$random.'<br />';
$testing = explode('_', check_id($random));
list($start, $end) = $testing;
if(($random<$start) OR ($random>$end))
{
exit('errore al numero: '.$random);
}
}