Back to top

Autore Topic: Creare form con ChronoForms  (Letto 109442 volte)

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #40 il: 12 Giu 2009, 20:51:25 »
Ottimo articolo e chiaro ma avrei una domanda: sarebbe possibile con chronoforms creare un form che generi, una volta compilato online, un file PDF?
Così com'è progettato il componente no.
Ma modificarlo è sempre possibile :D
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline cerion86

  • Nuovo arrivato
  • *
  • Post: 22
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #41 il: 16 Lug 2009, 15:08:06 »
Ciao Bigham, complimenti per la guida!
ho solo un paio di dubbi...
tu dici che puoi editare un form tornando in ambiente wizard da un tasto "wizard edit", ma non riesco a capire dove sia... ???

Altro dubbio, come faccio a fare in modo che l'utente (registrato) che compila il form sia per così dire autenticato? nel senso che deve essere il sistema a dirmi chi è, senza dover far compilare all'utente i campi nome e cognome... grazie!

Offline Miki_Bo

  • Nuovo arrivato
  • *
  • Post: 42
  • Sesso: Femmina
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #42 il: 16 Lug 2009, 15:55:51 »
ChronoForm sta diventando il mio incubo (come si è visto nei miei ultimi post in questo forum).

Dunque.. premetto che la guida di Bigham mi ha praticamente salvato durante il primo approccio al componente, ora però mi si è presentato un problema inaspettato.
Mi hanno chiesto di spezzare il form creato in due parti, operazione che sono riuscita a fare seguendo le info presenti sia in questo forum, sia in quello "madre".
Ho impostato i due forum "figli", il forum madre a cui ho attivato il plugin multipage, dopo di che ho impostato il plug con i vari passaggi.
Ho provato il tutto... sembra funzionare.. i passaggi vengono visualizzati ma... alla fine.. i dati non vengono salvati nel DBase.

Ho provato varie opzioni tra cui attivare il collegamento al DB nei singoli forum figli e richiamare i campi all'interno del forum madre tramite

<?php
$MyForm =& CFChronoForm::getInstance();
$data = $MyForm->tablerow['jos_chronoforms_form1'];
?>
<input type='hidden' name='cf_id' value='<?php echo $data->cf_id; ?>' />


opportunamente modificato in modo che si addattasse sia al forum figlio n2. sia a quello madre.. (praticamente nel forum madre ho provato a richiamare il cf_id degli altri due).
Il problema purtroppo persiste... tra l'altro l'unica "guida" che ho trovato in proposito è questa http://www.chronoengine.com/forums/viewtopic.php?f=9&t=14744 che sto provando a seguire con scarsissimi risultati.. qualche idea???
Come sempre grazie a coloro che risponderanno
Miki

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #43 il: 16 Lug 2009, 20:06:54 »
@cerion86

Per editare un form già creato basta selezionare la casella quadrata alla sinistra del nome e poi cliccare sul pulsante Wizard edit che si trova in alto a destra (in mezzo agli altri pulsanti)

Citazione
come faccio a fare in modo che l'utente (registrato) che compila il form sia per così dire autenticato? nel senso che deve essere il sistema a dirmi chi è, senza dover far compilare all'utente i campi nome e cognome.

Questa è un pò complicata perchè bisogna modificare manualmente il codice del form assegnando il valore del nome registrato nel profilo utente (sempre che ci siano) ai rispettivi campi del form.
Chiaramente il form (o la voce di menù che visualizza il form) dovrà essere accessibile solo agli utenti registrati.

Adesso per modificare il codice del form bisogna cliccare sul nome del form in Form Management.
Selezionare quindi la scheda Form Code e cliccare sul link [+/-] accanto a Form HTML. Quello che compare è il codice html del form


Nel codice del form bisognerebbe aggiungere, all'inizio il seguente codice php:

Codice: [Seleziona]
<?php
//Crea l'oggetto $users che rappresenta gli utenti registrati
$user =& JFactory::getUser(); 
//Conserva nella variabile $nome_utente il contenuto 
//del campo name della tabella jos_users dell'utente loggato
$nome_utente $user->name;
?>


A questo punto la variabile $nome_utente conterrà il nominativo dell'utente loggato. Nella tabella jos_users non esiste un campo cognome e quindi l'unico riferimenti è il campo name.


