Back to top

Autore Topic: chronoforms v4 - salva su tabella anche dati già esistenti  (Letto 5210 volte)

Offline thezak

  • Nuovo arrivato
  • *
  • Post: 42
    • Mostra profilo
Ciao a tutti,
io ho creato un form di registrazione utilizzando chronoforms4 su joomla 3.2.
tutto funziona egregiamente, i dati vengono salvati, il link/mail per l'attivazione utente parte, una mail arriva all'amministratore, l'utente viene creato.
ora, se io tento iscrivermi sbagliando appositamente il "ripeti mail" o il campo "verify password" o anche il codice antispam.. la registrazione mi riporta gli errori del caso, ma sulla tabella (nel mio caso: xxxx_chronoforms_data_Form_di_registraz ione) i dati vengono salvati comunque..
supponiamo inoltre che io compilo correttamente il form, ma utilizzo una mail già esistente.. a questo punto non è chrono, bensi è il sistema di joomla ad avvertirmi che l'utente (la mail o il nome utente) esiste già, e non mi lascia procedere... ma anche in questo caso l'utente viene salvato nella tabella di chrono già citata, senza interessarsi che sta creando nuovi campi perfettamente identici, con gli stessi dati.
è quindi possibile inserire una istruzione che non permetta a chronoform di salvare nuovi utenti nelle sue tabelle qualora il form non vada a buon fine (sia che i dati non siano ok per chrono come nel caso della "verfy pass" sbagliato, sia nel caso sia lo sistema joomla ad avvertirmi di utente già esistente) ?

in ogni caso, ottimo componente, manca solo che faccia il caffè per dargli il "lode" oltre al 10.
ok, buon inizio di settimana a tutti,
grazie, ciao.

Offline Dieda12

  • Moderator
  • Appassionato
  • *****
  • Post: 344
  • Sesso: Femmina
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #1 il: 02 Dic 2013, 17:40:09 »
Ciao thezak,

Ci puoi dare qualche dettaglio in più? Hai previsto delle azioni in caso di errore nei campi ?
www.studioinvento.it
MantaJ! per l'archivistica digitale

Offline thezak

  • Nuovo arrivato
  • *
  • Post: 42
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #2 il: 02 Dic 2013, 21:12:59 »
ciao Dieda12,
si, su "custom server side validation" ho inserito questo (che ho preso in qualche altra discussione su questo stesso forum):

<?php
    if ( $form->data['input_text_9'] != $form->data['input_text_11'] ) {
      $form->validation_errors['input_text_9'] = "Le Email non sono uguali";
      $form->validation_errors['input_text_11'] = "Le Email non sono uguali";
      return false;
    }
?>
<?php
global $mainframe;
if ( JRequest::getVar('password') != JRequest::getVar('password_conf') )
return 'Le password inserite non sono uguali, riprova!';
?>


non ho inserito altro.. sul forum di chronoengine ho trovato questa discussione.. purtroppo è vecchiotta e non ho neppure capito se il controllo avviene nel database (ma par proprio di si): http://www.chronoengine.com/forums/viewtopic.php?f=7&t=12958  in ogni caso non avrei nemmeno capito dove va inserito il todos.

