Pagina 1 di 2

Validare un campo

Inviato: 17 apr 2020, 10:55
da nico_gae
Ciao a tutti,
In un form, dopo aver digitato quanto richiesto in uno dei campi, è possibile validare subito quel campo prima di passare ad un altro campo?
Avrei anche una seconda questione; uso chiaramente la versione 9 di SC. Poichè ho una applicazione scritta con la versione 8, è possibile installare anche la versione 8 sulla stessa macchina in modo da poter convertire questo progetto alla 9 o rovino l'ambiente?
Grazie e cordiali saluti.

Re: Validare un campo

Inviato: 20 apr 2020, 16:43
da Fabio
Per il punto 1)
è un controllo javascript, si potrebbero fare nell'apposita sezione ma il codice va scritto a mano.
Punto 2)
Si può fare poichè l'ambiente viene ricostruito in una cartella differente ( /v8/ ). Pi però meglio rimuoverla.
Per sicurezza fai sempre un backup prima di installare la 8.

Re: Validare un campo

Inviato: 22 apr 2020, 13:58
da nico_gae
Grazie Fabio.

Per il punto 2) ho risolto.

Per quanto riguarda il punto 1) non credo di aver capito bene. In quale sezione dovrei scrivere il codice JS?

Cerco di spiegarmi meglio.
  • Poniamo che io abbia un campo Partita IVA e lo voglia validare subito dopo l'inserimento o modifica.
  • Diciamo che mi sono creato, ad esempio, una libreria interna contenente varie funzioni che validano o manipolano la partita iva.
  • Come faccio a richiamare l'opportuna funzione di validazione quando passo ad un altro campo?
Spero che tu possa darmi una dritta.

Grazie ancora e cordiali saluti

Re: Validare un campo

Inviato: 23 apr 2020, 11:11
da Vincenzo
Ciao,

SC ha già molti filtri e validazioni per un campo, puoi far inserire solo alcuni caratteri e controllare la lunghezza, altrimenti, devi scrivere del codice js da chiamare sul evento onblur del campo, e fare i controlli custom con codice js.
Se invece la validazione deve essere fatta con codice PHP, devi mettere un evento ajax sul campo sempre sul onblur e lì mettere il codice di verifica, da lì poi chiamerai la funzione js che "sistemerà" eventuali colori ad indicare che il campo non va bene.

Re: Validare un campo

Inviato: 25 apr 2020, 11:22
da rino
una delle caratteristiche molto interessanti di SC è la ottima gestione ajax questo ti permette di usare PHP in modo avanzato anche per effettuare controlli online riducendo il traffico .
in altri termini quando la pagina è sul pc il contatto con il serve viene chiuso e se devi effettuare validazioni che hanno necessità di dati sul serve sei nei guai a meno di usare tecniche di dialogo tra pc e server.
ajax serve a questo, ovviamente può limitarsi anche a solo controlli locali .

SC mette a disposizione tutto quanto occorra per il dialogo e questo permette di rimanere in ambito PHP il che è spesso la scelta migliore .
ovviamente sono filosofie di sviluppo affrontare in questa sede

a livello pc esistono gli eventi ,ovvero una sorta di allarmi che scattano quando accade qualcosa come per esempio l uscita da un campo o la variazione del suo contenuto. SC gestisce questi eventi permettendo di collegare ad essi delle funzioni scritte in PHP che saranno eseguita sul server e il cui risultato sarà aggiornato sul PC.
SC ha anche moltissime macro che permettono di agire via PHP sulle caratteristiche grafiche della videata del PC by passando javascript .
Usa gli eventi e divertiti

Re: Validare un campo

Inviato: 27 apr 2020, 10:20
da nico_gae
Ciao e grazie,

sto provando, ma ho qualche difficoltà. Mi spiego meglio; poniamo che nel mio form io abbia questi campi:

Codice: Seleziona tutto

Nome ({fld_firstname})
Cognome ({fld_lastname})
Nome completo ({fld_namenurse})
Il campo Nome completo non è editabile, ma è dato dalla concatenazione dei primi due:
{fld_fullname}={fld_lastname}." ".{fld_firstname};

Voglio fare in modo che quando compilo per un nuovo inserimento o aggiornamento i campi Nome e Cognome, venga inizializzato e visualizzato il campo Fullname.

