Joomla.it Forum

Componenti per Joomla! => Gestione Form => : vitofan2joomla 23 Nov 2016, 22:17:17

: [RISOLTO]dinamic dropdown non salva il campo nel database
: vitofan2joomla 23 Nov 2016, 22:17:17
Ciao a tutti,
ho scoperto con molto dispiacere che una dropdown dinamica non salva il campo in fase di creazione del database.

La miai dropdown mi visualizza il valore di un campo di un altro database, ma come faccio a salvare quel valore nel database che sottostà al form?
: Re:dinamic dropdown non salva il campo nel database
: vitofan2joomla 23 Nov 2016, 23:16:22
Con un pò di fortuna ho trovato questo:
In the Custom Code action insert PHP code to set the campoDaSalvare field to the appropriate value depending on the selected drop down value.
In ChronoForms v4 or v5, this will be something similar to this:
<?php $form->data['campoDaSalvare'] = $form->data['campoDynamicDropqown']; ?>
in sostanza creo un campo nascosto e con il codice php lo rendo uguale al valore della casella di selezione, questo ovviamente prima di salvare il record nel database.

Il campo che mi salva il valore è nascosto così chi compila il form vede solo il valore scelto nella dropdown (di nascosto invece vado a salvarlo nel database)

: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: Ago_ 24 Nov 2016, 22:53:15
ciao vitofan, oggi avevo lo stesso problema...ma la tua soluzione non mi funziona, o meglio dire, mi copia sempre l'id e non il valore che visualizzo nella dropdown dinamica.

Ho reato un costum code in OnSetup prima del dbSave come indichi, ma salva l'id e non il valore

preciso che l'id è chiave primaria di ogni tabella, non posso mettere chiave primaria il valore per problemi vari che sono lunghi da spiegare
: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: vitofan2joomla 25 Nov 2016, 07:22:30
ciao Ago_
nel mio caso nel database da cui pesco con la dropdown io ho un solo campo per cui non posso che pescare quel solo valore che seleziono......

ad ogni modo per quello che ne so io:
1) nel DB read indichi il solo campo che ti interessa? nel mio caso il campo si chiamava titolo (così forzi la lettura di un solo campo.....)


2) poi nelle proprietà della dropdown ripeti il nome del campo in tutti e due i valori che leggi sotto:

sempre da quello che ho capito io
 Value Key rappresenta il campo che passi al form come riferimento
Text Key è il valore effettivo che salvi




: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: Ago_ 25 Nov 2016, 08:33:39
ciao Ago_
nel mio caso nel database da cui pesco con la dropdown io ho un solo campo per cui non posso che pescare quel solo valore che seleziono......

ad ogni modo per quello che ne so io:
1) nel DB read indichi il solo campo che ti interessa? nel mio caso il campo si chiamava titolo (così forzi la lettura di un solo campo.....)


2) poi nelle proprietà della dropdown ripeti il nome del campo in tutti e due i valori che leggi sotto:

sempre da quello che ho capito io
 Value Key rappresenta il campo che passi al form come riferimento
Text Key è il valore effettivo che salvi

ti ringrazio per la risposta, vado più nello specifico...

io ho concatenato piu tabelle (4) per un totale di 4 dropdown (codice cliente - nome cliente - agente - manager)

per il primo campo ho risolto il problema sopra menzionato mettendo sia in value che in text lo stesso campo (ovvero il codiceCliente), però il problema nei restanti 3 concatenati rimane, ovviamente queste 3 tabelle hanno 3 campi a testa (chiave primaria della tabella precedente, campo valore e id numerico)
: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: vitofan2joomla 25 Nov 2016, 17:40:44
ciao Ago_
Ahiii, per il tuo caso complesso non saprei come aiutarti.

Insomma tu hai 4 tabelle quindi dovresti avere 4 DB read uno per ogni tabella e creare per ogni DB un MODEL (array dei dati in memoria)

quindi ogni dropdown fa riferimento ad un MODEL da dove preleva il campo desiderato,

logicamente è così?

quando risolvi fammi sapere
: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: Ago_ 28 Nov 2016, 10:40:54
ciao Ago_
Ahiii, per il tuo caso complesso non saprei come aiutarti.

