Joomla.it Forum
Componenti per Joomla! => Gestione Form => : dmiao83 04 Jan 2015, 15:20:41
-
Buon pomeriggio
prendendo spunto da questo post http://forum.joomla.it/index.php/topic,95733.msg513419.html#msg513419 (http://forum.joomla.it/index.php/topic,95733.msg513419.html#msg513419)
Ho cercato di creare tre dropdown collegati, con scarsi risultati:
(1° dropdown) Dalla tabella a_scuola vorrei visualizzare nome e passare il valore di uniq_id
(2° dropdown) Dalla tabella a_ammin vorrei visualizzare gli id_cod con id_scuola==uniq_id (del 1° dropdown)
(3° dropdown) Dalla tabella a_ammin vorrei visualizzare gli id_anno con id_scuola==uniq_id (del 1° dropdown)
Codice HTML inserito in CODE
<?php
$db =& JFactory::getDBO();
$query = "SELECT `uniq_id`, `nome` FROM `#__a_scuola` ORDER BY `nome`";
$db =& JFactory::getDBO();
$db->setQuery($query);
$nomes = $db->loadAssocList();
$option_nome="";
foreach ( $nomes as $v ) {
$selected="";
$uniq_id = $v['uniq_id'];
$nome = $v['nome'];
//if ($uniq_id==JRequest::getVar('nome',0,'GET','INT')) {
$selected="selected=\"selected\"";
//}
$option_nome.="<option value=\"$uniq_id\" $selected>$nome</option>\n";
}
$query = "SELECT `id_scuola`, `id_cod` FROM `#__a_ammin` WHERE `id_scuola`=".JRequest::getVar('nome',0,'GET','INT')." ORDER BY `id_cod`";
$db->setQuery($query);
$nomes = $db->loadAssocList();
$option_cod="";
foreach ( $nomes as $v ) {
$selected="";
$id_scuola = $v['id_scuola'];
$id_cod = $v['id_cod'];
if ($id_scuola==JRequest::getVar('id_cod',0,'GET','INT')) {
$selected="selected='selected'";
}
$option_cod.="<option value=\"$id_scuola\" $selected>$id_cod</option>\n";
}
$query = "SELECT `id_scuola`, `id_anno` FROM `#__a_ammin` WHERE `id_scuola`=".JRequest::getVar('id_cod',0,'GET','INT')." ORDER BY `id_anno`";
$db->setQuery($query);
$nomes = $db->loadAssocList();
$option_anno="";
foreach ( $nomes as $v ) {
$id_scuola = $v['id_scuola'];
$id_anno = $v['id_anno'];
$option_anno.="<option value=\"$id_scuola\" $selected>$id_anno</option>\n";
}
?>
<div class="form_item">
<div class="form_element cf_dropdown">
<div style="clear:both;"><label class="cf_label">Scuola</label>
<select id="scuola" name="scuola" onchange="progetto(this.form);" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>
<?php echo $option_scuola; ?>
</select>
</div>
</div>
<div class="cfclear"> </div>
</div>
<div class="form_item">
<div class="form_element cf_dropdown">
<div style="clear:both;"><label class="cf_label">Progetto</label>
<select id="progetto" name="progetto" onchange="reload(this.form);" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>
<?php echo $option_cod; ?>
</select>
</div>
</div>
<div class="cfclear"> </div>
</div>
<div class="form_item">
<div class="form_element cf_dropdown">
<div style="clear:both;"><label class="cf_label">Anno</label>
<select id="anno" name="anno" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>
<?php echo $option_anno; ?>
</select>
</div>
</div>
<div class="cfclear"> </div>
</div>
Codice JavaScript inserito in Setup Load JavaScript
function progetto(form)
{
var scuol=form.scuola.options[form.scuola.options.selectedIndex].value;
self.location='/index.php?option=com_chronoforms5&chronoform=dettagli_viaggio&scuola=' + scuol ;
}
function reload(form)
{
var prog=form.progetto.options[form.progetto.options.selectedIndex].value;
var ann=form.anno.options[form.anno.options.selectedIndex].value;
self.location='/index.php?option=com_chronoforms5&chronoform=dettagli_viaggio&progetto=' + prog + '&anno=' + ann;
}
Grazie
dmiao83
-
Buon giorno... ho provato con l'ausilio di ajax... il secondo dropdown si aggiorna se seleziono una voce nel primo dropdown ma, sfortunatamente non si popola di valori.
Nel 1° dropdown in events ho: ON != (campo vuoto) Set Dynamic options progetto ajax
On Load
DB read 1°dropdown (scuola) : modelid: scuole fields: uniq_id, nome
On ajax
DB read 2°dropdown (progetto): modelid: prog fields: id_scuola, id_cod conditions:
<?php return array('prog.id_scuola' => $form->data ['scuole.uniq_id']); ?>
Custom code:
<?php
$results = array();
$results[] = 'Select';
foreach ($form->data['progetto'] as $v) {
$results[$v['id_scuola']] = $v['id_cod'];
}
echo json_encode($results);
?>
Se seleziono un valore in scuola... in progetto ho solo la voce Select
Grazie
dmiao83
-
Missione compiuta... bisogna stare molto attenti nelle condizioni ne nei value key dei dropdown...
Scrivo la soluzione per maggiore chiarezza.
Nel 1° dropdown
Field ID & Nome: scuola
Data Pach: scuole
Value Key: uniq_id
Text key: nome
events: ON != (campo vuoto) Set Dynamic options progetto ajax
Nel 2° dropdown
Field ID & Nome: progetto
Data Pach: prog
Value Key: id_scuola
Text key: id_cod
On Load
DB read 1°dropdown (scuola) : modelid: scuole fields: uniq_id, nome
On ajax
DB read 2°dropdown (progetto): modelid: prog fields: id_scuola, id_cod conditions:
<?php return array('prog.id_scuola' => $form->data['scuola']); ?>
Custom code:
<?php
$results = array();
$results[] = 'Seleziona un progetto';
foreach ($form->data['prog'] as $v) {
$results[$v['id_cod']] = $v['id_cod'];
}
echo json_encode($results);
?>
Saluti
dmiao83