sarebbe utile nel form di inserimento dati un controllo sulla corretezza della partita iva ( esistono delle piccole routine anche in php se non sbaglio )
Forse intendevi "codice fiscale"
Comunque quel campo è utilizzato appunto x p.iva e CF a seconda delle esigenze.
Credo che non esista nessuna routine che possa controllare la p.iva...
certo che esistono delle routine per il controllo formale della lunghezza della partita iva e del codice di controllo stesso della partita iva ecco un esempio:
pi-php.txt
# Controllo della Partita I.V.A.
# Linguaggio: PHP 3
function ControllaPIVA($pi)
{
if( $pi == '' ) return '';
if( strlen($pi) != 11 )
return "La lunghezza della partita IVA non è\n"
."corretta: la partita IVA dovrebbe essere lunga\n"
."esattamente 11 caratteri.\n";
if( ! ereg("^[0-9]+$", $pi) )
return "La partita IVA contiene dei caratteri non ammessi:\n"
."la partita IVA dovrebbe contenere solo cifre.\n";
$s = 0;
for( $i = 0; $i <= 9; $i += 2 )
$s += ord($pi[$i]) - ord('0');
for( $i = 1; $i <= 9; $i += 2 ){
$c = 2*( ord($pi[$i]) - ord('0') );
if( $c > 9 ) $c = $c - 9;
$s += $c;
}
if( ( 10 - $s%10 )%10 != ord($pi[10]) - ord('0') )
return "La partita IVA non è valida:\n"
."il codice di controllo non corrisponde.";
return '';
}
esiste anche quella per il codice fiscale:cf-php.txt
# Controllo del Codice Fiscale
# Linguaggio: PHP 3
function ControllaCF($cf)
{
if( $cf == '' ) return '';
if( strlen($cf) != 16 )
return "La lunghezza del codice fiscale non è\n"
."corretta: il codice fiscale dovrebbe essere lungo\n"
."esattamente 16 caratteri.";
$cf = strtoupper($cf);
if( ! ereg("^[A-Z0-9]+$", $cf) ){
return "Il codice fiscale contiene dei caratteri non validi:\n"
."i soli caratteri validi sono le lettere e le cifre.";
}
$s = 0;
for( $i = 1; $i <= 13; $i += 2 ){
$c = $cf[$i];
if( '0' <= $c && $c <= '9' )
$s += ord($c) - ord('0');
else
$s += ord($c) - ord('A');
}
for( $i = 0; $i <= 14; $i += 2 ){
$c = $cf[$i];
switch( $c ){
case '0': $s += 1; break;
case '1': $s += 0; break;
case '2': $s += 5; break;
case '3': $s += 7; break;
case '4': $s += 9; break;
case '5': $s += 13; break;
case '6': $s += 15; break;
case '7': $s += 17; break;
case '8': $s += 19; break;
case '9': $s += 21; break;
case 'A': $s += 1; break;
case 'B': $s += 0; break;
case 'C': $s += 5; break;
case 'D': $s += 7; break;
case 'E': $s += 9; break;
case 'F': $s += 13; break;
case 'G': $s += 15; break;
case 'H': $s += 17; break;
case 'I': $s += 19; break;
case 'J': $s += 21; break;
case 'K': $s += 2; break;
case 'L': $s += 4; break;
case 'M': $s += 18; break;
case 'N': $s += 20; break;
case 'O': $s += 11; break;
case 'P': $s += 3; break;
case 'Q': $s += 6; break;
case 'R': $s += 8; break;
case 'S': $s += 12; break;
case 'T': $s += 14; break;
case 'U': $s += 16; break;
case 'V': $s += 10; break;
case 'W': $s += 22; break;
case 'X': $s += 25; break;
case 'Y': $s += 24; break;
case 'Z': $s += 23; break;
}
}
if( chr($s%26 + ord('A')) != $cf[15] )
return "Il codice fiscale non è corretto:\n"
."il codice di controllo non corrisponde.";
return "";
}
pertanto sarebbe più corretto per l'utilizzatore finale
avere due campi su cui inserire in uno la partita iva ed in uno il codice fiscale con i relativi controlli.
quindi se un cliente ha la partita iva compila il campo partita iva altrimenti il campo codice fiscale.