Insomma tu hai 4 tabelle quindi dovresti avere 4 DB read uno per ogni tabella e creare per ogni DB un MODEL (array dei dati in memoria)

quindi ogni dropdown fa riferimento ad un MODEL da dove preleva il campo desiderato,

logicamente è così?

quando risolvi fammi sapere

Si si, 4 dbread con diversi model ID. funziona tutto bene, tranne questa piccola confusione al momento del salvataggio in DB. speriamo qualcuno riesca ad aiutarmi.
: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: Ago_ 29 Nov 2016, 11:57:45
cavolo, non riesco a trovare da nessuna parte un caso simile, nemmeno sul forum del sito ufficiale. :(
: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: Ago_ 29 Nov 2016, 15:53:40
risolto

semplice custom code prima del DBsave

:
    <?php
    $db 
= \JFactory::getDBO();
    
$query "
        SELECT `col_name`
            FROM `#__table_name`
            WHERE `id` = '
{$form->data['input_name']}' ;
    "
;
    
$db->setQuery($query);
    
$form->data['some_name'] = $db->loadResult();
    
?>

: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: vitofan2joomla 29 Nov 2016, 19:46:28
Bravoooo,
ti dispiacerebbe commentarmi un pò a parole logiche cosa fa questo codice PHP?

io capisco questo:
fai una query sulla campo Col_name dove id è uguale al valore esistente nel form field   'input_name'?? 

poi equalizzi il form field al valore del risultato della query???


grazie
: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: Ago_ 30 Nov 2016, 10:23:40
Bravoooo,
ti dispiacerebbe commentarmi un pò a parole logiche cosa fa questo codice PHP?

io capisco questo:
fai una query sulla campo Col_name dove id è uguale al valore esistente nel form field   'input_name'?? 

poi equalizzi il form field al valore del risultato della query???

grazie

non essendo un programmatore te lo spiegherò spero in maniera semplice

trova il valore sul campo (col_name) x della tabella y (attento, se non ha il suffisso di joomla rimuovi #) dove filtri attraverso la colonna id (che sia uguale al dropdown z)
adesso che hai il valore corretto prendilo e salvalo nel campo a (some_name) del db impostato in DB save

: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: vitofan2joomla 30 Nov 2016, 16:45:34
ciaoo
tu dici:
adesso che hai il valore corretto prendilo e salvalo nel campo a (some_name) del db impostato in DB save
$form->data['some_name'] = $db->loadResult()
io capisco che al campo del form viene assegnato il valore della ricerca sull'id. Quindi poi questo campo del form è quello che viene salvato nel DB save giusto??

credo di aver capito.

Senti se ti interessa (o a chi altri interessasse):

ho trovato un sistema di fare un form in anonimato entrando in joomla come utente registrato e permettere all'utente registrato di fare una sola volta il form!!!
si possono fare grandi cose con Chronoforms...eheheheh
: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: Ago_ 30 Nov 2016, 17:26:48
ciaoo
tu dici:
adesso che hai il valore corretto prendilo e salvalo nel campo a (some_name) del db impostato in DB save
$form->data['some_name'] = $db->loadResult()
io capisco che al campo del form viene assegnato il valore della ricerca sull'id. Quindi poi questo campo del form è quello che viene salvato nel DB save giusto??

credo di aver capito.

Senti se ti interessa (o a chi altri interessasse):

ho trovato un sistema di fare un form in anonimato entrando in joomla come utente registrato e permettere all'utente registrato di fare una sola volta il form!!!
si possono fare grandi cose con Chronoforms...eheheheh

esatto, capito perfettamente.
al momento non mi serve una funzione del genere, magari in futuro...
è un sistema molto potente, veramente versatile e basta saper smanettare con php e mysql puoi fare ciò che vuoi...
: Re:[RISOLTO]dinamic dropdown non salva il campo nel database
: vitofan2joomla 30 Nov 2016, 17:39:03
già che non è poco.
Cmq io ho messo la soluzione nel mio post a beneficio di coloro che avessero questa necessità. ciao