Autore Topic: [RISOLTO] chronoforms v5; leggere due tabelle con stesso id  (Letto 1164 volte)

Offline medeino

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo


buonasera a tutti:
ho realizzato una serie di form, con chronoforms v5, collegati tra di loro:
il primo, dopo l'autenticazione per utente registrato joomla, mostra un form con i dati letti da una tabella di un record con id e user_id dell'utente autenticato;
da questo form ci si collega ad un altro form che rilegge la tabella precedente per prelevare alcuni dati (fin qui tutto OK),
dopodiche devo leggere un'altra tabella che ha stessa chiave, ovvero  gli stessi valori di id e user_id della prima..... non mi riesce leggerla; ovvero non so come collegare, prima della lettura, l'id della prima tabella con quello della seconda.
non capisco come mai invece lo user_id rimane (infatti  se faccio dbsave sulla seconda  tabella viene scritto  un'altro record con diverso id ma stesso user_id) .


potete aiutarmi a trovare la soluzione?


Grazie
« Ultima modifica: 02 Feb 2018, 10:32:31 da medeino »

Offline giusebos

  • Fuori controllo
  • *
  • Post: 19594
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
    • Demo iCagenda
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #1 il: 25 Gen 2018, 23:50:43 »
scusami, l'informatica ha bisogno di tutta una serie di parametri precisi, ma vedendo come hai formattato questa richiesta di aiuto, non posso fare altro che pensare che la tua applicazione con chronoforms non funzioni perchè hai dato poca importanza a cose che dai per scontato come una semplice formattazione......


Quindi,


  • riformatta il post per farci capire qualcosa e magari aggiungi qualche indicazione in più
  • Visto la tua richiesta non è di quelle che si risolvono con clicca la e pigia su, dettaglia tabelle, campi e relazioni, magari allegando uno schema.
P.S. non è possibile allegare file ma è possibile inserire immagini locate in server esterni.
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 7920
  • Sesso: Maschio
    • Mostra profilo
    • Test di Albo Pretorio On LIne e Moduli Scuola On Line per Joomla 3
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #2 il: 26 Gen 2018, 09:36:19 »
Qualche notizia in più, come già stato scritto, sulle relazioni fra le tabelle che hai citato è necessaria.

Probabilmente hai un problema sul filtro nella lettura dell'ultima tabella che hai citato, se esiste il filtro nella dbread.

Tieni poi già presente che le tabelle create con chronforms prevedono già in automatico il salvataggio dell'user_id loggato in quel momento quindi non è cosa strana ma è normale.
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/joomla3/

Offline medeino

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #3 il: 26 Gen 2018, 11:13:50 »

Hai perfettamente ragione giusebos: chiedo scusa ma, come dice Vales, tutti abbiamo iniziato da zero, io forse anche da meno uno.
Provo a spiegare meglio il mio problema:
utilizzo chronoforms v5
ho una tabella madre che ha come chiave i campi cf_id e user_id  (i dati di registrazione in joomla)
nella tabella madre c’è un campo che riepiloga lo stato della tabella figlia
la tabella figlia ha stessa chiave della tabella madre (cf_id, user_id)
Faccio login e mi collego al form madre in cui vedo i dati della tabella madre correttamente
Da questo form un link mi porta sul form della tabella figlia (vuota), ovvero non ci sono record con stessa chiave cf_id e user_id
In questo form rileggo la tabella madre (e questo è ok) per visualizzare alcuni dati
Poi la tabella figlia. Che ovviamente non legge niente perché non c’è niente
Al caricamento Il form figlia non va in errore, viene presentato con cf_id e user_id giusti,  compilo i dati,
e salvo nella tabella figlia  con cf_id e user_id giusti


quando poi però rifaccio lo stesso giro, per rileggere i dati, e arrivo al form figlia, non riesco a leggere il record presente in tabella figlia per lo stesso cf_id e user_id, ma mi viene presentato il form figlia vuoto come se non ci fossero dati (pur vedendo cf_id e user_id giusti, ma saranno quelli della tabella madre immagino)


Non solo:  se entro con un altro utente (cf_id e user_id diversi dal primo) non riesco nemmeno ad aggiornare la tabella figlia, pur la transazione concludendosi regolarmente
Vi riassumo i parametri dei DBread e dei DBsave


Dbread madre
Enable Yes
Multi read, enable model id  NO
Fields cf_id,user_id, denominazione


Dbread Figlia
Enable Yes
Multi read NO
enable model id  Yes


model id= anagdata
Fields cf_id,user_id,nome,cognome,idstatonasc


Dbsave figlia
Enable Yes
Multi save NO
Model id Data


L’istallazione è in locale


se c'è bisogno di chiarimenti sono a disposizione
Grazie


Offline medeino

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #4 il: 29 Gen 2018, 09:27:48 »
buongiorno,

ho inserito un filtro sulla  tabella che non  riuscivo a leggere  :

<?php
$user = JFactory::getUser();
return array('user_id' => $user->id);
 ?>

ho poi, in designer, referenziato i FIELD NAME dei campi che voglio mostrare nel form dalla tabella con il MODEL ID indicato nella DBread ed ora riesco a mostrare i campi.

Non riesco invece a scrivere le modifiche:

per chiarezza posto le impostazioni:

DBREAD

enable model id YES

model id anagdata

condition:   

<?php
$user = JFactory::getUser();
return array('user_id' => $user->id);
 ?>


DBSAVE

save under model id YES

model id anagdata


l'errore che mi viene fuori:

 Notice:  Undefined index: anagdata in C:\xampp\htdocs\joomla\administrator\components\com_chronoforms5\chronoforms\actions\db_save\db_save.php on line 82

L'unica cosa che mi viene in mente è che il model id anagdata contiene solo alcuni campi della tabella e non tutti... è possibile che sia questo il problema?

Offline medeino

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #5 il: 29 Gen 2018, 10:57:19 »
aggiungo che la la Dbsave scrive una riga, senza alcun dato, con user_id corretto ma non va in update sul record esistente, bensi aggiunge una  riga con stesso user_id; tutto questo nonostante abbia memorizzato l'id giusto sia della prima che della seconda tabella

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 7920
  • Sesso: Maschio
    • Mostra profilo
    • Test di Albo Pretorio On LIne e Moduli Scuola On Line per Joomla 3
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #6 il: 29 Gen 2018, 20:05:50 »
1) se usi il model nel filtro della db read il campo deve essere preceduto dal model es: anagdata.user_id