Cerca il tag html che rappresenta la casella di testo del nominativo, un codice tipo questo:
Codice: [Seleziona]
    <label class="cf_label">Nome</label>
    <input class="cf_inputbox required" maxlength="150" size="30" id="text_1" name="t_nome" type="text" />

il tag <input> rappresente un oggetto textbox del form dentro il quale l'utente dovrebbe inserire il suo nome.

Modifichiamolo così:

Codice: [Seleziona]
<input class="cf_inputbox required" maxlength="150" size="30" id="text_1" name="t_nome" type="text" value= <? echo $nome_utente; ?> />

Il codice php
Codice: [Seleziona]
value= <? echo $nome_utente; ?>
E' quello che inserirà il nome dell'utente loggato nella casella del form.


Acc. che fatica!  ;D ;D ;D
« Ultima modifica: 16 Lug 2009, 20:09:13 da bigham »
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #44 il: 16 Lug 2009, 20:11:45 »
Mi permetto di aggiungere questi due riferimenti:

Classe Juser del framework di Joomla


Metodo getUser
della classe JFactory

A buon intenditor... ;)
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #45 il: 16 Lug 2009, 20:21:01 »
@Miki_BO

Citazione
ChronoForm sta diventando il mio incubo
Non sai quanto lo sia diventato per me!  ;D ;D ;D

Citazione
la guida di Bigham mi ha praticamente salvato durante il primo approccio al componente
Diciamo che l'intento era quello ;)
Poi il mio incubo si è trasformato in un form che fa il caffè e rolla sigarette ;D ;D

Siccome non ho mai provato a realizzare un form come quello che descrivi credo che perderò un pò di tempo per darti la risposta.

Ma la prima cosa che mi viene in mente e che deriva da un errore che molto spesso si fa nel creare la tabella collegata al form è: sei sicura che le tabelle relative ai form figli contengano i campi corrispondenti a ciascun oggetto del form stesso?

Quando si crea la tabella bisogna selezionare gli elementi del form che diverranno i campi della tabella e che conterranno i dati. Spesso ci si dimentica di farlo e la tabella contiene solo i primi 5 campi (quelli che genera per default il componente).

Vado, studio e... (forse) torno!  ;D ;D
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline Miki_Bo

  • Nuovo arrivato
  • *
  • Post: 42
  • Sesso: Femmina
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #46 il: 16 Lug 2009, 21:13:19 »
Citazione
Poi il mio incubo si è trasformato in un form che fa il caffè e rolla sigarette

Io non aspiro a tanto, praticamente lavoro con la macchina del caffè sul tavolo...  ::)

Allora...

Citazione
sei sicura che le tabelle relative ai form figli contengano i campi corrispondenti a ciascun oggetto del form stesso?

Si, ho controllato sia tramite il Create table di CF; sia tramite phpMyAdmin ed entrambe le tabelle hanno le rispettive "colonne" create e attivate.. mi è sorto il dubbio che fossero settate in modalità di sola lettura ma - riprovando il procedimento - ho verificato e comprendono anche la scrittura.

Quello che mi rende perlplessa è che funziona tutto tranne il salvataggio nel DB, anche il debug è corretto...

Se può esserti utile allego gli screen dei singoli form

FORM_FIGLIO1



FORM_FIGLIO2



FORM_MADRE



Quest'ultimo non ha HTML nel form code, mentre nel Javascript ha questo:

<?php
$MyForm =& CFChronoForm::getInstance();
$data = $MyForm->tablerow['jos_chronoforms_form_autore'];
?>
<input type='hidden' name='cf_id' value='<?php echo $data->cf_id; ?>' />

<?php
$MyForm =& CFChronoForm::getInstance();
$data = $MyForm->tablerow['jos_chronoforms_form_abstract'];
?>
<input type='hidden' name='cf_id' value='<?php echo $data->cf_id; ?>' />


in modo da richiamare i cf_id degli altri due..
Ho anche controllato che - nei due form figli - fosse presente l'AutoGenereted Code e che i fild_name corrispondessero...
Sempre se può essere utile.. solo dopo il completamento dei due passaggi (quindi nel form madre) viene spedita la mail di conferma dell'inserimento

Citazione
Vado, studio e... (forse) torno!
Bigham.. ehmm.. non farmi preoccupare ^_^ torna..
« Ultima modifica: 16 Lug 2009, 21:17:13 da Miki_Bo »

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #47 il: 16 Lug 2009, 22:03:44 »
Ordunque. :D

