Sviluppo

Risolvo

Creo

In questo tutorial spiegherò come ho risolto un problema che ho avuto con chronoform. Prima di risolvere il problema da solo ho cercato, senza successo, in rete e sui forum una possibile soluzione.
Ritengo dunque utile condividere con altri utenti Joomla! questa mia soluzione. Nella spiegazione del tutorial assumerò che il lettore sia già in grado di creare un form di registrazione con Chronoform, sia altrettanto in grado di creare una tabella database collegata al form con chronoform, e, magari, sia anche in grado di richiamare i dati immagazzinati tramite il form costruito con chronoform grazie all’utilizzo di Chronoconnectivity.
Nel caso non foste in possesso di tali competenze consiglio di visitare https://www.icagenda.it/ dove sono disponibili accurate e dettagliate guide su questi potenti componenti Joomla!

Il problema

Tempo fa mi sono imbattutto nel seguente problema: dopo aver creato e pubblicato un form di registrazione con Chronoform, ho creato una tabella nel database e, successivamente, collegata al form mi sono accorto con grande rimorso di aver dimenticato di inserire un campo per me fondamentale.
Ora aggiungere un campo in un form con Chronoform non è certo cosa difficile, purtroppo però non è stato per me abbastanza agevole far si che i dati inseriti dall’utente nel nuovo campo aggiunto venissero registrati nel database. Quando si inserisce un nuovo campo nel form di chronoform, dopo il salvataggio delle modifiche, il nuovo campo compare immediatamente nell’interfaccia grafica di frontend, ma i dati inseriti in quel nuovo campo non vengono registrati nel database per il semplice fatto che bisogna aggiungere una colonna nella tabella collegata al form.

La mia soluzione

Dopo aver aggiunto il campo mancante nel form nel backend di chronoform, cioè nel tab “Designer”, ho salvato il nuovo modulo e creato una nuova tabella nel database, sempre dall’interno del componente Chronoform.

Da adesso in poi ovviamente i dati inseriti nel form verranno regolarmente registrati nel database perché la tabella creata è completa di tutti i campi creati nel form. Ma come recuperare i dati che nel frattempo gli utenti hanno registrato sul nostro sito? Sarebbe di certo più comodo tenerli tutti insieme in una unica tabella. Allora per ottenere questo risultato ho esportato la vecchia tabella con i vecchi dati e l’ho reimportata nella nuova, mancante dei dati ma completa di tutte le colonne necessarie e far sì che gli utenti possano inserire in maniera completa i dati di cui necessitiamo.
Prima di procedere all’esportazione e successiva importazione è però necessario creare una nuova colonna nella tabella che dovrà poi essere importata, altrimenti, nel caso in cui la tabella d’importazione abbia colonne diverse rispetto alla tabella esportata in precedenza, l’importazione restituirà inequivacabilmente errore.

Da phpmyadmin ho aggiunto una colonna nella tabella da esportare, attribuendo lo stesso nome che attribuirò alla colonna nella futura nuova tabella.
Ho esportato la tabella
Ho importato la vecchia tabella nella nuova tabella.
A questo punto il gioco è fatto. Il form è riallineato con una tabella contenente tutti i campi di cui necessita avendo recuperato i vecchi dati inseriti dagli utenti fino a quel momento.

ESEMPIO CONCRETO

Dopo la spiegazione teorica vediamo ora la realizzazione di un semplice esempio pratico. Poniamo il caso di aver creato un semplice form contatti

Semplice form contatti

E di aver collegato questo semplice form ad una tabella del database creata tramite chronoform

Connessione Form a tabella database

Poniamo ora il caso che dopo un po’ di tempo dalla pubblicazione (ore, giorni, mesi o anni), dopo che un certo numero di utenti abbia già iniziato a registrate dei dati all’interno del form, ci rendiamo conto di voler aggiungere un campo. Poniamo, ad esempio, di voler aggiungere il campo “N° di telefono”.

Ora aggiungere un campo al form non è certo operazione complicata con chronoform. Basrterà, infatti, entrare nel form da backend, andare nel tab “Designer” e trascinare nel “Layout” del form il campo desiderato.

Chronoform designer tab

Dopo aver aggiunto il campo e salvato il nuovo form

Nuovo campo "telefono" aggiunto da backend

Il campo aggiunto apparirà nel form da frontend

Nuovo campo "telefono" aggiunto vista frontend

Tuttavia quando un utente inserirà dei dati all’interno del campo “telefono” questi non verrannò registrati dal database. Al momento della creazione della tabella del database chronoform, infatti, ha creato una tabella dove il campo “telefono” non era stato previsto, dunque i dati inseriti nel campo “telefono” dall’utente cadranno inevitabilmente nel vuoto.

La soluzione più semplice può risultare, dunque, la creazione di una nuova tabella del database tramite la classica procedura che si utilizza in chronoform. Basterà, cioè, selezionare il nostro form aggiornato