in pratica vorrei "dirgli" a chronoform che se joomla rifiuta di scrivere sulle tabelle perchè ci son dati già esistenti, allora deve farlo anche lui..
oppure, forse piu semplicemente, chrono trova che dentro i campi della tabella da lui creata, esiste già quella mail o username e non scrive nulls... (ovviamente non stampando l'errore perchè già lo fa joomla nativamente)
tutto qua (=per modo di dire!)

non ho aggiunto altre cose particolari, salvo una textarea dove scrivo per intero il "trattamento dei dati personali" con un checkbox sottostante obbligatorio (che sarebbe il motivo iniziale percui ho scelto chronoforms) ....

grazie, ciao.

Offline Dieda12

  • Moderator
  • Appassionato
  • *****
  • Post: 344
  • Sesso: Femmina
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #3 il: 03 Dic 2013, 09:36:04 »
Il codice mi sembra ok, anche se non l'ho testato.

Lo hai inserito in "On fail" di "Custom Server Side Validation" in "DB save" ?


www.studioinvento.it
MantaJ! per l'archivistica digitale

Offline thezak

  • Nuovo arrivato
  • *
  • Post: 42
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #4 il: 03 Dic 2013, 10:06:04 »
no, ho inserito "event loop" (per il quale non ho fatto nessuna modifica) in "on fail" che a sua volta è sotto "custom server side validation" (=nella cui configurazione ho inserito il codice) nel campo "On Submit"... 

ho provato a trasinare la funzione "custom server side validation" sotto la voce "db save" ma non si può mi pare.. però ho visto che nella voce "db save", in basso, c'è la voce "parameters fields".. è li forse che in qualche modo dovrei richiamare la funzione che ho messo in "custom server side validation" ? ma non saprei come fare in ogni caso..

però, tornando a quel codice che ho inserito, si limita a dare un errore.. non c'è mica scritto da nessuna parte che quell'errore dev'essere letto dal database e quindi che deve tralasciare la scrittura di nuovi campi sulla tabella.. che dici ? o l'ho proprio messo nel posto sbagliato ?

grazie ciao..

Offline Dieda12

  • Moderator
  • Appassionato
  • *****
  • Post: 344
  • Sesso: Femmina
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #5 il: 03 Dic 2013, 10:31:14 »
Allora, il blocco di codice ce l'hai in "custom server side validation" per cui se ritorna "true" dovrebbe eseguirti l'azione corrispondente al success, mentre se ritorna "false" ti esegue il caso "on fail".
Puoi provare a riportarti nel caso della guida, sostituendo alle input text i campi email.

Poi nel secondo if io farei:

Codice: [Seleziona]
<?php
global $mainframe;
if ( 
JRequest::getVar('password') != JRequest::getVar('password_conf') ) {
echo 
'Le password inserite non sono uguali, riprova!';
return 
false;}
?>


Occhio alle parentesi graffe (ma forse si sono perse nel copia incolla).


www.studioinvento.it
MantaJ! per l'archivistica digitale

Offline thezak

  • Nuovo arrivato
  • *
  • Post: 42
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #6 il: 03 Dic 2013, 13:03:57 »
niente da fare.. il form l'avevo fatto infatti seguendo quella guida che non trovavo piu tralaltro.. ma la guida però non spiega del discorso che le tabelle joomla e chrono devono viaggiare in sincronia o che perlomeno quest'ultimo non crei utenti doppi.

in ogni caso se inserisco il tuo "IF" mi trovo con 2 nuove problematiche:

1-mi appare in testa al form la dicitura "le password inserite non sono uguali, riprova" e subito sotto "Grazie per esserti registrato, riceverai una mail di conferma quanto prima con il link di attivazione."
2-non arriva piu la mail all'utente per l'attivazione.
pertanto ho provato ad inserire codice uguale alle mail (lo scrivo tutto):


<?php
    if ( $form->data['input_text_9'] != $form->data['input_text_11'] ) {
      $form->validation_errors['input_text_9'] = "Le Email non sono uguali";
      $form->validation_errors['input_text_11'] = "Le Email non sono uguali";
      return false;
    }
?>
<?php
    if ( $form->data['input_password_2'] != $form->data['input_password_10'] ) {
      $form->validation_errors['input_password_2'] = "Le password non sono uguali";
      $form->validation_errors['input_password_10'] = "Le password non sono uguali";
      return false;
    }
?>


purtroppo le mie conoscenze php o javascript sono pari a 0 (zero) e non posso rendermi conto se quanto inserito può andar bene.. di sicuro fa il suo lavoro, l'avvertimento c'è in caso di errore, e il link per l'attivazione alla mail utente non parte.. fin qui è ottimo.. ma quel chrono li, mi crea utenti a nastro proprio si disinteressa che ci sia qualche errore.. gli piace proprio fare il suo lavoro fino alla morte eh !

poi ho anche provato a sbagliare l'username inserendo simboli non consentiti "> < / ...." joomla quindi mi vieta di procedere, chrono stessa storia.. diabolico..
tralaltro mi sono accorto che la mail all'admin arriva sempre e comunque anche in caso di errore, certo, è mandata da chrono .. ma lo scrivo, se può essere d'aiuto a capire lo strano caso di benjamin forms...

grazie, ciao.

Offline Dieda12

  • Moderator
  • Appassionato
  • *****
  • Post: 344
  • Sesso: Femmina
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #7 il: 03 Dic 2013, 13:27:24 »
Il codice è corretto, è l'azione di non scrittura che evidentemente non parte.

Siccome bisognerebbe vedere dove inserire il codice di verifica sul db, sarebbe utile poter vedere il form in blocco: potresti fare un backup del form e caricare qui il file .cf4bak che viene generato? Così lo carico su uno spazio test, magari lo metto on-line e vediamo dov'è il problema.


www.studioinvento.it
MantaJ! per l'archivistica digitale

Offline thezak

  • Nuovo arrivato
  • *
  • Post: 42
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #8 il: 03 Dic 2013, 14:01:33 »
ok, se gli dai un'occhiata sarebbe fantastico !
quando dici: "Siccome bisognerebbe vedere dove inserire il codice di verifica sul db.." ecco, io già qui non avrei idea di dove e come fare..
comunque ho messo l'allegato.

grazie mille per la disponibilità, ciao.


[allegato eliminato automaticamente dopo un anno]

Offline Dieda12

  • Moderator
  • Appassionato
  • *****
  • Post: 344
  • Sesso: Femmina
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #9 il: 03 Dic 2013, 17:02:23 »
Ok, in serata do un'occhiata (non ti garantisco nulla) e poi ti dico.
www.studioinvento.it
MantaJ! per l'archivistica digitale

Offline Dieda12

  • Moderator
  • Appassionato
  • *****
  • Post: 344
  • Sesso: Femmina
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #10 il: 04 Dic 2013, 09:51:15 »
Carica anche il backup della tabella xxxx_chronoforms_data_Form_di_registraz ione, in sql, così come la estrai da phpMyAdmin.
Ho guardato il codice e ci sono un paio di test che vorrei fare.

Elena
www.studioinvento.it
MantaJ! per l'archivistica digitale

Offline thezak

  • Nuovo arrivato
  • *
  • Post: 42
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #11 il: 04 Dic 2013, 11:06:18 »
ciao, ho allegato il file..
una piccola nota:
successivamente ad aver collegato il database al form , mi è venuto in mente di aggiungere un ulteriore campo, ma poi la funzione di "create table" seppur andava a buon fine, non mi creava l' "inpunt textarea 15" che vedi in ultima posizione.. immagino avrei dovuto cancellare manualmente la tabella, a quel punto chrono mi avrebbe creato tutti i campi da capo.. in ogni caso, l'ho inserito io manualmente, ma non è rilevante in quanto l'errore di questa discussione lo faceva tale e quale anche prima..

all'interno del db trovi un utente creato, non è registrato nel sito perchè ha le pass e anche le mail sbagliate, ma, come vedi, è salvato lo stesso..

grazie, ciao.


[allegato eliminato automaticamente dopo un anno]

Offline thezak

  • Nuovo arrivato
  • *
  • Post: 42
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #12 il: 04 Dic 2013, 12:55:54 »
ho trovato questo:
http://forum.joomla.it/index.php?topic=197636.5;wap2

io non ho inserito il codice che dice "fri" all'inizio, bensi mi sono semplicemente limitato ad ordinare i campi come scrive alla fine.. nel mio caso, al posto di "auto server side registration", ho  "custom server side registration" (dove ho messo i codici già citati di "alert").. ho appena provato e sembra (dico "sembra" perchè voglio fare meglio i test del caso con il mio pc a casa) che vada tutto ok.. era solo una questione di "ordine".. sono pignolo e non son convinto sia solo questo.. ma se in serata vedo che è tutto ok, poi metto risolto.. se hai tempo e voglia, diede12, puoi confermarmi anche te questo fatto ?

grazie mille, ciao.

Offline thezak

  • Nuovo arrivato
  • *
  • Post: 42
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #13 il: 04 Dic 2013, 16:09:49 »
provato tutte le possibili varianti.. (password sbagliate, nomi con spazi e asterischi, captcha impossibili.....)
ho riscontrato questo unico errore:
introduco la mail errata (intendo il "ripeti la tua mail"), non arriva nulla (com'è giusto) all'amministratore (mail che è gestita da chrono) ma joomla crea l'utente e manda il link di attivazione all'utente, invece chrono non crea (giustamente perchè c'è l'errore) l'utente.
detto questo, direi che chrono funziona perfettamente, non crea l'utente fintanto che il form genera errori, anche joomla ovviamente funzia, però c'è da dire che la registrazione di joomla nativa non prevede il controllo della mail (mail + verifica mail) ma ha solo quella della verifica password... quindi lui procede per la sua strada.. è rimasta questa torta che potrei risolvere semplicemente  non inserendo il "verifica la tua mail".. ma a questo punto sarebbe anche interessante capire cosa non va, come direbbe Spok, comandante in seconda dell'Enterprise...

grazie, ciao.



Offline thezak

  • Nuovo arrivato
  • *
  • Post: 42
    • Mostra profilo
Re:chronoforms v4 - salva su tabella anche dati già esistenti
« Risposta #14 il: 05 Dic 2013, 17:00:41 »
ho rattoppato la verifica della mail inserento nel secondo campo (quello appunto della verifica) questo codice qui che ho trovato nel forum di chrono:

validate['confirm:input_text_9'] dove "inpunt text 9" è il field name del primo campo.
(che va messo appunto nella configurazione del secondo campo esattamente in: field class)

ho dovuto anche cambiare il "field name" in un semplice "email" altrimenti quella validazione in javascript mi scrive appunto: "uguale a input_text_9" (cambiare un field name significa rifare la tabella e ripristinare il plugin di joomla registration con il nuovo nome).. in questo modo comunque va egregiamente, seppur lo vedo un pò come un rattoppo, una cucitura fatta da una vecchietta che ha sbagliato anche la tonalità del colore...

grazie,
ciao e buon week-end a tutti !.

 



Web Design Bolzano Kreatif