Anzitutto chiariamo, per chi legge, che stiamo parlando della versione 3.1 RC5.3, altrimenti qualcuno (uno a caso, io) diventa matto nel cercare il plugin Multi Page (ero rimasto un pò indietro con le versioni del componente)  ;D ;D

Leggendo l'articolo del forum di Chronoengine mi sono imbattuto in questo passaggio:

Citazione
To save data you will need to create a database table that includes columns for all of the fields on all of the steps. You need to do this by hand, ChronoForms will not automate it. If one child has more fields than the others you can use this as the basis - select the check-box by the form in the Forms Manager, click the Create Table icon and use the Add Another Field button to add the remaining fields.

Enable the DB Connection in the mother form only.

Che tradotto e riassunto significa che si deve creare manualmente una sola tabella con tutti i campi corrispondendi a tutti gli oggetti di tutti i form figli.
Questa tabella dovrà essere collegata solo al form padre (non ho capito! Io sono maschio e quindi dico form padre ;D)

Quindi quello che hai fatto non va bene.

E questo mi sembra importante. Quindi prova a modificare il tutto creando un'unica tabella con i cinque campi di default (cf_id, uid,..., cf_user_id) più tutti i campi dei die form figli.

Questa unica tabella la colleghi al form padre.

Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline Miki_Bo

  • Nuovo arrivato
  • *
  • Post: 42
  • Sesso: Femmina
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #48 il: 17 Lug 2009, 14:22:12 »
Citazione
Anzitutto chiariamo, per chi legge, che stiamo parlando della versione 3.1 RC5.3, altrimenti qualcuno (uno a caso, io) diventa matto nel cercare il plugin Multi Page (ero rimasto un pò indietro con le versioni del componente)

opssss ho dato per scontato il riferimento all'ultima versione di CF... sorry  :P

Citazione
Che tradotto e riassunto significa che si deve creare manualmente una sola tabella con tutti i campi corrispondendi a tutti gli oggetti di tutti i form figli.
Questa tabella dovrà essere collegata solo al form padre (non ho capito! Io sono maschio e quindi dico form padre ;D)

Infatti avevo letto anche io sta cosa, quindi il form_padre l'ho creato direttamente da phpMyAdmin.. (mentre lo screen è preso da dentro a CF) copiando uno degli altri form ed aggiungendo i campi mancanti...
A questo punto però il dubbio che mi sorge è che a CF non vada bene partire da un form "copiato" ma che si debba fare tutto passo passo, inserendo i vari campi ex novo... faccio un paio di prove e vedo che succede.. per ora grazie mille  :P

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #49 il: 17 Lug 2009, 22:19:28 »
Citazione
il form_padre l'ho creato direttamente da phpMyAdmin
Intendi che hai creato la tabella jos_choroforms_formPadre direttamente in phpMyAdmin?

L'operazione di per sè andrebbe anche bene, poi basta collegare la tabella la form padre. Il difetto sta nel fatto che puoi sbagliare nome e tipo dei primi 5 campi che CF genera per default. A meno che tu non abbia creato la tabella prima da CF e poi l'hai completata manualmente in phpMyAdmin. Anche questo va bene.

L'importante, credo, è che solo il form padre venga collegato alla tabella e non i figli.

Facci sapere :D
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline Miki_Bo

  • Nuovo arrivato
  • *
  • Post: 42
  • Sesso: Femmina
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #50 il: 20 Lug 2009, 11:54:37 »
Rieccomi... allora.. ho rifatto l'intero procedimento usando due metodi:

