FAQ - domande frequenti

Domanda

Nel mio sito, i visitatori possono registrarsi compilando un modulo, e sin qui tutto bene.

I visitatori registrati possono aggiornare la propria iscrizione, tornando sul modulo, trovandolo precompilato e aggiustando come meglio credono, e sin qui tutto bene.

I visitatori possono spuntare le aree di loro interesse attraverso dei checkbox HTML, le cosiddette "caselle di spunta": Sar-At le genera automaticamente sulla base di una lista che io mantengo comodamente dentro al sistema: calcio, hockey, automobilismo e via dicendo. E sin qui tutto bene.

Però se il visitatore che sta aggiornando le sue preferenze per qualche motivo vuole togliere la spunta a tutte le aree di interesse, non ci riesce. Anche se in Sar-At, dentro alla linguetta "struttura" io ho detto che è lecito che "aree di interesse" sia lasciato in bianco (o, come dice Sar-At "nullo, zero o vuoto"). Ma perché? Cosa devo fare?

Risposta

Nello HTML, quando un form (modulo) contiene caselle di spunta, il browser del visitatore manda al server un elenco delle sole caselle di spunta selezionate.

Quando un tuo visitatore spunta "calcio", il Sar-At (attraverso il programma showForm.php) vede arrivare una casella spuntata, quindi può segnarsi nel database le preferenze del tuo visitatore registrato. Ma se il visitatore toglie la spunta a tutto, allora a Sar-At non arriva niente. E siccome showForm ti pernette di fare moduli aggiornabili in cui non tutti i dati del visitatore sono aggiornabili da lui, il nostro programma non ha modo di sapere che in questo tuo specifico caso le aree di interesse erano aggiornabili e vanno aggiornate con il valore "insieme vuoto".

La soluzione è semplice. Concettualmente bisogna dire a Sar-At "guarda che in questo modulo ti mando le aree di interesse, quindi se non ne arriva nessuna comunque salva come insieme vuoto").

Per farlo, inserisci questa singola linea invisibile nel tuo HTML:

<input type='hidden' name='sarat_update_checkbox_aree_interesse' value='1' />

Prevedibilmente, ciascun webdesigner che legge questa nota tecnica dovra inserire il nome del suo campo di tipo checkbox al posto di "aree_interesse".