Ho provato a creare un evento Ajax, ma quì incominciano i problemi.
  1. Non capisco che tipo di evento scegliere fra quelli proposti (onBlur, onChange etc.)
  2. Non so quale è il campo fra i tre da selezionare per creare l'evento.
  3. Di conseguenza, qual'è il campo da passare come parametro? Da come è scritto nelle istruzioni sembra che se ne possa passare più di uno, ma in realtà mi è consentito selezionarne solo uno.
Mi riferisco ovviamente a questo screenshot
Immagine

Chiaramente non ha molto senso il campo Fullname, ma è utile per capire come funzionano questi eventi.

Spero che tu possa chiarirmi queste perplessità.

Ciao e grazie

Re: Validare un campo

Inviato: 27 apr 2020, 18:07
da Vincenzo
Devi "ricalcolare" il nome completo alla variazione di nome e/o cognome, quindi sul campo fld_firstname, metterai un evento ajax su onblur o onchange, il primo è quando il campo perde il focus il secondo ad ogni cambiamento quindi ad ogni pressione di tasto, vedi tu quel preferisci, alla funzione vanno passati i campi fld_firstname e fld_lastname ed infine la funzione avrà una sola riga, ovvero

Codice: Seleziona tutto

{fld_namenurse} = {fld_firstname} . "  " . {fld_lastname};
Ad ogni variazione del nome il nome completo cambierà di conseguenza, metti lo stesso evento ajax sul campo fld_latname ed anche al variare del cognome avrai il nome completo aggiornato.

Re: Validare un campo

Inviato: 28 apr 2020, 10:38
da nico_gae
Adesso mi è più chiaro e dalle prove fatte vedo che funziona.

Ho voluto, però, provare con un campo diverso ed ho dei problemi.

Nella gestione di una anagrafica ho tre campi, rispettivamente CAP Città e provincia.

Vorrei valorizzare i campi CAP e provincia in base alla città e per fare questo ho creato un evento onBlur su città che è di tipo autocomplete; i dati sono presi da una tabella con cap, provincia e comune.

Quando lascio il focus mi viene ritornato un errore di accesso al database. Per spiegarmi questi sono gli screenshot prima e dopo

Immagine

Immagine

La seconda immagine viene generata tramite il codice inserito nell'evento e modificato per fare qualche controllo.

Codice: Seleziona tutto

$city={fld_birth_city};
echo($city);

sc_lookup(ds,"SELECT fld_zipcode, fld_prov FROM tb_zipcode WHERE fld_city_name = {fld_birth_city}");

if ({ds} === false)
{
echo "Errore di Accesso = ". {my_data_erro} ;
}
elseif (empty({ds}))
{
echo ("La Select non ha ritornato dati per ".$city);
}
else
{
{fld_birth_zipcode} = {ds[0][0]};
{fld_birth_prov} = {ds[0][1]};}
Non riesco a capire dove sbaglio e spero in un aiuto.

Grazie e ciao

Re: Validare un campo

Inviato: 28 apr 2020, 14:12
da Vincenzo
se ci fosse stato l'echo dell'errore corretto

Codice: Seleziona tutto

echo "Errore di Accesso = ". {ds_erro} ;
probabilmente avresti visto l'errore di sintassi SQL, se cerchi per nome città l'sql dovrà essere

Codice: Seleziona tutto

sc_lookup(ds,"SELECT fld_zipcode, fld_prov FROM tb_zipcode WHERE fld_city_name = '{fld_birth_city}'");
altrimenti diventa

SELECT fld_zipcode, fld_prov FROM tb_zipcode WHERE fld_city_name = Bassabo Besciano

che non è sql corretto.

Di solito non accade se si usano gli ID perchè essendo numeri non vanno fra virgolette, ma se usi le stringhe nelle condizioni where devi racchiuderle fra apici.

Re: Validare un campo

Inviato: 28 apr 2020, 15:43
da nico_gae
Perfetto, così funziona.
Un'ultima cosa e poi penso di aver quadrato il cerchio.
Ho provato ad usare anche delle funzioni per validare un campo. In caso di errore, posso fare in modo di non perdere il focus? Eventualmente in che modo?
Ciao e grazie ancora. I tuoi suggerimenti sono stati preziosi.