- nel primo ho creato il form padre partendo da CF, cioè usando il wizard ed inserendo un solo campo del primo form figlio, dopo di che, da phpMyAdmin, ho inserito i rimanenti campi. Ho collegato il form padre alla tabella creata ed ho settato la multi page. Quando l'ho provato non andava  :'(
- nel secondo invece la tabella del form padre l'ho fatta direttamente da phpMyAdmin, "copiando" i nomi dei campi e i settaggi di tutti i campi. Anche qui quando l'ho testata non funzionava...

Poi mi è venuta l'illuminazione...
Durante tutte le prove, che sto facendo in locale per ovvi motivi, l'opzione EMAIL THE RESULT era impostata sul no, e di conseguenza - nella parte relativa alla connessione con il DB - il SAVING DATA/EMAIL ORDER era impostato su BEFORE EMAIL.

Ho provato a cambiare l'impostazione di EMAIL THE RESULT mettendola su YES e lasciando invariato tutto il resto... bhe.. ora funziona tutto.. salva i dati etc etc.. per cui - per ora - problema risolto.
Se può servire posso riassumere i vari passaggi in modo che siano più chiari.

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #51 il: 20 Lug 2009, 17:44:19 »
Brava Miki_Bo!  ;D ;D ;D

Credo che i passaggi siano abbastanza chiari, i due metodi usati sono equivalenti quindi non cambiano la musica.

Eventualmente, se ti va, puoi aggiungere un post con i passaggi descritti per punti successivi (1, 2, ... n)

Grazie per il contributo ;D
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline Miki_Bo

  • Nuovo arrivato
  • *
  • Post: 42
  • Sesso: Femmina
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #52 il: 20 Lug 2009, 18:47:51 »
Citazione
Eventualmente, se ti va, puoi aggiungere un post con i passaggi descritti per punti successivi (1, 2, ... n)

proviamo, nella speranza di essere chiara...  :P

Per prima cosa la versione di Chronoform usata è la 3.1 RC5.3.

1) Da chronoform create i form_figli, potete usare il wizard per impostare i vari campi. Dovrete creare un form_figlio per ogni step che poi setterete nel plugin multipage.

Es: Creare due step per la compilazione di un form:
form_figlio1: nome, cognome, mail
form_figlio2: via, città, provincia, cap, tel


Una volta creati ricordatevi di pubblicarli ma NON collegateli al DB

2) A questo punto dovrete creare il form_padre.
Questo form vi servirà per alcuni motivi: innanzitutto è qui che dovrete settare il plugin per il multipage, inoltre sarà a questo form (e solo a questo) che andrete a collegare la tabella del DB per il salvataggio dei dati inseriti. Sempre qui potrete creare la pagina di conferma, settare l'email riassuntiva etc.
Attenzione: CF non permette la creazione di questo form dal wizard, quindi dovrete farlo a mano, potete scegliere tra due metodi:

a) Potete duplicare uno dei form figli (vi consiglio quello che ha più campi), successivamente – a mano da phpMyAdmin – andate ad aggiungere i campi mancanti, dopo di che salverete assegnando il nome del form_padre.

Es: Duplicando il form_figlio2 otterrete una tabella con questi campi:
cf_id , uid , recordtime , ipaddress , cf_user_id, via, città, provincia, cap, tel
a questo punto dovrete inserire i campi nome, cognome, mail.

b) Potete creare direttamente a mano l'intera tabella usando direttamente phpMyAdmin, in questo caso i campi da inserire saranno quelli dei 2 form figli + i campi standard di CF.

Es:
form_padre: cf_id , uid , recordtime , ipaddress , cf_user_id, nome, cognome, mail, via, città, provincia, cap, tel.

In entrambi i procedimenti l'importante è che il nome dei campi, la tipologia (text, varchar etc), sia uguale a quella che avete impostato nei form_figli.

3) A questo punto – dal FORM MANAGER di CF – cliccate su nuovo ed andate ad inserire i vari dati:

a) In FORM NAME: il nome del vostro form_padre
b) In EMAIL THE RESULT: impostate il valore su YES
c) Sotto a SETUP EMAIL  settate l'invio della mail di conferma dell'inserimento
d) Sotto a FORM CODE assicuratevi che alla voce FORM HTML non vi sia scritto nulla
e) Sotto a DB CONNECTION → ENABLE DATA STORAGE: attivate YES e selezionate dalla lista il nome del vostro form_padre (in questo modo attiverete il salvataggio dei dati sul DB)
f) Sotto a PLUGIN attivate il multi page dopo di che salvate e tornate sul form manager di CF.

5) Pubblicate il form_padre.

6) Nell'elenco dei form presenti spuntate il form_padre, poi cliccate su MULTIPAGE (si trova a sinistra nella colonna dei plugin presenti)

