Joomla.it Forum
Componenti per Joomla! => Gestione Form => : Ago_ 09 Nov 2016, 17:38:28
-
Ciao ragazzi, sto modificando il sistema che ho trovato su questo sito dei dropdown dinamici regioni-->province-->comuni
vorrei modificarlo in un dropdown automatico non modificabile dall'utente
clienti-->agenti-->manager
però io all'inizio del form ho già un textbox che identifica l'id del cliente con questo codice
<?php
$user = JFactory::getUser();
$form->data['codiceutente'] = $user->username;
?>
come posso fare per collegare il valore del textbox id_user con il primo dropdown cliente ?? dovrei usare una funzione di copia incolla o rendere il primo dropdown il textbox iniziale stesso, voi che mi consigliate ?
-
Ho risolto il problema aggirandolo, ho inserito due nuovi campi nella tabella user per specificare alcune relazioni particolari.
Adesso sto seguendo la guida di giusebos presente su icagenda, perfetta in ogni parte, installata la demo perfettamente funzionante. Ma se provo ad applicarla al mio form non mi funziona, penso sia un problema di impostazioni di tabelle, spiego meglio....
la demo ragiona su regioni-->province-->comuni
invece io dovrei fare il processo inverso
clienti-->agenti-->responsabili (inutile direi che 3 responsabili hanno piu agente, e piu agenti hanno piu clienti)
clienti: idcliente, nomecliente, idagente
agenti: idagente, nomeagente, idmanager
manager: idmanager, nomemanager
sono quasi certo sia errata l'impostazioni delle tabelle, in ogni caso io devo partire dal dato del cliente (l'unico che ho in partenza).
qualche suggerimento ?? grazie
-
essendo che in ogni tabella va ripetuta in un campo la chiave primaria della tabella padre, ho scoperto che non posso adattare 3 dropdown dinamici al mio caso per il fatto che hanno una proprietà inversa rispetto al ragionamento regione-provincie-comuni
devo inventarmi un altro modo per arrivare ad avere su due campi/dropdown il manager e l'agente relativi partendo dal cliente.
-
Puoi avere quante dipendenze vuoi, devi solo correlare nel modo giusto le tabelle, cioè ogni tabella padre deve avere un campo in comune con una tabella figlia,
Così per esempio riporto il caso regione provincia comune:
Tabella regione avrà solo un id chiave primaria per comodità idRegione ma puoi chiamarlo come ti pare
Tabella province avrà un idProvincia primaria ed un idRegione che dovrà essere uguale all'idRegione della regione di appartenenza
Infine tabella comuni avrà idProvincia primaria ed un idprovincia che dovrà essere uguale all'idprovincia della provincia di appartenenza.
Puoi proseguire quanto vuoi e non ha importanza che i nomi siano regioni, provincia o comuni ma puoi mettere quello che ti pare purché rispetti le dipendenze, poi ci saranno tanti sistemi di script per ricavare i dropdown la struttura dek db non cambia se cambia il codice. dai uno sguardo anche a come l'ho realizzato con datagrill (in firma)
xataface.it/esempio.html
se entri come utente registrato puoi aggiungere o modificare.
user e pw tester
xataface.it/login.html
-
si, ho studiato come mettere in relazione clienti-->agenti-->responsabili
ma è impossibile con questra struttura partendo dal responsabile
quindi l'esempio regioni-->province-->comuni non si può utilizzare
a quesdto punto penso di creare unica tabella con i campi (idcliente, nomecliente, agente, responsabile) e usare un codice che scelto il cliente da un dropdown mi faccia la select dei dati restanti dello stesso record scelto e stampare su due textboxd (agente, responsabile)
-
informandomi sul forum ufficiale chronoengine ho capito che per caricare altri campi di un record scelto tramite dropdown ho bisogno di javaScript con una chiamata ajax, sfruttando una matrice JSON. Sto cercando delle faq ma non riesco a trovare niente di esplicativo.
-
Se parti dal cliente che senso ha avere delle dropdown per scegliere le altre entità se sono già state impostate sul db ;D Il dropdownl è pensato per selezioni consecutive e conseguenziali, nel tuo caso a mio parere non hoa molto senso.
A questo punto lasci le tabelle invariate e quando vai a fare la select su clienti farai in realtà una select su
* FROM clienti NATURAL JOIN agenti NATURAL JOIN manager
Così alla prima selezione hai già tutti i campi che ti interessano. Occhio però perchè questo è equivalente ad avere il tabellone "idcliente, nomecliente, agente, responsabile".
Sicuro che è quello che ti serve?
-
informandomi sul forum ufficiale chronoengine ho capito che per caricare altri campi di un record scelto tramite dropdown ho bisogno di javaScript con una chiamata ajax, sfruttando una matrice JSON. Sto cercando delle faq ma non riesco a trovare niente di esplicativo.
Con datagrill + xataface non serve nessun codice javascript aggiuntivo, è tutto già incluso.
-
informandomi sul forum ufficiale chronoengine ho capito che per caricare altri campi di un record scelto tramite dropdown ho bisogno di javaScript con una chiamata ajax, sfruttando una matrice JSON. Sto cercando delle faq ma non riesco a trovare niente di esplicativo.
E'nel mio articolo sulle dropdown regioni, province, comuni
http://www.joomla.it/e-ancora/articoli-community-3x/8172-form-e-campi-dropdown-dinamici-con-chronforms-e-ajax.html
-
E'nel mio articolo sulle dropdown regioni, province, comuni
http://www.joomla.it/e-ancora/articoli-community-3x/8172-form-e-campi-dropdown-dinamici-con-chronforms-e-ajax.html (http://www.joomla.it/e-ancora/articoli-community-3x/8172-form-e-campi-dropdown-dinamici-con-chronforms-e-ajax.html)
quindi teoricamente dovrei rimuovere dall'ajax il dbread sulla seconda tabella (province) e lasciare il custom code adeguatamente modificato con il modelID del primo dbread (la cosa piu difficile non essendo un programmatore)
<?php
$results = array();
$results[] = 'Seleziona agente';
foreach ( $form->data['legge'] as $v ) {
$results[$v['idAgente']]=$v['nomeAgente'];
}
echo json_encode($results);
?>
-
ho risolto la situazione lavorando sulle tabelle, ho tenuto i 3 dropdown dinamici e modificato la tabella facendo in modo che ogni relazione cliente--Agente e agente-->responsabile abbia n ID quante sdono el relazioni tra di essi. un modo molto ortodosso ma funzionale.