Guide e tutorial pratici per joomla e le sue estensioni
Guide e tutorial pratici per joomla e le sue estensioni

Realizziamo un form con un campo per l'inserimento del codice fiscale

Di recente ho avuto bisogno di creare un form che oltre ad avere i soliti campi nome e cognome avesse anche quello per inserire il codice fiscale. Presto mi sono reso conto che senza nessun controllo questo campo era quasi inutile. Avrei potuto validarlo e chiedere il controllo sul numero di caratteri, in fondo il codice fiscale è formato da 16 caratteri......si ma in quale forma? Il codice fiscale non sono solo 16 "digiti" messi li a capocchia del'elefante, ma una serie di numeri e lettere che hanno un significato solo se posizionati in modo giusto, inoltre non sono utilizzabili tutte le lettere e non tutte le lettere e numeri vanno allo stesso posto.

Testiamo il Form per il controllo del codice fiscale creato con chronoforms V5

Chronoform V5, controlliamo il codice fiscale:

In rete gli script in PHP per il controllo del codice fiscale abbondano, il mio problema è che dovevo farlo funzionare dentro un form realizzato con chronoform V5, così mi sono messo all'opera per cercare di integrare la parte "meccanica" dello script con il mio form e mi pare di esserci riuscito.

Vediamo intanto cosa occorre per il nostro form: Una text box ed un pulsante piazzati nella zona "DESIGN", mentre nella zona "SETUP" ho inserito il classico "HTML (Render Form)" in "On load" senza il quale non vedremmo nessun form nel front-end di joomla o di wordpress. Si chronoforms esiste anche per wordpress anche se per me è un controsenso!

 In "On submit" inseriremo invece un "Event Switcher", e al suo interno in "On success" inseriremo un "Display Message", mentre in "On fail" inserire un altro "Display Message" e subito sottto un "Event Loop"

Nell'elemento "Event Switcher" inseriremo del codice PHP che vedremo più avanti. Per i curiosi, questo elemento si comporta così: se il codice che fa il controllo sul codice fiscale viene eseguito correttamente viene attivato ciò che abbiamo messo dentro "On success", mentre se il rileva che il codice fiscale è scritto in una forma errata viene esguito cosa abbiamo messo dentro "On fail".

In pratica se il controllo del codice fiscale passa, visualizzeremo un messaggio scritto dentro l'elemento "Display Message", mentre se il codice fiscale risulta errato, prima riceveremo un messaggio da un ulteriore "Display Message" e poi l'elemento "Event Loop" ci riporterà in condizione iniziale per ripetere l'inserimento.

Chronoform V5, realizziamo il controllo del codice fiscale

 Di seguito il codice PHP da inserire dentro "Event Switcher"

 <?php
if (ereg("^[0-9]{11}$", $form->data['cf'])) {
$form->validation_errors['cf'] = "Il codice fiscale inserito è relativo ad una persona giuridica.";
  return 'fail';
}
elseif
(!ereg("^[a-zA-Z]{6}[0-9]{2}[a-zA-Z]{1}[0-9]{2}[a-zA-Z]{1}[0-9]{3}[a-zA-Z]{1}$",
$form->data['cf'])) {
$form->validation_errors['cf'] = "Errore, il codice fiscale contiene caratteri non validi o non è della lunghezza esatta.";
  return 'fail';
}
else {
  $s=0;
  for ($i = 1; $i <= 13; $i += 2 ){
      $c = $form->data['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 = $form->data['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 'success';
} else {
  return 'fail';
}
}
?>

Inseriamo nel "Display Message" dentro "On success" il codice sottostante, un messaggio abbinato ad una classe di bootstrap che farà apparire il messaggio di conferma con uno sfondo VERDE.

 <div class="alert alert-success" role="alert">
<p>il tuo codice fiscale è corretto, grazie.</p>
</div>

Inseriamo nel "Display Message" dentro "On fail" il codice sottostante, un messaggio abbinato ad una classe di bootstrap che farà apparire il messaggio di conferma con uno sfondo ROSSO.

 <div class="alert alert-danger" role="alert">
<p>Attenzione, il tuo codice fiscale non è; corretto!</p>
</div>

Sempre dentro "On fail" inserite un "Event Loop".

Scarica il backup del form per il controllo del codice fiscale realizzato con chronoforms V5

Questo guida termina qui, se avete qualche dubbio postate nei commenti, cercherò di rispondervi.

Se la guida vi è piaciuta e sopratutto vi è stata di utilità, potete ringraziarmi offrendomi un caffè o semplicemente cliccando su qualche banner.

offrimi un caffè

Commenti   

0 # Angelo Cani 2016-03-22 19:53
Ottima guida, con lo stesso sistema si possono fare tutti i controlli possibili in rete si trovano tutti i codici possibili e immaginabili
0 # giusebos 2016-03-22 20:23
Citazione Angelo Cani:
Ottima guida, con lo stesso sistema si possono fare tutti i controlli possibili in rete si trovano tutti i codici possibili e immaginabili

grazie! Si è vero esiste per esempio il controllo della partita iva
0 # Maria 2016-06-09 11:59
Salve, ho provato a seguire la guida passo passo, ma quando provo la form da "Test Form" il controllo sul codice fiscale mi da sempre errore, anche con codici fiscali corretti! Può aiutarmi?

Grazie!
0 # giusebos 2016-06-09 12:16
Hai già provato a scaricare il form confrontandolo con ciò che hai fatto tu?
0 # Maria 2016-06-09 12:39
Grazie per la rapida risposta.

Ho scaricato il file ma non essendo codice in formato HTML non so dove devo importarlo.
0 # giusebos 2016-06-14 00:22
in chronoforms, come in chronoconnectivity, si hanno due icone/menù, backup e restore: con il primo si salva il form creato con chronoforms e con il secondo si ripristina il form in qualsiasi altro sito o anche nello stesso. Quindi il file che scarichi lo scompatti e lo carichi in chronoforms alla sezione restore.
0 # vito 2018-07-24 16:20
Sarebbe possibile fare lo stesso con Fabrik?
0 # giusebos 2018-07-24 18:25
Citazione vito:
Sarebbe possibile fare lo stesso con Fabrik?

Penso di si, non l'ho mai fatto, ma la logica è la stessa.
0 # vito 2018-07-25 20:37
Solo che se lo voglio inserire nella validazione dell'elemento codice fiscale, mi chiede la condizione ed il codice php.
0 # giusebos 2018-07-25 21:14
Citazione vito:
Solo che se lo voglio inserire nella validazione dell'elemento codice fiscale, mi chiede la condizione ed il codice php.

Vito, la validazione è una cosa, il controllo, ovvero che nel campo non vi sia inserito lo stesso valore è altra cosa.

Per la validazione la strda è quella della guida di questa pagina, mentre per il controllo del duplicato basta il plug-in uniquevalue
0 # vito 2018-07-25 22:52
scusa mi sono espresso male, io ho creato un elemento codice_fiscale, di tipo field, che vorrei venisse verificato automaticamente, non tanto per quanto riguarda i dati quanto per il formato. solo che quando attivo la validazione, mi chiede condizione (è sempre codice php) e validazione. Questo mi ha mandato in confusione.

Per pubblicare un commento devi registrarti