Joomla.it Forum

Componenti per Joomla! => Gestione Form => : markuty 07 Jan 2018, 17:47:19

: Checkbox - Event Switcher - DB Save
: markuty 07 Jan 2018, 17:47:19
Saluti a tutti,

ho creato un form (chronoforms5) dove tutti i dati inseriti nei campi 1,2,3,4,5,6,7,8,9, vengono salvati in una tabella "generale" di DB, e tutto funziona!!!

Ora voglio creare, attraverso dei checkbox, che se selezionati, solo alcuni dati del form vadano a riempire altre tabelle di DB.
Ossia se il checkbox A è selezionato caricherà i dati dei campi 1,3,6,7, nella tabella AAA, se il checkbox B è selezionato caricherà i dati dei campi 2,3,6,8, nella tabella BBB; se non sono selezionati non verrà salvato nessun dato nella tabelle AAA e BBB ma solo nella tabella "generale".

Così ho proceduto:
1. creato le tabelle AAA e BBB con i compi relativi;
- Designer
2. creato i checkbox A e B (esempio solo per A) con:
    Field Name "A" - Field ID "A" - Field Value "1"
    Validation "NO"
    Event "check", Action "enable", Element ID/fn()Event "invia" (che è l'ID del pulsante submit)
- Setup - On submit
3. DB Save (che carica i dati nella tabella "generale";
4. Event Switcher - Edit
Action Label "DB_AAA",
Events "success,fail"
code:
<?php
if ( $form->data['A'] == 'invia' ) {
  return 'success';
} else {
  return 'fail';
}
?>
- On success
DB Save - Edit
    -Action label "DB_dati_AAA"
    -Enabled "yes"
    -Table name "xxx_AAA"
    -Save under Model ID "No"
    -Multi save "No"
    -Model ID " "
    -Force save "No"
    -Update conditions " "
- On fail
    nulla.

Ma il tutto non funziona... evidentemente le mie sufficienti conoscenze di php e chronoforms non bastano...
Grazie per l'aiuto.
: Re:Checkbox - Event Switcher - DB Save
: vales 08 Jan 2018, 19:14:56
Nel tuo caso $form->data['A'] ha valore 1 o altro non "invia", e quindi nel Event Switcher non viene mai trovato.

lo stesso per il check B.

Quindi penso che dovresti rivedere il codice php che hai elaborato.
: Re:Checkbox - Event Switcher - DB Save
: markuty 08 Jan 2018, 19:42:10
Grazie Vales,
ok, in effetti...
proverò a cambiare il valore e ti saprò dire se il tutto funziona...
: Re:Checkbox - Event Switcher - DB Save
: markuty 13 Jan 2018, 20:03:38
Buona sera...
ho cambiato il valore "invia" con "1" (Field Value "1" del checkbox)

<?php
if ( $form->data['A'] == '1' ) {
  return 'success';
} else {
  return 'fail';
}
?>

e l'Event Switcher funziona caricando i dati nella tabella AAA, ma solo in quella e non più anche in "generale".

Ossia carica i dati solo nel primo "DB Save" che trova in "On submit"

Ho creato anche un altro Event Switcher con i dati della tabella BBB ma anche in questo caso carica i dati del primo DB Save che trova.

Ho provato a fare un solo Event Switcher con il codice:

<?php
if ( $form->data['A'] == '1' ) {
  return 'success';
}
if ( $form->data['B'] == '1' ) {
  return 'success';
}
else {
  return 'fail';
}
?>
e due DB Save (per tabelle AAA e BBB) in "On success", ma la cosa non cambia.

Ho provato inoltre ad attivare, nell'Edit dei rispettivi DB Save, "Save under Model ID" ed ad indicare Model ID diversi... ma in questo caso non carica nulla.

Come posso fare? Grazie.
: Re:Checkbox - Event Switcher - DB Save
: vales 14 Jan 2018, 10:51:58
Il valore di invia è indifferente in questo caso, invia serve solo a far partire il form.

C'è sicuramente un problema di logica nel flusso dei dati in On submit.

Secondo me dovrebbe essere questa la sequenza semplificata delle action.

1) Event switcher A
se successo salva nel dbave contenuto nell'events switcher i valori  destinati a tabella AAA

2) Event switcher B
se successo salva nel dbave contenuto nell'events switcher i valori  destinati a tabella BBB

3) dbsave generale salva sempre tutti i dati

In questo caso non sono necessari model nei dbsave, anche perchè i campi in designer devono essere impostati senza model.
: Re:Checkbox - Event Switcher - DB Save
: markuty 14 Jan 2018, 11:48:52
ok, provo...
Grazie Vales