Abbiamo già visto quanto sia facile creare una form in Oracle APEX. Se non sai di cosa sto parlando dai un occhio a questo tutorial dove spiego come creare una semplice applicazione che permette di vedere ed aggiornare i record di una tabella del database.
In questo articolo, invece, ti spiegherò meglio come creare una form che applica delle validazioni ai campi.
Questa problematica è abbastanza comune. Pensa, ad esempio, ad una classica form di registrazione ad un sito web.

Generalmente queste form applicano alcune validazioni sui dati inseriti, che possono essere le più svariate. Ad esempio:
- verificano che l’email non sia già stata precedentemente registrata
- verificano che il campo email abbia un formato valido
- verificano che alcuni campi, come il nome, il cognome o l’email, vengano inseriti
- verificano che siano state accettate delle condizioni di utilizzo del servizio
- ecc.
In questo tutorial vedremo come creare una form di registrazione ed implementeremo alcune delle validazioni più comuni
Se vuoi vedere il risultato dai un occhio a questa applicazione di demo che ho creato appositamente per questo tutorial e fammi sapere se ti piace nei commenti!

IN QUESTO ARTICOLO
Come creare di una Form di Registrazione in Oracle APEX
Prima di tutto, installa nel tuo database i seguenti oggetti
CREATE SEQUENCE "S_SIGN_UP_FORM_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1
/
CREATE TABLE "S_SIGN_UP_FORM"
( "FIRST_NAME" VARCHAR2(250),
"LAST_NAME" VARCHAR2(250),
"EMAIL" VARCHAR2(250),
"PASSWORD" VARCHAR2(4000),
"COMPANY" VARCHAR2(500),
"VAT_NUMBER" VARCHAR2(250),
"COUNTRY" VARCHAR2(500),
"ID" NUMBER,
CONSTRAINT "S_SIGN_UP_FORM_PK" PRIMARY KEY ("ID")
USING INDEX ENABLE
)
/
CREATE OR REPLACE EDITIONABLE TRIGGER "BI_S_SIGN_UP_FORM"
before insert on "S_SIGN_UP_FORM"
for each row
begin
if :NEW."ID" is null then
select "S_SIGN_UP_FORM_SEQ".nextval into :NEW."ID" from sys.dual;
end if;
end;
/
ALTER TRIGGER "BI_S_SIGN_UP_FORM" ENABLE
/
Crea una nuova applicazione
Se hai già creato una applicazione APEX, puoi tranquillamente saltare al paragrafo successivo.
Per creare una nuova applicazione, esegui i seguenti passaggi.
- Collegati ad Oracle APEX e seleziona App Builder

- Clicca sul bottone Create

- Seleziona New Application

- Dai un nome alla tua applicazione
- Premi Create Application

Aggiungere una form
Creiamo una nuova pagina nella nostra applicazione di registrazione.
- Dall’App Builder clicca sulla tua applicazione
- Clicca su CREATE PAGE

- Seleziona il tipo pagina Blank Page e clicca Next

- Dai un nome alla form e clicca Next

- Per il momento seleziona l’opzione di non associare una voce di menù a questa form e clicca Next

- Clicca Finish

- Aggiungi i seguenti campi alla form. Tieni a mente che X è il numero della pagina su cui stai lavorando che nell’esempio che sto facendo è 8 (es: P8_FIRST_NAME)
Item | Item Type | Value Required |
---|---|---|
PX_FIRST_NAME | Text Field | Yes |
PX_LAST_NAME | Text Field | Yes |
PX_COMPANY | Text Field | |
PX_VAT_NUMBER | Text Field | |
PX_COUNTRY | Text Field | |
PX_EMAIL | Text Field | Yes |
PX_PASSWORD | Password | Yes |
PX_PASSWORD_RULES | Display Text |

- Crea il bottone SIGN_UP

- Configura il bottone SIGN_UP in questo modo:
- Button Name: SIGN_UP
- Label: SIGN UP
- Hot: Yes
- Action: Submit Page

Se non facessimo altro sulla nostra form, lasciandola così come l’abbiamo creata, sicuramente creerà qualche problema agli utenti finali perchè:
- Nel campo email può essere scritta qualsiasi cosa
- Il sistema non avvisa l’utente se l’email con la quale si sta registrando è stata già usata in passato
- Non viene applicato nessun criterio di robustezza sulla password scelta dall’utente
Ovviamente laddove è necessario è utile implementare tutte le opportune regole di validazione necessarie per aiutare gli utenti a compilare i dati nel modo più corretto possibile.
Quindi, cosa fare per migliorare la nostra applicazione in Oracle APEX?
In questo contesto l’obiettivo che ci diamo è quello di creare delle regola di validazione user-friendly, reattive e contestuali: l’utente deve capire velocemente quale campo della nostra form non sta soddisfacendo i requisiti richiesti.
Per fortuna Oracle APEX consente di implementare validazioni di questo.
Vediamo come.
Campi Obbligatori
Tutti i campi della form che sono richiesti vanno impostati come obbligatori tramite la specifica opzione Value Required.
- Seleziona il campo che vuoi rendere obbligatorio

- Nelle proprietà del Page Item abilita l’opzione Value Required