Selezione form

e poi cliccare sul pulsante in alto “Create a new table”

Creare nuova tabella database

Poi bisognerà assegnare alla nuova tabella un nome nuovo e diverso rispetto a quella creata in precedenza (io consiglio di togliere il suffisso della tabella suggerito da chronoform per aver dei nomi di tabelle del database più uniformi, consiglio di togliere cioè la parte evidenziata in blu nella figura in basso). Il sistema creerà una nuova tabella del database completa con il nuovo campo creato.

Nuovo campo inserito nella nuova tabella database

Sarà importante ricordarsi di collegare il form alla nuova tabella creata per evitare di continuare a far cadere nel vuoto i dati che gli utenti inseriranno nel campo “telefono”

Collegamento form a nuova tabella database creata

Fate un test per vedere se tutto funziona, se la tabella è stata creata correttamente e se, inserendo i dati nel campo telefono questi vengono effettivamente registrati nel database

Dati campo "telefono" registrati correttamente

Ora il problema che si pone è come recuperare i dati precedentemente inseriti dai vecchi utenti e tenerli in una unica tabella. La soluzione che ho adottato è stata quella di esportare i dati della vecchia tabella e reimportarli nella nuova. Per far questo però sarà necessario affrontare un ultimo passaggio. Bisognerà aggiungere una colonna nella vecchia tabella, posizionata nello stesso ordine in cui è collocata nella nuova. Dopodichè sarà possibile esportarla ed importarla correttamente nella nuova.

Non sono certo un esperto di database e mysql, comunuque è cosa risaputa nell’ambiente degli sviluppatori di siti tramite CMS come Joomla! e Wordpress che tabelle di database possono essere importate solo se le colonne del file da importare corrispondono con quelle della tabella che sta per assorbirla.

La procedurà può sembrare complicata ma seguendo passo passo quanto seguirà risulterà un’operazione piuttosto agevole. Per prima cosa sarà necessario selezionare la vecchia tabella da phpmyadmin

Selezione vecchia tabella da phpmyadmin

Selezionare in alto il tab “Struttura”

Selezionare tab struttura da tabella phpmyadmin

Scendere in basso e selezionare dopo quale colonna si vuole inserire la nuova. Se, come abbiamo visto, nella nuova tabella abbiamo inserito il campo “telefono” dopo “email” e prima di “Messaggio”, allora la nuova colonna andrà creata proprio dopo la colonna “email”

Selezione posizione colonna

Dopo aver selezionato l’ordine scegliere il nome del campo e cliccare su esegui. Dopodichè scegliere il nome del nuovo campo, selezionare “VARCHART” dal menù a tendina, scegliere il numero massimo di caratteri consentito e cliccare su salva.

Selezione nome colonna, numero caratteri consentiti

Ora avremmo la vecchia tabella allineata con la nuova.

Colonna aggiunta

A questo punto sarà possibile effettuare l’esportazione della tabella in formato CSV e la successiva reimportazione. In questo modo avremmo ottenuto il nostro risultato, creato un nuovo form in grado di registrare i dati inseriti dall'utente nel nuovo campo e, allo stesso tempo, recuperato i vecchi dati registrati.

Stefano DAlessandro
Author: Stefano DAlessandroWebsite: www.stefanodalessandro.itEmail: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
Alcune informazioni su di me

Sono nato il 26-12-1982 e mi sono laureato in Comunicazione e pubblicità per pubbliche amministrazioni e non profit nella Facoltà di Scienze politiche, Sociologia e Comunicazione dell'Ateneo Sapienza di Roma. Ho maturato esperienza negli uffici stampa di Associazioni Non Profit (Officina Culturale Arci La Freccia di Aprilia dal febbraio all'agosto del 2009), enti pubblici (ENIT Agenzia Nazionale del Turismo da marzo a ottobre 2010) e nell'agenzia di comunicazione Edi-press. Ho scritto di sport, cronaca e politica locale per il quindicinale il Caffè. Da sempre appassionato di nuove tecnologie e web ho deciso dopo l'esperienza del giornalismo di orientare la mia carriera professionale su questo nuovo fronte per passione e per arricchire le mie competenze professionali in maniera trasversale e poliedrica. Attualmente lavoro come web master/content manager di Avalon Instruments. Realizzo e sviluppo siti web ed effettuo lavori di grafica.


Aggiungi commento


Codice di sicurezza
Aggiorna

Condividi sui social

Se ti è piaciuto questo articolo condividilo con i tuoi contatti social

Sostienimi

Ti è piaciuto questo articolo? Ti è stato utile?

Sostienimi con una donazione di 2 €

Toogle Right

Questo sito utilizza cookie, anche di terze parti, necessari al funzionamento ed utili alle finalità illustrate nella cookie policy.