2) nella dbsave dovresti spuntare a NO il campo Force save

3) in designer dovresti inserire un campo hidden  con il campo id della tabella letta, serve per stabilire quale record registrare.
    es:
name anagdata[id]
value {anagdata.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/joomla3/

Offline medeino

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #7 il: 30 Gen 2018, 08:43:40 »
Vales, grazie per la risposta :)

nel frattempo avevo elaborato, grazie alle ricerche sul Forum, una soluzione che forse è meno lineare e che magari presenta qualche problema che in questo momento non vedo:

in designer ho referenziato i dati che ho letto con il model id anagdata sia nel field name che nel field id
in on submit ho 'riassegnato' i campi in questo modo in una custom;
<?php
$form->data['nome']=$form->data['anagdata']['nome'];
$form->data['cognome']=$form->data['anagdata']['cognome'];
$form->data['idstatonasc']=$form->data['anagdata']['idstatonasc'];
$form->data['dtnasc']=$form->data['anagdata']['dtnasc'];
$form->data['locnasc']=$form->data['anagdata']['locnasc'];
$form->data['locres']=$form->data['anagdata']['locres'];
?>

ho inserito un'altra custom

<?php
unset($form->data['id']);
?>

ora aggiorna in maniera esatta, anche se nel filtro in lettura per user_id non ho inserito il prefisso anagdata del model id

Giusto per cercare di capire meglio quello che sto facendo  :) , ti sembra una soluzione che può stare in piedi oppure c'è qualche situazione per cui può non funzionare?


Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 7920
  • Sesso: Maschio
    • Mostra profilo
    • Test di Albo Pretorio On LIne e Moduli Scuola On Line per Joomla 3
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #8 il: 30 Gen 2018, 09:23:36 »
Non capisco la riassegnazione dei valori in on sumbit se in dbsave usi il model.
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/joomla3/

Offline medeino

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #9 il: 30 Gen 2018, 10:04:11 »
........perchè se riassegno fa l'update della riga, se invece nella dbsave utilizzo il dbmodel inserisce una nuova riga con stesso user_id ma diverso cf_id...........  sicuramente sbaglio qualcosa....

Offline medeino

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #10 il: 31 Gen 2018, 16:21:13 »
Ciao Vales,

ho seguito le tue indicazioni ovvero: in Designer campo hidden chiamato anagdata[id]valorizzato con {anagdata.cf_id}

ho effettuato la dbsave con il model id  della dbread (anagdata)

ma invece di fare update fa una insert (visto con il debugger)

Allora ho inserito in update conditions

<?php return array('anagdata.cf_id'=>$form->data['anagdata[id]']); ?>

ma mi da questo errore:

Undefined index: anagdata[id] in C:\xampp\htdocs\joomla\administrator\components\com_chronoforms5\chronoforms\actions\db_save\db_save.php(90) : eval()'d code on line 1è evidente che scrivo male la update condition,
puoi darmi cortesemente una mano?

Offline medeino

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #11 il: 01 Feb 2018, 08:35:45 »
ho provato anche cambiando nome alla variabile, chiamandola solamente id.... in fase di caricamento viene correttamente visualizzato il valore di cf_id, ma al momento dell'assegnazione viene fuori lo stesso errore.... c'è qualcuno che mi può dare una mano?
Grazie

Offline medeino

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
Re:chronoforms v5; leggere due tabelle con stesso id
« Risposta #12 il: 01 Feb 2018, 19:28:38 »


Ho risolto
Avevo semplicemente settato a disable
I campi dove memorizzavo la chiave


Grazie
« Ultima modifica: 01 Feb 2018, 23:40:17 da medeino »

 

Torna su