2013-06-03 10 views
5

Ho fatto qualche ricerca e non riesco a trovare una domanda simile, ho trovato qualche riferimento ad alcuni dei nomi più grandi in "moduli online" come SurveyMonkey ecc. di "risparmio parziale" ma non sono stati in grado di trovare alcuna informazione su come l'ha realizzata.Salvataggio parziale di un modulo (e successivo)

mio scenario: forma è per il personale di back-office, ha detto membro del personale sta completando un modulo per qualcosa, si imbattono in un campo, che hanno bisogno di fare qualche indagine al fine di completare, piuttosto che costringerli per andare a cercarlo adesso (potrebbe essere troppo tardi per iniziare a cercare le informazioni), voglio offrire la possibilità di salvare il modulo nel suo stato attuale e poterlo richiamare più tardi una volta che il consulente ha le informazioni per continuare.

Posso creare il modulo, posso fare il pulsante salva-parti, ed essere in grado di richiamarlo in seguito con PHP/MySQL, nessun problema, ma qual è il modo migliore per affrontare il salvataggio parziale da una prospettiva SQL?

L'utente verrà sempre autenticato con il sistema, quindi salvare le proprie informazioni in modo che possano riprendere in seguito non è un problema.

Ho trovato this question che mi ha inviato a esaminare GarlicJS, ma voglio che il membro dello staff sia in grado di avere più moduli attivi contemporaneamente, in modo che possano iniziare un nuovo modulo senza essere costretti a terminare prima quello corrente.

Alcune riflessioni su come avrei potuto affrontarlo ...

  • ho potuto creare un flag booleano nella tabella che è 0 per parzialmente completo e 1 per una completa, ma questo significa tutti i miei campi deve essere nullable, questo è un difetto di progettazione?
  • Salvare il modulo parzialmente completo in un'altra tabella, quindi rimuoverlo da questo archivio temporaneo una volta che è stato inviato completamente e aggiungerlo alla tabella principale.

Quindi la mia domanda è, qual è l'approccio migliore? Qualcuno ha avuto esperienza nel fare qualcosa di simile?

risposta

3

A mio parere avere una colonna con flag "completato" (vero/falso) è l'idea migliore e più semplice. Non c'è alcun problema ad avere valori nullable dal punto di vista tecnico. Non è peggio in alcun modo.

Se c'è un problema di logica, è possibile - prima di cambiare questo flag - vietare i valori NULL. Questo potrebbe essere fatto da PHP (validazione dei dati del modulo) o da SQL (trigger).

Questo è molto più semplice di avere un altro tavolo, perché è necessario un buon sistema di gestione per questo in modo da assicurarsi che non ci sia nulla di comune in entrambe le tabelle. Avere tutto all'interno di un tavolo ti consente di creare tutti i record, tutti finiti, tutti i documenti non completati senza questa magia JOIN e UNION.

+3

Sono d'accordo (+1), tranne che sarei cauto nel convalidare i vincoli di dati esclusivamente in PHP. Un sacco di app hanno più di un modo di prendere informazioni (o lo saranno in futuro) in modo da poter finire la logica dei vincoli duplicati su una varietà di front-end. Quando è possibile penso che sia meglio mettere tale logica sul server. –

+0

Grazie per il tuo input Voitcus (anche tu @EdGibbs). – naththedeveloper

+0

@EdGibbs Sì, quindi ho detto di usare i trigger MySQL.In questo caso ("personale di back-office") la validazione di moduli da PHP o anche da JavaScript sarebbe probabilmente sufficiente - ma in generale hai completamente ragione. – Voitcus

Problemi correlati