Back to top

Autore Topic: [RISOLTO] problema con dropdown collegati chronoformV5  (Letto 1695 volte)

Offline dmiao83

  • Esploratore
  • **
  • Post: 75
  • Sesso: Maschio
    • Mostra profilo
Buon pomeriggio
prendendo spunto da questo post 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
Codice: [Seleziona]
<?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">&nbsp;</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">&nbsp;</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">&nbsp;</div>
</div>


Codice JavaScript inserito in Setup Load JavaScript
Codice: [Seleziona]
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
« Ultima modifica: 05 Gen 2015, 19:07:36 da dmiao83 »

Offline dmiao83

  • Esploratore
  • **
  • Post: 75
  • Sesso: Maschio
    • Mostra profilo
Re:problema con dropdown collegati chronoformV5
« Risposta #1 il: 05 Gen 2015, 12:05:13 »
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:
Codice: [Seleziona]
<?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

Offline dmiao83

  • Esploratore
  • **
  • Post: 75
  • Sesso: Maschio
    • Mostra profilo
Re:[RISOLTO] problema con dropdown collegati chronoformV5
« Risposta #2 il: 05 Gen 2015, 19:19:21 »
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:
Codice: [Seleziona]
<?php return array('prog.id_scuola' => $form->data['scuola']); ?>
Custom code:
Codice: [Seleziona]
<?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

 



Web Design Bolzano Kreatif