7) Nella pagina che si aprirà dovrete settare i parametri del multi page:
a) In NUMBER OF STEP selezionate il numero di passaggi (nell'esempio fatto prima il numero sarà 2)
b) In STEP FORM NAMES inserite i nomi dei due forum figli nell'ordine in cui volete che appaiano (quindi nel nostro esempio form_figlio1, form_figlio2) separandoli con la "," e senza spazi

Se volete potete attivare le due rimanenti opzioni, una per il debug (che all'inizio è utile) e l'altra per vedere step by step l'inserimento dei dati. Salvate il tutto e provate.

Se per caso non sono stata chiara, ditemi i punti che provo a correggerli  :P
« Ultima modifica: 20 Lug 2009, 22:11:24 da Miki_Bo »

Offline wizard86

  • Nuovo arrivato
  • *
  • Post: 43
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #53 il: 23 Lug 2009, 16:57:31 »
Salve a tutti, ho appena creato questo form qui

http://www.gimisrl.it/albanobpp/index.php?option=com_chronocontact&chronoformname=prova3

Tutti i campi del form sono obbligatori ma come faccio a fargli fare un controllo prima dell'invio?

Offline Miki_Bo

  • Nuovo arrivato
  • *
  • Post: 42
  • Sesso: Femmina
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #54 il: 23 Lug 2009, 17:50:13 »
Puoi farlo selezionando il form e poi wizard edit, dopo di che selezioni uno per uno i campi e - sulla sinistra nelle loro proprietà - attivi la voci required

Offline wizard86

  • Nuovo arrivato
  • *
  • Post: 43
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #55 il: 23 Lug 2009, 21:09:02 »
Puoi farlo selezionando il form e poi wizard edit, dopo di che selezioni uno per uno i campi e - sulla sinistra nelle loro proprietà - attivi la voci required

Nella versione non licenziata non si può fare, adesso ho aggiunto dei controlli in javascript ma cmq non saranno mai efficaci quanto dei controlli in mysql

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #56 il: 24 Lug 2009, 19:42:28 »
Ciao wizard86.
I controlli che fa (o faceva) il componente erano comunque client side e utilizzavano javascript.

Esiste sempre la possibilità di utilizzare la validazione server side dall'apposito tab di ogni form. Però bisogna scrivere il codice.

Edit:
Non è vero che nella versione "non licenziata" non si può fare. Ho appena provato e funziona.
A cosa ti riferisci?
« Ultima modifica: 24 Lug 2009, 19:50:15 da bigham »
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline wizard86

  • Nuovo arrivato
  • *
  • Post: 43
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #57 il: 25 Lug 2009, 13:04:38 »
Ciao wizard86.
I controlli che fa (o faceva) il componente erano comunque client side e utilizzavano javascript.

Esiste sempre la possibilità di utilizzare la validazione server side dall'apposito tab di ogni form. Però bisogna scrivere il codice.

Edit:
Non è vero che nella versione "non licenziata" non si può fare. Ho appena provato e funziona.
A cosa ti riferisci?

Nll'ultima versione (quella che uso io) non c'è proprio il tasto che fa vedere html dal wizard, o uso il drag e drop per creare il form o dal menager ne creo 1 nuovo a mano (come ho fatto)

Per quanto riguarda la validazione server side di cui parli, come faccio? cioè creo una pagina in php a parte, dove lo metto il codice php?

(hai visto il form che ho creato? come ti sembra per essere la prima votla con chrono form? >.>)

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #58 il: 26 Lug 2009, 23:12:26 »
Ho provato a rendere obbligatorio un campo nell'ultima versioe di CF e funziona. Nel wizard basta semplicemente cliccare sul campo e nelle proprietà selezionare la casella required.

Se il form è già creato seleziona la casella che si trova a sinistra del nome del form e poi clicca sul pulsante Wizard Edit (in alto a destra)

Per la validazione del form basta cliccare sul nome del form e selzionare il tab Validate. Lì potrai scrivere il codice php che ti serve.
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Creare form con ChronoForms
« Risposta #59 il: 26 Lug 2009, 23:16:29 »
Dimenticavo. ;D
Il form che hai riealizzato va bene. Solo due piccole accortezze:
- rendere veramente obbligatorio l'inserimento dei dati
- inserire il captch per evitare lo spam.
- inserire un testo per confermare e ringraziare per l'invio dei dati del form.

Attualmente il form viene inviato anche se non inserisci dati.
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

 



Web Design Bolzano Kreatif