Back to top

Autore Topic: Chronoform crea due record per ogni inserimento  (Letto 3471 volte)

Offline oracledba

  • Esploratore
  • **
  • Post: 59
    • Mostra profilo
Chronoform crea due record per ogni inserimento
« il: 27 Dic 2013, 23:59:11 »
Lo so, sembrerà assurdo ma non trovo altra solozione che rivolgermi al forum.
Ho seguito la guida di vales ed ho creato il form denominato provaemail.
Funziona tutto, anche l'invio email.
L'unica cosa che non mi spiego è per quale motivo crei due record per ogni inserimento nell'arco di 1 secondo.
Un record contiene i dati passati dal form. L'altro contiene solo l'id dell'utente, l'IP della connessione l'orario di creazione, uid e basta.
I campi del form non sono riempiti quindi non posso dire che si tratti di un record doppio ma solo di un doppio inserimento per ogni volta che eseguo il form.
Dal debug non riesco a capire come mai questo accada.
Ho anche cancellato il modulo e reinstallato.
Cancellata la tabella deòl DB e ricreata ma nulla da fare.
Ho installato questa versione Chronoforms_V4.0.1_J2.5
A qualcun altro è capitato lo stesso problema?

cf_id     cf_uid     cf_created     cf_modified     cf_created_by     cf_modified_by     cf_ipaddress     cf_user_id     prova     input_submit_3
1     a34dcaddbf3d048ee550046dda2e6b42     2013-12-27 23:50:28     0000-00-00 00:00:00     73     0     195.250.210.32     73     car     Submit
2     e879bc6b3229932189dc27f187773199     2013-12-27 23:50:29     0000-00-00 00:00:00     73     0     195.250.210.32
« Ultima modifica: 28 Dic 2013, 00:01:55 da oracledba »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Chronoform crea due record per ogni inserimento
« Risposta #1 il: 28 Dic 2013, 08:26:59 »
due inserimenti di cui uno senza dati suona molto come due tentativi di inserimento, non un problema di CF.
verifica, come suggerito nell'altro post, di non aver inserito due 'db save' o di non aver messo una query di insert da qualche parte.

ciao

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline oracledba

  • Esploratore
  • **
  • Post: 59
    • Mostra profilo
Re:Chronoform crea due record per ogni inserimento
« Risposta #2 il: 28 Dic 2013, 11:14:27 »
In ON LOAD ho solo
Show html (0)

In ON SUBMIT ho
Custom Server Side Validation (1) ed in On Fail Event Loop (2)
DB Save (3)

Veramente non riesco a spiegarlo.
Ho provato ad inserire Debugger ma non vedo nulla di strano.
Esiste un modo per vedere riga per riga cosa viene eseguito?
Nel frattempo provo a fare una nuova installazione su un altro sito. Devo capire se si può trattare di un bug.
Grazie

Offline oracledba

  • Esploratore
  • **
  • Post: 59
    • Mostra profilo
Re:Chronoform crea due record per ogni inserimento
« Risposta #3 il: 28 Dic 2013, 12:44:18 »
Ho provato l'installazione su un altro sito e qui la stessa form non mi crea record doppi.
La versione di questa installazione di Joomla è la 2.5.9
Sul sito dove non funziona invece è la 2.5.17
E' possibile che sia un problema di versione?
Ho anche provato a rimuovere completamente l'installazione di chronoform cercando in ogni cartella eventuali file.
Reinstallato tutto continua a crearmi due record.
Esiste un debug che mi fa vedere esattamente quanto esegue la insert nel DB?

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Chronoform crea due record per ogni inserimento
« Risposta #4 il: 28 Dic 2013, 15:03:06 »
più che file dovevi cercare se vi erano le tabelle nel db.

per un debug come dici tu devi usare un debugger step by step, ad esempio eclipse con modulo php e una libreria di debug sul server. il semplice debug ti indica le query eseguite ma non ti dà lo stack trace.

quick & dirty: magari potresti far stampare lo stack trace dalla classe di gestione mysql nel momento in cui trovi il nome della tua tabella nella query.