- Ripeti questa operazione per i seguenti campi:
- PX_FIRST_NAME
- PX_LAST_NAME
- PX_EMAIL
- PX_PASSWORD

E-mail Not Unique
Con questo tipo di validazione verificheremo che l’e-mail inserita dall’utente non sia stata già precedentemente registrata.
- Seleziona il campo PX_EMAIL

- Clicca con il pulsante destro del mouse e seleziona l’opzione Create Validation
- Clicca sulla Validation Rule appena creata ed imposta le seguenti proprietà.
- Name: Email Not Unique
- Type: No Rows returned
- SQL Query: la query che viene eseguita dal sistema. Se restituisce almeno una riga allora la validazione non viene superata e viene mostrato a video il messaggio di errore
- Query: select 1 from S_SIGN_UP_FORM where trim(upper(EMAIL))=trim(upper(:P8_EMAIL))
- S_SIGN_UP_FORM è la tabella del database dove vengono salvati i record inseriti tramite questa form di registrazione
select 1 from S_SIGN_UP_FORM where trim(upper(EMAIL))=trim(upper(:P8_EMAIL))
- Error Message: il messaggio che deve essere visualizzato
- Messaggio: Sembra che questo indirizzo e-mail sia già stato registrato!
- Display Location: Inline with Field
- Associated Item: PX_EMAIL
- When Button Pressed: SIGN_UP

Valid Email
Con questo tipo di validazione verificheremo nel campo PX_EMAIL venga inserita una stringa che rappresenti una e-mail.
Per implementare questo tipo di validazione faremo uso della procedura PL/SQL REGEXP_LIKE
- Seleziona il campo PX_EMAIL
- Clicca con il pulsante destro e seleziona l’opzione Create Validation.

- Clicca sulla Validation Rule configura le seguenti proprietà
- Name: Email Valid
- Type: Expression
- Language: PL/SQL
- PL/SQL Expression: inserire una espressione PLSQL che restituisce TRUE nel caso in cui la validazione sia superata, FALSE nel caso in cui la validazione non è superata. Per testare il formato della mail useremo la seguente espressione PL/SQL
REGEXP_LIKE (:P8_EMAIL,'^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$');
- Error Message: il messaggio che deve essere visualizzato
- Messaggio: L’e-mail inserita non è valida!
- Display Location: Inline with Field
- Associated Item: PX_EMAIL
- When Button Pressed: SIGN_UP

Password Complexity
Con questo tipo di validazione verificheremo la password inserita nel campo PX_PASSWORD soddisfi i criteri di complessità previsti dalla nostra applicazione APEX.
Per comodità utilizzeremo la libreria APEX_UTIL che mette a nostra disposizione la funzione STRONG_PASSWORD_VALIDATION la quale applica i criteri di complessità che l’amministratore del WORKSPACE APEX ha definito.
Tuttavia, è possibile implementare criteri di complessità custom più avanzati basati su logiche personalizzate.
- Seleziona il campo PX_PASSWORD

- Aggiungi una nuova Validation Rule
- Clicca sulla Validation Rule e configura le seguenti proprietà
- Name: Password Complexity
- Type: Function Body (returning Error Text)
- Language: PL/SQL
- PL/SQL Function Body Returning Error Text: inserisci il seguente script:
return regexp_replace(apex_util.strong_password_validation(
p_username => :p8_email,
p_password => :p8_password,
p_old_password => null,
p_workspace_name => 'APPIN5MINUTI'
), '<.+?>', ' ');
- Display Location: Inline with Field
- Associated Item: PX_EMAIL
- When Button Pressed: SIGN_UP

- Grazie a questa regola di validazione il sistema verificherà l’applicazione delle regole di complessità della password.

Come salvare il record nel database
Se tutte le Validation Rules vengono superato, il sistema può salvare il record nel database.
Per implementare questa operazione utilizzeremo un’azione dinamica (Dynamic Action).
- Clicca sul bottone SIGN_UP

- Clicca con il pulsante destro e seleziona Create Dynamic Action

- Clicca sull’azione dinamica ed imposta le seguenti proprietà
- Name: CLICK_SIGNUP

- Aggiungi una True Action

- Clicca sull’oggetto Action che hai creato ed imposta le seguenti proprietà
- Action: Execute Server-Side Code
- Language: PL/SQL
- PL/SQL Code: questo script esegue 2 operazioni:
- effettua un’operazione di INSERT nel database
- pulisce i campi della form (non necessario)
begin
insert into s_sign_up_form (first_name, last_name, email,password, company, vat_number, country) values (:p8_first_name, :p8_last_name, :p8_email, :p8_password, :p8_company, :p8_vat_number, :p8_country);
:p8_first_name := null;
:p8_last_name := null;
:p8_company := null;
:p8_vat_number := null;
:p8_country := null;
:p8_email := null;
:p8_password := null;
end;

Conclusioni
Bene, se hai seguito il mio tutorial hai creato la tua personale form di registrazione.
Anche io ho preparato una form di registrazione che puoi vedere collegandoti a questo link dove troverai, tra l’altro, tanti altri esempi di applicazioni sviluppate in Oracle APEX.
Fammi sapere cosa ne pensi e se c’è qualche argomento che ti interessa approfondire fammelo sapere ni commenti!
Un abbraccio
Daniele
Lascia un commento