Back to top

Autore Topic: [RISOLTO] Chronoform V5. Come inserire gli stessi record in due diverse tabelle.  (Letto 5880 volte)

Offline jurassic

  • Esploratore
  • **
  • Post: 75
  • Sesso: Maschio
    • Mostra profilo
 Salve a tutti.
Ho un form che inserisce/salva i record in una tabella e funziona benissimo.

Ora ho la necessità di inserire gli stessi record dallo stesso form contemporaneamente in due tabelle diverse.
Ho provato ad inserire in Setup un doppio DB read e DB Save che punti in una tabella secondaria da quella principale ma continua ad inserire i record solo in quella principale.
Tra le varie prove e setup non sono riuscito ancora a salvare i record nella seconda tabella.
Qualcuno può aiutarmi a risolvere il problema?
Questo è il Setup attuale:
On Load ho inserito un DBRead e in On Submit un DBSave. In tutti e due in Table name ho selezionato la tabella di MySql dove registra i record.
Vi ringrazio anticipatamente.
 
« Ultima modifica: 18 Nov 2015, 13:20:08 da jurassic »

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Se il form è solo di inserimento senza prelievo di dati da altre tabelle  non serve DBread.

In On submit occorrono due Dbsave che puntano ciascuno a due tabelle diverse ma con gli stessi campi.

Nella seconda attiverei il model per distinguerla dalla prima altrimenti si annodano i flussi di dati.

Fra la prima è la seconda Dbsave occorre un'action Custom code per preparare i dati della seconda tabella con un codice php tipo questo:

Codice: [Seleziona]
<?php
$form
->data['model2']['campo1']=$form->data['campo1'];
// uguale per gli altri campi
?>

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 jurassic

  • Esploratore
  • **
  • Post: 75
  • Sesso: Maschio
    • Mostra profilo
Salve Vales.
Di nuovo grazie per l'aiuto. Ho fatto quello che hai detto e ora funziona benissimo.
Ti chiedo un altro aiuto:
Dal form per  le modifiche, se voglio fare la modifica dei record contemporaneamente alle due tabelle quale procedura devo seguire?
Ho visto il tuo Albo pretorio, ottimo lavoro, complimenti.


Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Le due tabelle devono avere esattamente gli stessi records, altrimenti la procedura dovrebbe essere diversa.

La stessa procedura di prima con la variante che avrai una DB read in On load che legge i dati dalla prima tabella.

Metterei un campo hidden di nome id in designer che prende il valore id della prima tabella.

In On submit la stessa sequenza di prima con una variante nel codice.

Dovrai aggiungere il campo id della seconda che prende il valore id del campo nascosto passato dal form.



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 jurassic

  • Esploratore
  • **
  • Post: 75
  • Sesso: Maschio
    • Mostra profilo
Buongiorno Vales.
Sto lavorando con i link che mi collegano ai form inserisci e modifica.
Le modifiche sono collegate alla connessione che mi da la lista dei record inseriti nella tabella.
Da qui seleziono i record da modificare ed entro nel form di modifica. Effettuo le modifiche e do invio.

In merito al form che serve a fare le modifiche in due tabelle:
In designer un campo Hidden con [id]
In On load un DB read che legge dalla prima tabella, in On Submit un
DB Save che aggiorna e salva i record nella seconda tabella.
Il tutto ha funzionato, il form modificava sia la prima che la seconda tabella, questo mi sta bene.
Però dopo aver cambiato il link al form dal menù di joomla quando entro nel form e do invio per salvare le
modifiche mi da il seguente errore:
Si è verificato un errore.
 Non è possibile trovare la pagina richiesta.
#404 Categoria non trovata

Ora devo trovare una soluzione a questo problema che dovrebbe dipendere dal form. Ci riaggiorniamo.
Grazie di nuovo.
« Ultima modifica: 21 Nov 2015, 22:43:30 da jurassic »

Offline jurassic

  • Esploratore
  • **
  • Post: 75
  • Sesso: Maschio
    • Mostra profilo
Salve Vales.
Il form per le modifiche che prima funzionava e poi dava errore l’ho dovuto eliminare e ricostruire.
Ho provato con il nuovo form ma  fa le modifiche solo alla prima tabella.
L’idea è di far prelevare i record dalla prima tabella e fargli fare le modifiche alla seconda tabella oppure a tutte e due le tabelle.
Le due tabelle hanno gli stessi identici record.
Questo è quello che ho fatto seguendo il tuo ultimo consiglio:
In Setup -> On load -> un Db Read  che legge i dati dalla prima tabelle e con Model Id.
In On submit -> 2 Db Save con in mezzo un custom code.
Il primo Db Save con Action label senza id dell’hidden in Designer -> Table name: prima tabella-> senza Model id.
Custom code con il codice che mi hai consigliato all’inizio del topic e che ha funzionato bene per inserire i dati in doppia tabella.
Secondo  Db Save-> Action label con [id]-> Table name: seconda tabella e con Model Id-> in Update conditions: <?php return array('chiudischema.id'=>$form->data['gcb']); ?>
Il tutto continua a modificare i dati solo nella prima tabella.
Posso permettermi di chiederti un altro aiuto?
Grazie.
« Ultima modifica: 14 Nov 2015, 18:02:00 da jurassic »

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
credo che in On submit non tu abbia più disponibile $form->data['gcb']. In Designer assegna al campo nascosto di nome id il valore  di gcb e poi usa quello in update condition che dovrebbe venire così:

Codice: [Seleziona]
<?php return array('chiudischema.id'=>$form->data['id']); ?>
Inserire un'action debugger prima della seconda dbsave può aiutarti a capire i valori che hai disponibili in quel punto.
« Ultima modifica: 15 Nov 2015, 03:59:26 da vales »
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 jurassic

  • Esploratore
  • **
  • Post: 75
  • Sesso: Maschio
    • Mostra profilo
Buongiorno. Grazie per la risposta.
Ho effettuato le prove che mi hai consigliato ma aggiorna solo i dati della prima tabella e non quelli della seconda.
In Designer nel campo nascosto ho inserito in Field Name: id e non chiudischema[id], provando con quest’ultimo duplica i record della prima tabella. In Field Value {gcb}
Nel Setup ho:
in On load un Db Read che punta alla prima tabella-> Action label: chiudischema-> Model id: chiudischema
In On submit:
un DB save che punta sempre alla prima tabella-> Action label: chiudischema[id]-> Model Id: Data-> Update conditions: $form->data['gcb'].
Ho provato anche con: <?php return array('chiudischema.id'=>$form->data['id']); ?> ma non va bene.
Custom code con: $form->data['chiudischema2']['id']=$form->data['id'];
$form->data['chiudischema2']['operatore']=$form->data['operatore'];?> ecc….
Ho provato a togliere anche il custom code e ha lo stesso effetto.
Subito dopo un Debbuger con Enable: yes
Segue un DB Save che punta alla seconda tabella:
Action label: chiudischema-> Model ID: chiudischema-> Update conditions: <?php return array('chiudischema.id'=>$form->data['id']); ?>
Il tutto modifica solo i dati della prima tabella.
Dove può essere l’errore?
Grazie di nuovo

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Le mie indicazioni erano per la prima tabella usata senza model id, come nel primo caso se usi il model id chiudischema per la prima e chiudischema2 per la seconda va tutto adattato alla nuova situazione. Non ho capito cos'è operatore.

Riepilogando

in On load un Db Read che punta alla prima tabella-> Action label: chiudischema-> Model id: chiudischema
in conditions dovresti avere
Codice: [Seleziona]
<?php return array('chiudischema.id' => $form->data['gcb']); ?>
in designer campo hidden <input tipe="hidden" nome="id" value="{gcb}">

In On submit:
un DB save che punta sempre alla prima tabella-> Action label: chiudischema[id]-> Model Id: chiudischema-> Update conditions:
Codice: [Seleziona]
<?php return array('chiudischema.id' => $form->data['id']); ?>
Segue un DB Save che punta alla seconda tabella:

Action label: chiudischema-> Model ID: chiudischema2-> Update conditions:
Codice: [Seleziona]
<?php return array('chiudischema2.id'=>$form->data['id']); ?>
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 jurassic

  • Esploratore
  • **
  • Post: 75
  • Sesso: Maschio
    • Mostra profilo
Salve Vales. Grazie per la risposta e per la pazienza.
Ho seguito le tue indicazioni ma non va, continua a modificare solo i record della prima tabella.
$form->data['operatore'] è un record della tabella.
In Designer-> Elemento Hidden->Field name: id -> Field value: {gcb}->Extra params: <input tipe="hidden" nome="id" value="{gcb}">
Ho provato anche con alcune modifiche ad esempio togliendo e rimettendo in Setup -> Custom code  e Debugger. Ma non funziona, non modifica i record della seconda tabella.
Specifico che in Designer  il pulsante Submit  è collegato ad un checkbox che attiva il pulsante con in General->Extra params: vuoto-> in Events-> uncheck e check disabile ed enable collegato all’id del pulsante, ma penso che, Extra params: vuoto, non dovrebbe influire sul fatto che non modifica la seconda tabella
Da cosa può dipendere?

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Per l'elemento Hidden non è necessario Extra params con quei valori che hai mostrato.

Metti un'action debugger prima dell'action dbsave 2 e controlla il valori dei vari elementi in quel punto.
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 Ago_

  • Abituale
  • ****
  • Post: 823
  • Sesso: Maschio
    • Mostra profilo
Se il form è solo di inserimento senza prelievo di dati da altre tabelle  non serve DBread.

In On submit occorrono due Dbsave che puntano ciascuno a due tabelle diverse ma con gli stessi campi.

Nella seconda attiverei il model per distinguerla dalla prima altrimenti si annodano i flussi di dati.

Fra la prima è la seconda Dbsave occorre un'action Custom code per preparare i dati della seconda tabella con un codice php tipo questo:

Codice: [Seleziona]
<?php
$form
->data['model2']['campo1']=$form->data['campo1'];
// uguale per gli altri campi
?>


come jurassic ho un form perfettamente funzionante, però vorrei aggiungere un second dbsave che salvi solo alcuni campi in una seconda tabella (diversa nei campi). cosa dovrei mettere nel dbsave ?

Offline jurassic

  • Esploratore
  • **
  • Post: 75
  • Sesso: Maschio
    • Mostra profilo
Salve.
Scusate se mi intrometto in questa discussione che era stata aperta un pò di tempo fa.
Volevo solo aggiungere a titolo informativo che:
Se si ha la necessità di eliminare i record inseriti nella doppia tabella occorre creare due connessioni separate per l'eliminazione, ognuna per ogni singola tabella interessata, altrimenti si perde la linearità degli ID. Eliminando una linea da una sola tabella quando si inseriscono i dati da un nuovo form gli ID risultano diversi, quindi occorrerebbe allinearli direttamente da MySql.
Non so se c'è una modalità diversa, io ho risolto con la doppia eliminazione.
Un saluto a tutti voi.

 



Web Design Bolzano Kreatif