comunque non so che pensare  :(
dato l'ordine dei records mi viene in mente un redirect del controller di joomla: prova usare un tool che loggi le richieste http del browser per vedere se c'è un redirect, in particola modo un 303.

se mi viene in mente ti faccio sapere.

ps: guardato sul forum di chronoform?

ciao

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline assospiz

  • Esploratore
  • **
  • Post: 138
    • Mostra profilo
Re:Chronoform crea due record per ogni inserimento
« Risposta #5 il: 29 Dic 2013, 10:34:05 »
Prova a vedere il Target Event dentro le impostazioni OnFail dell'Event Loop.
« Ultima modifica: 29 Dic 2013, 10:35:55 da assospiz »
SPIZ Associazione di Promozione Sociale
www.spiz.it

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Chronoform crea due record per ogni inserimento
« Risposta #6 il: 03 Gen 2014, 09:15:14 »
In ON LOAD ho solo
Show html (0)

In ON SUBMIT ho
Custom Server Side Validation (1) ed in On Fail Event Loop (2)
DB Save (3)


Puoi inviare un immagine della finestra delle action per controllare come sono organizzate ?
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline oracledba

  • Esploratore
  • **
  • Post: 59
    • Mostra profilo
Re:Chronoform crea due record per ogni inserimento
« Risposta #7 il: 12 Gen 2014, 22:47:09 »
Ciao e grazie a tutti per la risposta.
Ho allegato delle foto. Scusate se per motivi di privacy ho dovuto cancellare dei dati.
Si tratta di un'anomalia strana anche se credo di aver copiato alla lettere la lezione di Vales sui form.
Come dicevo mi crea due record doppi. Lo potete vedere nell'allegato db2 con l'id 73.
Il form termina correttamente con l'invio della mail.
Se creo un indice univoco sul campo cf_user_id che contiene l'id dell'utente non crea il record doppio ed il form termina correttamente ma questo per il solo fatto che non controlla l'errore.
Difatti se eseguo di nuovo il form questa volta non crea nessun record ma neanche segnala che il record già esiste o non riporta il codice d'errore di mysql di chiave doppia.

Riepilogando quindi, se non metto un indice mi crea due record di cui uno con i dati del form ed il secondo senza i dati del form ma solo con la prima parte del record. (vedi foto db2)

Vorrei anche risolvere un altro problema.
E' possibile impedire che l'utente modifichi i campi che carico leggendoli dalla tabella quando propongo il form? Ovvero creare un campo di solo output che però venda registrato nel DB quando si preme il tastio del submit?

Ultima richiesta
come posso invece evitare che alcuni campi ad esempio il campo hidden o il campo submit vengano creati nel db quando si crea la tabella? A me quie campi non servono ma di default me li crea.

Ultima info.
Nel campo Targhet Event dell'On fail quale parametro è corretto mettere?
Li ho provati tutti ma non si ferma in caso d'errore.

Grazie

Posto anche il mio codice custom

Codice: [Seleziona]
<?php
$user 
=& JFactory::getUser();
$username $user->username;
$email $user->email;
$campo_id $user->id;

$query "SELECT * FROM j17_comprofiler WHERE user_id=$campo_id";

$db =& JFactory::getDBO();
$db->setQuery($query);
$row $db->loadAssoc();
$utente=$row['cf_user_id'];


$form->data['nome'] =  $row['firstname'];
$form->data['cognome'] =  $row['lastname'];
$form->data['email'] =  $email;
$form->data['grado'] =  $row['cb_grado'];



?>




[allegato eliminato automaticamente dopo un anno]

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Chronoform crea due record per ogni inserimento
« Risposta #8 il: 13 Gen 2014, 09:16:13 »
solo una domanda al volo, prima di esaminare la cosa nel dettaglio:

ma db save, email e show thanks non dovrebbero stare nel ramo on success di custom server side validation?

prova a verificare.

e spera che il problema non si questo, visto quello che c'è li dentro qualcuno potrebbe darti del 'rospo'  ;D ;D

ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Chronoform crea due record per ogni inserimento
« Risposta #9 il: 13 Gen 2014, 20:02:48 »
non credo marco, il form è uguale a quello della guida ed ha sempre funzionato in quel modo, comunque tentare non nuoce

mi interesserebbe sapere invece quale codice è stato inserito in Custom server side validation
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline mmleoni

  • Global Moderator
  • Instancabile
  • ********
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Chronoform crea due record per ogni inserimento
« Risposta #10 il: 13 Gen 2014, 21:03:41 »
eh eh, è che quando vedo i 'goto' nel mezzo del flusso del programma mi viene l'orticaria  ;D ;D

comunque, ora che sei tornato, lascio a te rispondere dato che sull'argomento chronoform sei sicuramente più ferrato e puoi aiutare meglio di quel che posso fare io.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif