Joomla.it Forum

Componenti per Joomla! => Gestione Form => : vales 19 Feb 2010, 00:43:02

: Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 19 Feb 2010, 00:43:02
Uno dei problemi da risolvere in un form è spesso il riempimento di caselle dropdown con i valori memorizzati in tabelle di database. Spesso insieme a questa necessità c'è anche quella che la seconda casella dropdown sia in funzione della scelta operata nella prima casella.

Esempio di questo sono il valori delle sezioni e categorie di Joomla dove le seconde appartengono ad una sezione oppure il caso classico di provincie e comuni.

In questi casi occorre che nella prima casella compiuta la scelta della sezione o provincia e nella seconda casella siano resi disponibili i valori delle categorie appartenenti alla sezione oppure i comuni appartenenti alla provincia.

Si può fare questa cosa il vari modi con l'uso misto di PHP, javascript o Ajax. Dopo aver ricercato a giro varie soluzioni ho optato per questa, adattata a Chonoforms, che mi sembra molto flessibile e gestibile in varie varianti.

Si tratta di un codice Javascript generato con l'aiuto di PHP per le parti dinamiche che variano a seconda della scelta.
Il codici seguenti sono stati collaudati sia con Chronoforms e con Chronoconnectivity in alcune applicazioni che ho realizzato (es. Albo Pretorio On Line discusso in altro topic del forum).

Ecco il blocchi di codice funzionanti per le tabelle sezioni e categorie di Joomla, ma che potranno essere adattati ad altri casi.

Codice da inserire nella sezione Form Html

:
<!-- inizio codice campi form -->

<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Sezioni</label>
           
<select name="id_sezione"  onfocus="fillCategory();" onChange="SelectCategoria();" class="cf_inputbox validate-selection"  ><Option value="">Seleziona</option>

</select> Categorie

       <select id="id_categoria" name="categoria" class="cf_inputbox validate-selection" ><Option value="">Seleziona</option>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>



<div class="form_item">
  <div class="form_element cf_button">
    <input value="Invia" name="button_1" type="submit" /><input type="reset" name="reset" value="Reset"/>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>


Codice da inserire nella sezione Form Javascript

:
<?php
//questo è il codice da inserire nella TAB Form Code sezione javascript 

echo "function fillCategory(){ ";
 
// questa funzione è usata per riempire le sezioni al caricamento 

echo "removeAllOptions(document.ChronoContact_nome_vostro_form.id_sezione);";


$db =& JFactory::getDBO();
$query "
    SELECT `id`,`title`
    FROM `#__sections`
    ORDER BY `title` "
;
    
$db->setQuery($query);
    
$nomes $db->loadAssocList();
    
      foreach ( 
$nomes as $nt1 ) {
       echo 
"\n addOption(document.ChronoContact_nome_vostro_form.id_sezione, '".$nt1['id']."', '".$nt1['title']."'); ";
      
      }
      
echo 
"\n}"// fine della funzione Javascript - end of JS function
?>



function SelectCategoria(){
// Funzione chiamata dopo la selezione della Sezione

removeAllOptions(document.ChronoContact_nome_vostro_form.id_categoria);
//addOption(document.ChronoContact_nome_vostro_form.id_categoria, "", "Seleziona", "");

// Raccoglie tutti gli elementi della categoria per id

<?php
    
    $query
"
           SELECT distinct(id) FROM `#__sections`"
;
           
$db->setQuery($query);
       
$nomes $db->loadAssocList();
           
$nome_options "";
                                              
// inizio ciclo sezioni
               
foreach ( $nomes as $nt2 ) {
       
             echo 
"\n if(document.ChronoContact_nome_vostro_form.id_sezione.value == '".$nt2['id']."'){ ";
     
      
$query"
         SELECT `id`,`title` FROM `#__categories` WHERE `section` ='"
.$nt2['id']."' ORDER BY `title`" ;
         
$db->setQuery($query);
     
$nomes $db->loadAssocList();
         
$nome_options "";
                                               
//inizio ciclo categorie
               
foreach ( $nomes as $nt3 ) {

echo 
"\n addOption(document.ChronoContact_nome_vostro_form.id_categoria,'".$nt3['id']."', '".$nt3['title']."'); ";

// fine ciclo categorie
echo "\n}"// fine della if Javascript 

// fine loop sezioni
?>


}
// fine della funzione javascripts
//////////////////

function removeAllOptions(selectbox)
{
    var i;
    for(i=selectbox.options.length-1;i>=1;i--)
    {
        selectbox.options[i]=null;
        //selectbox.remove(i);
    }
}


function addOption(selectbox, value, text )
{
    var optn = document.createElement("OPTION");
    optn.text = text;
    optn.value = value;

    selectbox.options.add(optn);
}



Il codice restituirà i valori id rispettivamente delle tabelle jos_sections e jos_categories nelle variabili del form id_sezione ed id_categoria che sono i campi name delle due caselle.

Il codice è commentato in alcune parti e credo sia facilmente comprensibile.
L'unica cosa da cambiare 6 volte è nome_vostro_form con il nome del form che sarà da voi creato.

Buon uso a tutti.

P.S. Verificato con Firefox, Internet Explorer e Crome.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 20 Feb 2010, 22:37:37
Inserite alcune modifiche al codice del precedente post per la compatibilità con Internet Explorer.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Papalla 28 Mar 2010, 09:55:55
Molto interessante. Dovrei risolvere la stessa cosa ma senza caricare i dati da DB.

Es: Il primo dropdown ha 3 valori: peso, misure, colori.
Il secondo dropdown deve contenere valori a seconda della scelta fatta nel primo.
Se nel primo si è scelto "peso", il secondo conterrà "Kg e Gr"; se è stato scelto "misure", conterrà "metri e cm.", se "colori" conterrà "bianco, rosso, verde".
Non è possibile inserire queste info direttamente nel codice form anzichè nel DB?
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: fmburkina 10 Jun 2010, 09:10:57
Grazie, appena possibile lo provo
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 10 Jun 2010, 19:01:10
Molto interessante. Dovrei risolvere la stessa cosa ma senza caricare i dati da DB.

Es: Il primo dropdown ha 3 valori: peso, misure, colori.
Il secondo dropdown deve contenere valori a seconda della scelta fatta nel primo.
Se nel primo si è scelto "peso", il secondo conterrà "Kg e Gr"; se è stato scelto "misure", conterrà "metri e cm.", se "colori" conterrà "bianco, rosso, verde".
Non è possibile inserire queste info direttamente nel codice form anzichè nel DB?

Chi non vuole utilizzare il database uno sguardo al codice javascripts creato nella pagina sorgente credo sia più semplice di una lunga spiegazione.

Il seguente codice genera 3 sezioni con varie categorie per sezione.

:
//questo è il codice da inserire nella TAB Form Code sezione javascript

function fillCategory(){
removeAllOptions(document.getElementById('ChronoContact_atto_10').cod_sezione);


 addOption(document.getElementById('ChronoContact_atto_10').cod_sezione, '1', 'sezione 1');
 addOption(document.getElementById('ChronoContact_atto_10').cod_sezione, '2', 'sezione 2');
 addOption(document.getElementById('ChronoContact_atto_10').cod_sezione, '3', 'sezione 3');
}

function SelectSubCat(){
// Funzione chiamata dopo la selezione della Sezione - ON or after selection of category this function will work

removeAllOptions(document.getElementById('ChronoContact_atto_10').cod_categoria);
//addOption(document.getElementById('ChronoContact_atto_10').cod_categoria, "", "Seleziona", "");

// Raccoglie tutti gli elementi della categoria per id - Collect all element of subcategory for various id


 if (document.getElementById('ChronoContact_atto_10').cod_sezione.value == '1'){
 addOption(document.getElementById('ChronoContact_atto_10').cod_categoria,'1', 'categoria 1 sez 1');
 addOption(document.getElementById('ChronoContact_atto_10').cod_categoria,'2', 'categoria 2 sez 1');
 addOption(document.getElementById('ChronoContact_atto_10').cod_categoria,'6', 'categoria 3 sez 1');
 addOption(document.getElementById('ChronoContact_atto_10').cod_categoria,'7', 'categoria 4 sez 1');
}
 if (document.getElementById('ChronoContact_atto_10').cod_sezione.value == '2'){
 addOption(document.getElementById('ChronoContact_atto_10').cod_categoria,'3', 'categoria 1 sez 2');
 addOption(document.getElementById('ChronoContact_atto_10').cod_categoria,'4', 'categoria 2 sez 2');
 addOption(document.getElementById('ChronoContact_atto_10').cod_categoria,'5', 'categoria 3 sez 2');
}
 if (document.getElementById('ChronoContact_atto_10').cod_sezione.value == '3'){
 addOption(document.getElementById('ChronoContact_atto_10').cod_categoria,'9', 'categoria 1 sez 3');
 addOption(document.getElementById('ChronoContact_atto_10').cod_categoria,'10', 'categoria 2 sez 3');
}



}
//////////////////

function removeAllOptions(selectbox)
{
   var i;
   for(i=selectbox.options.length-1;i>=1;i--)
   {
      selectbox.options[i]=null;
      //selectbox.remove(i);
   }
}


function addOption(selectbox, value, text )
{
   var optn = document.createElement("option");
       
        optn.text = text;
   optn.value = value;

   selectbox.options.add(optn);
          //selectbox.appendChild(optn,where);

}

Anche qui essendo il codice dedicato al mio form di nome atto_10 dovete sostituire atto_10 con il nome del vostro form ed ovviamente anche i nomi dei campi in Form HTML  del primo posto vanno sostituiti con i vostri.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: neo_revolution 11 Sep 2010, 12:32:11
Ragazzi chi mi può aiutare non sono riuscito a farlo funzionare anche mettendo gli stessi nome.
vi sarei molto grato se mi aiutaste
grazi
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 11 Sep 2010, 15:07:14
C'erano delle imprecisioni nella versione senza uso del database.

Le versioni dei codici corrette sono queste:

Codice da inserire in Form HTML
:
<!-- inizio codice campi form -->

<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Sezioni</label>
           
<select id="id_sezione" name="sezione" onfocus="fillCategory();" onChange="SelectCategoria();" class="cf_inputbox validate-selection"  ><Option value="">Seleziona</option>

</select> Categorie

       <select id="id_categoria" name="categoria" class="cf_inputbox validate-selection" ><Option value="">Seleziona</option>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>



<div class="form_item">
  <div class="form_element cf_button">
    <input value="Invia" name="button_1" type="submit" /><input type="reset" name="reset" value="Reset"/>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

codice da inserire in Form Javascript
:
//questo è il codice da inserire nella TAB Form Code sezione javascript

function fillCategory(){
removeAllOptions(document.getElementById('ChronoContact_provadropdown').sezione);


 addOption(document.getElementById('ChronoContact_provadropdown').sezione, '1', 'sezione 1');
 addOption(document.getElementById('ChronoContact_provadropdown').sezione, '2', 'sezione 2');
 addOption(document.getElementById('ChronoContact_provadropdown').sezione, '3', 'sezione 3');
}

function SelectCategoria(){
// Funzione chiamata dopo la selezione della Sezione - ON or after selection of category this function will work

removeAllOptions(document.getElementById('ChronoContact_provadropdown').categoria);
//addOption(document.getElementById('ChronoContact_provadropdown').categoria, "", "Seleziona", "");

// Raccoglie tutti gli elementi della categoria per id - Collect all element of subcategory for various id


 if (document.getElementById('ChronoContact_provadropdown').sezione.value == '1'){
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'1', 'categoria 1 sez 1');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'2', 'categoria 2 sez 1');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'6', 'categoria 3 sez 1');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'7', 'categoria 4 sez 1');
}
 if (document.getElementById('ChronoContact_provadropdown').sezione.value == '2'){
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'3', 'categoria 1 sez 2');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'4', 'categoria 2 sez 2');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'5', 'categoria 3 sez 2');
}
 if (document.getElementById('ChronoContact_provadropdown').sezione.value == '3'){
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'9', 'categoria 1 sez 3');
 addOption(document.getElementById('ChronoContact_provadropdown').categoria,'10', 'categoria 2 sez 3');
}



}
//////////////////

function removeAllOptions(selectbox)
{
   var i;
   for(i=selectbox.options.length-1;i>=1;i--)
   {
      selectbox.options[i]=null;
      //selectbox.remove(i);
   }
}


function addOption(selectbox, value, text )
{
   var optn = document.createElement("option");
       
        optn.text = text;
   optn.value = value;

   selectbox.options.add(optn);
          //selectbox.appendChild(optn,where);

}


Anche in questo caso il codice è dedicato al mio form di nome provadropdown, quindi dovete sostituire provadropdown con il nome del vostro form ed ovviamente anche i nomi dei campi in Form HTML  e Form javascript vanno sostituiti con i vostri.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Papalla 11 Sep 2010, 16:45:43
Grazie Vales, sei fantastico !
: Problema comuni regioni e provincie
: francesco87 16 Sep 2010, 12:51:09
Ciao vales, sto preparando una form per l'inserimento di un indirizzo . Ora ho tre dropdown che devo prendere dal database regioni province e comuni. Ho seguito il tuo codice sembra che ho fatto tutto correttamnte il javascript è presente anche nella pagina che viene renderizzata ma non vedo nulla ti allego il codice .

la parte che sta nella sezione html


:
<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Regione</label>
    <select onfocus="fillCategory();"  onChange="SelectRegione();" class="form" id="id_regione"   name="id_regione">
    <option value="">Seleziona</option>
     
    </select>
   
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Provincia</label>
    <select class="cf_inputbox validate-selection" id="provincia" size="1" title=""  name="provincia">
    <option value="">Seleziona</option>
     
    </select>
   
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Comune</label>
    <select class="cf_inputbox validate-selection" id="select_14" size="1" title=""  name="comune">
    <option value="">Seleziona</option>
     
    </select>
   
  </div>
  <div class="cfclear">&nbsp;</div>
</div>


nella sezione javascrip ho inserito

:
<?php
//questo è il codice da inserire nella TAB Form Code sezione javascript 

echo "\n function fillCategory(){ ";
echo 
"\n removeAllOptions(document.getElementById('ChronoContact_personale_segi').id_regione);";
 
// questa funzione è usata per riempire le sezioni al caricament

$db =& JFactory::getDBO();
$query "
    SELECT `idregione`,`nomeregione`
    FROM `regioni`
    ORDER BY `nomeregione` "
;
    
$db->setQuery($query);
    
$nomes $db->loadAssocList();
    
      foreach ( 
$nomes as $nt1 ) {
      
      echo 
"\n addOption(document.ChronoContact_personale_segi.i d_regione, '".$nt1['idregione']."', '".$nt1['nomeregione']."'); ";
      }
      
echo 
"\n}"// fine della funzione Javascript - end of JS function
?>

function SelectRegione(){
// Funzione chiamata dopo la selezione della Sezione

//removeAllOptions(document.ChronoContact_personale_segi.i d_regione);
//addOption(document.ChronoContact_personale_segi.r egione, "", "Seleziona", "");

// Raccoglie tutti gli elementi della categoria per id

<?php
    
    $query
"
           SELECT distinct(idregione) FROM `regioni`"
;
           
$db->setQuery($query);
       
$nomes $db->loadAssocList();
           
$nome_options "";
                                              
// inizio ciclo sezioni
               
foreach ( $nomes as $nt2 ) {
       
             echo 
"\n if(document.ChronoContact_personale_segi.i d_regione.value == '".$nt2['idregione']."'){ ";
     
      
$query"
         SELECT `idprovincia`,`nomeprovincia` FROM `province` WHERE `idregione` ='"
.$nt2['idregione']."' ORDER BY `nomeprovincia`" ;
         
$db->setQuery($query);
     
$nomes $db->loadAssocList();
         
$nome_options "";
                                               
//inizio ciclo categorie
               
foreach ( $nomes as $nt3 ) {

echo 
"\n addOption(document.ChronoContact_personale_segi.p rovincia,'".$nt3['idprovincia']."', '".$nt3['nomeprovincia']."'); ";

// fine ciclo categorie
echo "\n}"// fine della if Javascript 

// fine loop sezioni
?>


}
// fine della funzione javascripts
//////////////////

function removeAllOptions(selectbox)
{
    var i;
    for(i=selectbox.options.length-1;i>=1;i--)
    {
        selectbox.options=null;
        //selectbox.remove(i);
    }
}


function addOption(selectbox, value, text )
{
    var optn = document.createElement("OPTION");
    optn.text = text;
    optn.value = value;

    selectbox.options.add(optn);
}

tutte le query funzionano a dovere ma non vedo nulla. Spero che tu mi possa aiutare perchè non riesco a capire dove sbaglio.

Grazie infinite in anticipo;)
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Rikk.58 04 Oct 2010, 17:24:42
M'interessa pure a me se vai avanti aggiorna il topic. Grazie
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 17 Oct 2010, 06:39:54
@francesco87 benvenuto in Joomla,
c'è voluto un po' ma ho trovato una soluzione, se hai già risolto bene lo stesso e servirà ad altri.

Ho cambiato completamente impostazione. Questa soluzione richiede di avere disponibili delle tabella in sql di regioni provincie e comuni (se cercate per regioni provincie comuni sql le trovate).

Questo il codice per Form HTML
:
<?php

$db 
=& JFactory::getDBO(); 

$query "
  SELECT  `id`, `regione`
   FROM `#__regioni` ORDER BY `regione`"


$db->setQuery($query);
$nomes $db->loadAssocList();
$option_reg="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$regione $v['regione'];
  if (
$id==JRequest::getVar('regione',0,'GET','INT')) {
  
$selected="selected=\"selected\"";
  }

$option_reg.="<option value=\"$id\" $selected>$regione</option>\n";

}


$query "
  SELECT  `id`, `provincia`
   FROM `#__province` WHERE `id_regione`="
.JRequest::getVar('regione',0,'GET','INT')." ORDER BY `provincia`"

$db->setQuery($query);
$nomes $db->loadAssocList();
$option_pro="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$province $v['provincia'];
  if (
$id==JRequest::getVar('provincia',0,'GET','INT')) {
  
$selected="selected='selected'";
  }

$option_pro.="<option value=\"$id\" $selected>$province</option>\n";

}


$query "
  SELECT  `id`, `comune`
   FROM `#__comuni` WHERE `id_provincia`="
.JRequest::getVar('provincia',0,'GET','INT')." ORDER BY `comune`"

$db->setQuery($query);
$nomes $db->loadAssocList();
$option_com="";
  foreach ( 
$nomes as $v ) {
  
$id =  $v['id'];
  
$comune $v['comune'];

$option_com.="<option value=\"$id\" $selected>$comune</option>\n";

}

?>



<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Regioni</label>
           
<select id="regione" name="regione"  onchange="province(this.form);" class="cf_inputbox validate-selection"  ><option value="" selected="selected">Seleziona</option>

<?php echo $option_reg?>

</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">Provincie</label>

       <select id="provincia" name="provincia" onchange="reload(this.form);" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_pro?>
       
</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">Comuni</label>

       <select id="comune" name="comune" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_com?>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>

questo il codice per Form Javascript
:
function province(form)
{
var reg=form.regione.options[form.regione.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=reg_prov_com&regione=' + reg ;
}

function reload(form)
{
var prov=form.provincia.options[form.provincia.options.selectedIndex].value;
var reg=form.regione.options[form.regione.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=reg_prov_com&provincia=' + prov + '&regione=' + reg;
}

Ovviamente vanno adattati i nomi delle tabelle ed i nomi dei campi   in caso di differenze rispetto a quelli proposti nell'esempio.

le mie tabelle sono costruite così:

:
CREATE TABLE `regioni` (
  `id` int(11) unsigned NOT NULL,
  `regione` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;


CREATE TABLE `province` (
  `id` int(10) unsigned NOT NULL,
  `id_regione` int(10) unsigned NOT NULL,
  `provincia` text NOT NULL,
  `sigla` varchar(2) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;


CREATE TABLE `comuni` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `id_regione` int(10) unsigned NOT NULL,
  `id_provincia` int(10) unsigned NOT NULL,
  `comune` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: oracledba 21 Oct 2010, 10:32:30
Al posto di 3 tabelle ho una sola tabella che contiene tutte le informazioni.
Vorrei far scegliere il cap all'utente e senza dover fare una nuova query  riempire il campo dropdown città e quello provincia.
Si può fare?

Grazie
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 21 Oct 2010, 20:16:35
se hai tutto in una tabella dovresti usare adattandolo solo il codice sia php che html come quello delle regioni.

Dovresti ,al secondo passaggio quando il form ricarica i valori, sulla base della scelta precedente, assegnare i valori città e provincia a dei campi nascosti del form.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: oracledba 21 Oct 2010, 23:07:48
Quindi il codice java non devo usarlo.
Faccio qualche prova.
Possibile che nessuno ha avuto la neessità di fare un form di registrazione dove l'utente deve compilare un'anagrafica?
Suggerisco ai Guru di creare un plugin o un codice standard per queste cose.
Grazie
Carlo
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 22 Oct 2010, 00:53:42
Si devi usarlo perchè dopo la prima scelta il javascript rilancia il form e carica i campi selezionati.

Ovviamente basta quello della select regioni.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: oracledba 11 Nov 2010, 12:13:15
Dopo averci sbattuta la testa per giorni sono arrivato a questa soluzione perchè non riesco a far funzionare i campi hiden

:
<?php
/*-- inizio codice campi form -*/


$db =& JFactory::getDBO(); 

/*-- collegamento al DB -*/
/*-- ricerca stato -*/

$query "
  SELECT  `id`, `name`
   FROM `#__stati` ORDER BY `name`"




$db->setQuery($query);
$nomes $db->loadAssocList();
$option_sta="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$stato $v['name'];

  if (
JRequest::getVar('stato',0,'GET','INT')==null&&$id==353){
     
$selected="selected";
  } else if (
$id==JRequest::getVar('stato',0,'GET','INT')) {
     
$selected="selected";
  }

$option_sta.="<option value=\"$id\" $selected>$stato</option>\n";

}

/*-- ricerca regione -*/

$query "
  SELECT  `id`, `name`
   FROM `#__regione` ORDER BY `name`"




$db->setQuery($query);
$nomes $db->loadAssocList();
$option_reg="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$regione $v['name'];
  if (
$id==JRequest::getVar('regione',0,'GET','INT')) {
  
$selected="selected=\"selected\"";
  }

$option_reg.="<option value=\"$id\" $selected>$regione</option>\n";

}

/*-- ricerca provincia -*/

$query "
  SELECT  `id`, `name`
   FROM `#__provincia`  ORDER BY `name`"


$db->setQuery($query);
$nomes $db->loadAssocList();
$option_pro="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$provincia $v['name'];
  if (
$id==JRequest::getVar('provincia',0,'GET','INT')) {
  
$selected="selected='selected'";
  }

$option_pro.="<option value=\"$id\" $selected>$provincia</option>\n";

}

/*-- ricerca provincia -*/


$query "

  SELECT  `id`, `name`
   FROM `#__comuni` WHERE `provincia_id`="
.JRequest::getVar('provincia',0,'GET','INT')." ORDER BY `name`"


$db->setQuery($query);
$nomes $db->loadAssocList();
$option_com="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$comune $v['name'];
  if (
$id==JRequest::getVar('comune',0,'GET','INT')) {
  
$selected="selected='selected'";}

$option_com.="<option value=\"$id\" $selected>$comune</option>\n";


}
/*-- ricerca comune -*/

$query "

 SELECT  `id`, `cap`
   FROM `#__localita` WHERE `comune_id`="
.JRequest::getVar('comune',0,'GET','INT')." GROUP BY `cap`"

$db->setQuery($query);
$nomes $db->loadAssocList();
$option_cap="";
  foreach ( 
$nomes as $v ) {
  
$id =  $v['id'];
  
$cap $v['cap'];
$option_cap.="<option value=\"$id\" $selected>$cap</option>\n";

}
/*-- ricerca cap -*/


?>


<!-- fine codice php -->


<div class="form_item">
  <div class="form_element cf_heading">
    <h1 class="cf_text">Scheda Anagrafica </h1>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_multiholder" style="margin-left:0px!important;">
  <label class="cf_label" style="display: none;">tab1</label>
    <table cellspacing="0" cellpadding="0" width="95%" title="" class="multi_container">
        <tbody width="100%">
            <tr width="100%">
                <td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">Cognome </label>
    <input class="cf_inputbox" maxlength="40" size="10" title="" id="text_3" name="cognome" type="text" value="<?echo JRequest::getVar('cognome','','GET','STRING')  ?>"/>
 
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>
<td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">Nome</label>
    <input class="cf_inputbox" maxlength="40" size="10" title="" id="text_5" name="nome" type="text" value="<?echo JRequest::getVar('nome','','GET','STRING')  ?>"/>
 
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>

            </tr>
        </tbody>
    </table>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_datetimepicker">
    <label class="cf_label" style="width: 80px;">Nato/a il</label>
    <input class="cf_datetime" title="" size="1" id="date_34" name="date_34" type="text" value="<?echo JRequest::getVar('date_34','','GET','STRING')  ?>"/>
   
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<!-- disegno primo dropdown -->
<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label" style="width: 80px;" >Stato</label>
           
<select id="stato" name="stato"  onchange="regione(this.form);" class="cf_inputbox validate-selection"  ><option value="" selected="selected">Seleziona</option>

<?php echo $option_sta?>

</select>

 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>
<!-- fine disegno primo dropdown -->


<!-- disegno secondo dropdown -->

<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Provincia</label>

       <select id="provincia" name="provincia" onchange="reload(this.form);" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_pro?>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>

<!-- fine disegno secondo dropdown -->

<!-- disegno terzo dropdown -->


<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label" style="width: 80px;">Comune</label>

       <select id="comune" name="comune" onchange="reload(this.form);" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_com?>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>

<!-- fine disegno terzo dropdown -->

<!-- disegno quarto dropdown -->


<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">cap</label>

       <select id="cap" name="cap" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_cap?>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>


<!-- fine disegno quarto dropdown -->


<div class="form_item">
  <div class="form_element cf_multiholder" style="margin-left:0px!important;">
  <label class="cf_label" style="display: none;">tab2</label>
    <table cellspacing="0" cellpadding="0" width="95%" title="" class="multi_container">
        <tbody width="100%">
            <tr width="100%">
                <td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 80px;">Altezza</label>
    <select class="cf_inputbox" id="select_16" size="1" title=""  name="altezza">
    <option value="">seleziona dalla lista</option>
      <option value="150">150</option>
<option value="151">151</option>
<option value="152">152</option>
<option value="153">153</option>
<option value="154">154</option>
<option value="155">155</option>
<option value="156">156</option>
<option value="157">157</option>
<option value="158">158</option>
<option value="159">159</option>
<option value="160">160</option>
<option value="161">161</option>
<option value="162">162</option>
<option value="163">163</option>
<option value="164">164</option>
<option value="165">165</option>
<option value="166">166</option>
<option value="167">167</option>
<option value="168">168</option>
<option value="169">169</option>
<option value="170">170</option>
<option value="171">171</option>
<option value="172">172</option>
<option value="173">173</option>
<option value="174">174</option>
<option value="175">175</option>
<option value="176">176</option>
<option value="177">177</option>
<option value="178">178</option>
<option value="179">179</option>
<option value="180">180</option>
<option value="181">181</option>
<option value="182">182</option>
<option value="183">183</option>
<option value="184">184</option>
<option value="185">185</option>
<option value="186">186</option>
<option value="187">187</option>
<option value="188">188</option>
<option value="189">189</option>
<option value="190">190</option>
<option value="191">191</option>
<option value="192">192</option>
<option value="193">193</option>
<option value="194">194</option>
<option value="195">195</option>
<option value="196">196</option>
<option value="197">197</option>
<option value="198">198</option>
<option value="199">199</option>
<option value="200">200</option>
<option value="201">201</option>
<option value="202">202</option>
<option value="203">203</option>
<option value="204">204</option>
<option value="205">205</option>
<option value="206">206</option>
<option value="207">207</option>
<option value="208">208</option>
<option value="209">209</option>
<option value="210">210</option>
<option value="211">211</option>
<option value="212">212</option>
<option value="213">213</option>
<option value="214">214</option>
<option value="215">215</option>

    </select>
    <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Altezza :: seleziona la tua altezza in cm.</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>
<td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 80px;">Peso</label>
    <select class="cf_inputbox" id="select_17" size="1" title=""  name="peso">
    <option value="">seleziona dalla lista</option>
      <option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
<option value="60">60</option>
<option value="61">61</option>
<option value="62">62</option>
<option value="63">63</option>
<option value="64">64</option>
<option value="65">65</option>
<option value="66">66</option>
<option value="67">67</option>
<option value="68">68</option>
<option value="69">69</option>
<option value="70">70</option>
<option value="71">71</option>
<option value="72">72</option>
<option value="73">73</option>
<option value="74">74</option>
<option value="75">75</option>
<option value="76">76</option>
<option value="77">77</option>
<option value="78">78</option>
<option value="79">79</option>
<option value="80">80</option>
<option value="81">81</option>
<option value="82">82</option>
<option value="83">83</option>
<option value="84">84</option>
<option value="85">85</option>
<option value="86">86</option>
<option value="87">87</option>
<option value="88">88</option>
<option value="89">89</option>
<option value="90">90</option>
<option value="91">91</option>
<option value="92">92</option>
<option value="93">93</option>
<option value="94">94</option>
<option value="95">95</option>
<option value="96">96</option>
<option value="97">97</option>
<option value="98">98</option>
<option value="99">99</option>
<option value="100">100</option>
<option value="101">101</option>
<option value="102">102</option>
<option value="103">103</option>
<option value="104">104</option>
<option value="105">105</option>
<option value="106">106</option>
<option value="107">107</option>
<option value="108">108</option>
<option value="109">109</option>
<option value="110">110</option>
<option value="111">111</option>
<option value="112">112</option>
<option value="113">113</option>
<option value="114">114</option>
<option value="115">115</option>
<option value="116">116</option>
<option value="117">117</option>
<option value="118">118</option>
<option value="119">119</option>
<option value="120">120</option>
<option value="121">121</option>
<option value="122">122</option>
<option value="123">123</option>
<option value="124">124</option>
<option value="125">125</option>
<option value="126">126</option>
<option value="127">127</option>
<option value="128">128</option>
<option value="129">129</option>
<option value="130">130</option>
<option value="131">131</option>
<option value="132">132</option>
<option value="133">133</option>
<option value="134">134</option>
<option value="135">135</option>
<option value="136">136</option>
<option value="137">137</option>
<option value="138">138</option>
<option value="139">139</option>
<option value="140">140</option>
<option value="141">141</option>
<option value="142">142</option>
<option value="143">143</option>
<option value="144">144</option>
<option value="145">145</option>
<option value="146">146</option>
<option value="147">147</option>
<option value="148">148</option>
<option value="149">149</option>
<option value="150">150</option>

    </select>
    <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Peso :: seleziona il tuo peso in kg</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>
<td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 80px;">Gruppo s.</label>
    <select class="cf_inputbox" id="select_18" size="1" title=""  name="gruppo_sangue">
    <option value="">seleziona dalla lista</option>
      <option value="Gruppo 0 Rh-">Gruppo 0 Rh-</option>
<option value="Gruppo 0 Rh+">Gruppo 0 Rh+</option>
<option value="Gruppo A Rh-">Gruppo A Rh-</option>
<option value="Gruppo A Rh+">Gruppo A Rh+</option>
<option value="Gruppo B Rh-">Gruppo B Rh-</option>
<option value="Gruppo B Rh+">Gruppo B Rh+</option>
<option value="Gruppo AB Rh-">Gruppo AB Rh-</option>
<option value="Gruppo AB Rh+">Gruppo AB Rh+</option>

    </select>
    <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Gruppo s. :: seleziona il tuo gruppo sanguigno</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>

            </tr>
        </tbody>
    </table>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_multiholder" style="margin-left:0px!important;">
  <label class="cf_label" style="display: none;">tab3</label>
    <table cellspacing="0" cellpadding="0" width="95%" title="" class="multi_container">
        <tbody width="100%">
            <tr width="100%">
                <td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Patente civile</label>
    <select class="cf_inputbox" id="select_13" size="1" title=""  name="select_13">
    <option value="">seleziona dalla lista</option>
      <option value="Nessuna">Nessuna</option>
<option value="Patente A1">Patente A1</option>
<option value="Patente A">Patente A</option>
<option value="Patente B">Patente B</option>
<option value="Patente B+E">Patente B+E</option>
<option value="Patente C">Patente C</option>
<option value="Patente C+E">Patente C+E</option>
<option value="Patente D">Patente D</option>
<option value="Patente D+E">Patente D+E</option>

    </select>
    <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Patente civile :: seleziona il tipo di patente civile in tuo possesso</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>
<td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Eventuali abilitazioni</label>
    <select class="cf_inputbox" id="select_14" size="1" title=""  name="select_14">
    <option value="">seleziona dalla lista</option>
      <option value="nessuna">nessuna</option>
<option value="C.I.G.C.">C.I.G.C.</option>
<option value="C.A.P. KA">C.A.P. KA</option>
<option value="C.A.P. KB">C.A.P. KB</option>
<option value="C.Q.C.">C.Q.C.</option>
<option value="C.F.P.">C.F.P.</option>
<option value="A.D.R.">A.D.R.</option>
<option value="altro tipo">altro tipo</option>

    </select>
    <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Eventuali abilitazioni :: Abilitazioni alla guida</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>

            </tr>
        </tbody>
    </table>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_multiholder" style="margin-left:0px!important;">
  <label class="cf_label" style="display: none;">tab4</label>
    <table cellspacing="0" cellpadding="0" width="95%" title="" class="multi_container">
        <tbody width="100%">
            <tr width="100%">
                <td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">Casa</label>
    <input class="cf_inputbox validate-number" maxlength="20" size="10" title="" id="text_16" name="text_16" type="text" />
  <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Casa :: numero di telefono comprensivo di prefisso</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>
<td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">Ufficio</label>
    <input class="cf_inputbox validate-number" maxlength="20" size="10" title="" id="text_18" name="text_18" type="text" />
  <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Ufficio :: digita il numero di telefono del posto del tuo ufficio comprensivo di prefisso</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>
<td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">Cellulare 1</label>
    <input class="cf_inputbox validate-number" maxlength="20" size="10" title="" id="text_19" name="text_19" type="text" />
  <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Cellulare 1 :: digita il numero del tuo cellulare personale</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>
<td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">Cellulare 2</label>
    <input class="cf_inputbox validate-number" maxlength="20" size="10" title="" id="text_20" name="text_20" type="text" />
  <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Cellulare 2 :: digita il numero del tuo cellulare di servizio</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>
<td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">Altro</label>
    <input class="cf_inputbox validate-digits" maxlength="20" size="10" title="" id="text_28" name="text_28" type="text" />
  <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Altro :: digita il numero di altri telefoni su cui rintracciarti</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>

            </tr>
        </tbody>
    </table>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_text"> <span class="cf_text">Residenza</span> </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_multiholder" style="margin-left:0px!important;">
  <label class="cf_label" style="display: none;">tab5</label>
    <table cellspacing="0" cellpadding="0" width="95%" title="" class="multi_container">
        <tbody width="100%">
            <tr width="100%">
                <td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">Provincia</label>
    <input class="cf_inputbox" maxlength="150" size="30" title="" id="text_23" name="text_23" type="text" />
  <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Provincia :: digita la provincia in cui si trova la tua abitazione</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>
<td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">Città</label>
    <input class="cf_inputbox" maxlength="150" size="30" title="" id="text_24" name="text_24" type="text" />
  <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Città :: digita la città in cui si trova la tua abitazione</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>

            </tr>
        </tbody>
    </table>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_multiholder" style="margin-left:0px!important;">
  <label class="cf_label" style="display: none;">tab6</label>
    <table cellspacing="0" cellpadding="0" width="95%" title="" class="multi_container">
        <tbody width="100%">
            <tr width="100%">
                <td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">Cap</label>
    <input class="cf_inputbox" maxlength="5" size="10" title="" id="text_29" name="text_29" type="text" />
  <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Cap :: digita il cap della tua città</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>
<td style="width: auto; vertical-align: middle; text-align: left;">
<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">Indirizzo</label>
    <input class="cf_inputbox required" maxlength="150" size="30" title="" id="text_22" name="text_22" type="text" />
  <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">Indirizzo :: digita l'indirizzo della tua abitazione</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</td>

            </tr>
        </tbody>
    </table>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 80px;">@mail</label>
    <input class="cf_inputbox" maxlength="150" size="30" title="" id="text_26" name="text_26" type="text" />
  <a class="tooltiplink" onclick="return false;"><img height="16" border="0" width="16" class="tooltipimg" alt="" src="components/com_chronocontact/css/images/tooltip.png"/></a>
<div class="tooltipdiv">@mail :: digita un indirizzo e-mail su cui invieremo le nostre comunicazioni</div>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_button">
    <input value="Conferma" name="button_2" type="submit" /><input type="reset" name="reset" value="Reset"/>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>


------------- Java

function regione(form)
{
var sta=form.stato.options[form.stato.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=modulo_cri_pag_1&stato=' + sta ;
}


function comune(form)
{
var com=form.provincia.options[form.provincia.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=modulo_cri_pag_1&provincia=' + pro ;
}



function reload(form)
{
var cognome=form.cognome.value;
var nome=form.nome.value;
var date_34=form.date_34.value;

var cap=form.cap.options[form.cap.options.selectedIndex].value;
var com=form.comune.options[form.comune.options.selectedIndex].value;
var prov=form.provincia.options[form.provincia.options.selectedIndex].value;
var sta=form.stato.options[form.stato.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=modulo_cri_pag_1&comune=' + com + '&stato=' + sta + '&provincia=' + prov + '&cap=' + cap + '&cognome=' + cognome + '&nome=' + nome + '&date_34=' + date_34;
}

funziona perfettamente ma la riga dell'url diventa lunghissima.
Come posso modificarlo per passare i campi del form in campi hiden?
Mi basta un esempio per il campo hiden ed uno per il campo div dove disegno il form.
Grazie
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 12 Nov 2010, 16:04:18
Un campo nascosto lo puoi definire così:

:
<input type="hidden" name="nome_campo" value="abc123" />

poi tieni conto che i valori trasmessi nell'URL sono di tipo GET mentre gli altri sono POST.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: oracledba 17 Nov 2010, 10:43:37
E' proprio il problema del POST e GET che non riesco a capire.
Vorrei evitare di passare tutto sulla riga dell'url e nello stesso tempo avere i campi a disposizione nel caso l'utente volesse tornare indietro nella pagina.
Il form che sto creando è appunto un multipagina che attiverò tramite l'apposita funzione di Chronoform.
Mi puoi fare un esempio pratico partendo dal mio codice su come dovrei modificare per non scrivere tutto sull'url?
Grazie 1000 Vales
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Franceschino 22 Nov 2010, 15:44:04
Salve, mi sembra di capire che avete già trattato il problema delle drop down list collegate (regioni, province, comuni). Io prendo le voci delle regioni province e comuni dall html e non dal db. Con due funzioncine javascript ho cercato di far uscire le province corrispondenti alla regione selezionata e i comuni per la provincia... ora la prima funzione nn dà problemi mentre quella per i comuni sì. Siccome sono nuovo di Joomla, di javascript e di php propbabilmente ci sono moooolte cose che ignoro.
Innanzitutto non capisco come si inseriscono le funzioni nel form javascript, se con la normale sintassi javascript per le funzioni o per forza con la addEvent che è una funzione che ho letto sul manuale di chronoForm.
Riporto il codice della funzione JS sperando che qualcuno mi possa aiutare. Grazie in anticipo  :)
ps. perchè alla fine della funzione chiude con le parentesi tonde e il ;  ?

$('provincia1').addEvent('blur', function() {
 var provincia1 = $('provincia1').value;
 var optgroup = 0;
 for ( var x = 1; x <= num_province; x++ ) {
 if ( provincia1 == ('pr_'+x).value ) {
   $('pr_'+x).disabled = false;
   $('pr_'+x).setStyle('display', 'block');
 } else {
  $('pr_'+x).disabled = true;
  $('pr_'+x).setStyle('display', 'none');
 }
}
});
});
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Franceschino 22 Nov 2010, 16:00:19
Inserisco anche l'html perchè altrimenti forse la cosa è un pò incomprensibile...

<div id='comune' class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 80px;">Comune</label>
    <select class="contentbox" id='comune1' name='comune1' style='width:160px;'>
       
         <optgroup label="" id="pr_1" disabled="disabled" >
        <option value='comuneA'>comuneA</option>
        <option value='comuneB'>comuneB</option>
        <option value='comuneC'>comuneC</option>
        <option value='comuneD'>comuneD</option>
        </optgroup>

        <optgroup label="" id="pr_2" disabled="disabled" >
        <option value='comuneE'>comuneE</option>
        <option value='comuneF'>comuneF</option>
        <option value='comundeG'>comuneG</option>
        <option value='comuneH'>comuneH</option>
        </optgroup>
         -
         - e così via per tutte le province
         -
      </select>
  </div>
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: danielino_bynight 25 Nov 2010, 21:53:04
Salve Ragazzi, ho letto il vosto interessantissimo topic e vorrei adattarlo alla mia situazione. Avrei la necessità di creare una form con i seguenti campi:

-giornata
-partita
-squadra
-giocatore
-voto
e infine i pulsanti per fare il submit e il reset.

Come è facile intuire è una form per l'inserimento del voto della prestazione di un giocatore in una data partita (e in aggiunta gli id del team e della giornata, intesa come Prima giornata del Campionato).
Ho a disposizione le seguenti tabelle:

jos_bl_matchday
jos_bl_match
jos_bl_team
jos_bl_player
jos_bl_vote (che ha come campi proprio p_id, t_id, m_id, md_id, vote + un campo chiamato mach_played sempre posto a 1 che mi serve per operazioni come la media o altro).

Vi posto la mia parte HTML dopo averla creata con il Wizard Form.

:
<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Giornata</label>
    <select class="cf_inputbox validate-selection" id="select_0" size="1" title=""  name="matchday">
    <option value="">Choose Option</option>
      <option value="option 1">option 1</option>
<option value="option 2">option 2</option>
<option value="option 3">option 3</option>

    </select>
   
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Partita</label>
    <select class="cf_inputbox validate-selection" id="select_1" size="1" title=""  name="match">
    <option value="">Choose Option</option>
      <option value="option 1">option 1</option>
<option value="option 2">option 2</option>
<option value="option 3">option 3</option>

    </select>
   
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Squadra</label>
    <select class="cf_inputbox validate-selection" id="select_2" size="1" title=""  name="team">
    <option value="">Choose Option</option>
      <option value="option 1">option 1</option>
<option value="option 2">option 2</option>
<option value="option 3">option 3</option>

    </select>
   
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Giocatore</label>
    <select class="cf_inputbox validate-selection" id="select_3" size="1" title=""  name="player">
    <option value="">Choose Option</option>
      <option value="option 1">option 1</option>
<option value="option 2">option 2</option>
<option value="option 3">option 3</option>

    </select>
   
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 150px;">Voto</label>
    <input class="cf_inputbox" maxlength="150" size="30" title="" id="text_4" name="Voto" type="text" />
 
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_button">
    <input value="Inserisci voto" name="button_5" type="submit" /><input type="reset" name="reset" value="Reset"/>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

Se qualcuno puoi scrivermi il codice Javascript... bhè non saprei come ringraziare.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 28 Nov 2010, 08:55:31
Benvenuto in Joomla danielino_bynight

Dovresti indicare quali sono le dropdown da mettere il relazione o forse sono tutte singole dropdown.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: stingolo 11 Dec 2010, 14:18:48
Ciao a tutti, premetto che sono un neofita. Ho utilizzato il codice segnalato in questo thread per creare un form, ecco il codice HTML e Javascript:

:
<!-- inizio codice campi form -->


<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Fascia</label>
           
<select id="id_sezione" name="sezione" onfocus="fillCategory();" onChange="SelectCategoria();" class="cf_inputbox validate-selection"  ><Option value="">Seleziona</option>

</select> Giocatori

       <select id="id_categoria" name="categoria" class="cf_inputbox validate-selection" ><Option value="">Seleziona</option>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 150px;">Offerta</label>
    <input class="cf_inputbox required validate-number" maxlength="4" size="2" title="" id="text_1" name="offerta_1" type="text" />
 
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_button">
    <input value="Invia" name="button_2" type="submit" /><input type="reset" name="reset" value="Reset"/>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>

   

:
// JavaScript Document

//questo è il codice da inserire nella TAB Form Code sezione javascript

function fillCategory(){
removeAllOptions(document.getElementById('ChronoContact_Mercato').sezione);


 addOption(document.getElementById('ChronoContact_Mercato').sezione, '1', 'Fascia 84-82');
 addOption(document.getElementById('ChronoContact_Mercato').sezione, '2', 'Fascia 81-79');
 addOption(document.getElementById('ChronoContact_Mercato').sezione, '3', 'Fascia 78-76');
addOption(document.getElementById('ChronoContact_Mercato').sezione, '4', 'Fascia 75-73');
addOption(document.getElementById('ChronoContact_Mercato').sezione, '5', 'Fascia -73');
}

function SelectCategoria(){
// Funzione chiamata dopo la selezione della Sezione - ON or after selection of category this function will work

removeAllOptions(document.getElementById('ChronoContact_Mercato').categoria);
//addOption(document.getElementById('ChronoContact_Mercato').categoria, "", "Seleziona", "");

// Raccoglie tutti gli elementi della categoria per id - Collect all element of subcategory for various id

if (document.getElementById('ChronoContact_Mercato').sezione.value == '1'){
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'1', 'CHAMACK 82 84-82 A Arsenal');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'2', 'DONOVAN 83 84-82 A l.a. galaxy');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'3', 'GONZALEZ 82 84-82 C O. Marsiglia');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'4', 'PIZARRO 82 84/82 A Werder Brema');
}

 if (document.getElementById('ChronoContact_Mercato').sezione.value == '2'){
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'1', 'ABIDAL 79 81/79 D barcellona');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'2', 'BARRY 79 81-79 C Manchester City');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'3', 'BENAGLIO 81 81-79 P Wolfsburg');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'4', 'BYSTROV 79 81/79 A Zenit');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'5', 'CAHILL 80 81-79 C everton');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'6', 'CHEYROU 79 81/79 C Marsiglia');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'7', 'DIABY 79 81-79 C Arsenal');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'8', 'FARFAN 81 81-79 A Schalke 04');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'9', 'HENRY 81 81-79 A New York');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'10', 'MONTOLIVO 81 81/79 C fiorentina');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'11',
'VAN BUYTEN 80 81-79 D bayern monaco');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'12', 'CISSE 80 81/79 A Panathinaikos');
}

 if (document.getElementById('ChronoContact_Mercato').sezione.value == '3'){
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'1', 'ABATE 76 78-76 C Milan');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'2', 'ALBIN 77 78-76 c getafe');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'3', 'ALMUNIA 77 78-76 P arsenal');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'4',
'BECK 76 78-76 D 1989 hoffenheim');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'5', 'BIABIANY 77 78-76 A inter 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'6', 'BODMER 78 78/76 C psg');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'7', 'BURDISSO 78 78/76 D roma ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'8',
'CRIS 78 78-76 D LIONE');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'9', 'D AGOSTINO 78 78-76 C Fiorentina');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'10', 'EMANA 78 78-76 C SIVIGLIA');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'11', 'FUCILE 76 78-76 D Porto');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'12', 'GOMIS 77 78/76 A Lione');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'13', 'HEITINGA 78 78-76 D everton');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'14', 'HENGBART 76 78-76 D Auxerre');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'15', 'ISAAKSSON 77 78-76 P PSV Eindoven');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'16', 'JAVI GARCIA 77 78-76 C benfica');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'17', 'KAZIM KAZIM 77 78-76 A Fenerbahce');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'18', 'LANZAFAME 76 78-76 A Juventus');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'19', 'LEGROTTAGLIE 76 78-76 D Juventus');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'20', 'LUCAS 78 78-76 C Liverpool');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'21', 'MAKOUN 78 78-76 C Lione');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'22', 'MILLER 78 78-76 A ranger');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'23', 'MOLINARO 76 78-76 D Stoccarda');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'24', 'PERROTTA 78 78-76 C Roma');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'25', 'REVELLEIRE 78 78-76 D Lione');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'26', 'ROLANDO 76 78/76 D');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'27', 'SAMBA 77 78-76 D blackburn rover');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'28', 'SISSOKO 76 78-76 C tolosa');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'29', 'SUBOTIC 78 78/76 D B.Dortmund');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'30', 'TREZEGUET 78 78-76 A hercules');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'31',
'VAN DER WIEL 77 78-76 D Ajax 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'32', 'VELA 77 78-76 A Arsenal');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'33', 'VIEIRA 77 78-76 C Manchester city');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'34', 'ZABALETA 78 78-76 D Manchester city');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'35', 'ZAMBROTTA 76 78-76 D Milan');
}
 if (document.getElementById('ChronoContact_Mercato').sezione.value == '4'){
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'1', 'ACQUAFRESCA 75 75-73 A Cagliari');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'2', 'ALMEYDA 73 75-73 C River Plate');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'3', 'AMELCHENKO 74 75-73 P fc.rostov');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'4',
'AOGO 75 75-73 D Amburgo');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'5', 'AROUCA 74 75-73 C Santos');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'6', 'BADSTUBER 75 75-73 D bayern monaco');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'7', 'BENITEZ 75 75-73 A Santos Laguna');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'8',
'BIZARRI 73 75/73 P lazio');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'9', 'CANA 75 75-73 C Galatasaray');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'10', 'CANDREVA 75 75-73 C Parma');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'11', 'CARRIZO 75 75-73 P river plate');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'12', 'CHIMBONDA 74 75-73 D Blackburn');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'13', 'COLTORTI 73 75/73 p R.Racing Club');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'14', 'CORTES 73 75/73 D');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'15', 'COSTANZO 75 75/73 P Basilea');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'16', 'CRESPO 73 75-73 A PARMA 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'17', 'CUDICINI 75 75-73 P Tottenham');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'18', 'DAGOBERTO 75 75-73 A san paolo');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'19', 'DAINELLI 75 75-73 D Genoa');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'20', 'DAVIES 74 75-73 A Sochuax');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'21', 'DESSENA 75 75-73 C Sampdoria');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'22', 'DIAMANTI 74 75-73 C Brescia ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'23', 'DIOP P 75 75-73 C AEK Atene 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'24', 'DONATI 73 75-73 C Bari ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'25', 'DONI 75 75-73 p roma');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'26', 'DRENTHE 73 75-73 C HERCULES');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'27', 'DROGUETT 73 75/73 C monarcas ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'28', 'ELISEU 74 75-73 A malaga ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'29', 'ENGELAAR 75 75/73 C psv ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'30', 'EVALDO 75 75-73 D Sporting Lisbon');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'31',
'FER 73 75/73 C feyenord ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'32', 'FERNANDINHO 74 75/73 A San paolo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'33', 'FOGGIA 75 75-73 C Lazio ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'34', 'GARCIA 73 75-73 C Paok ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'35', 'GIACCHERINI 73 75-73 C Cesena ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'36', 'GIBSON 75 75-73 C Manchester Utd ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'37', 'GROSSO 73 75-73 D juventus ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'38', 'GUARENTE 75 75-73 C sevilla ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'39',
'HINKEL 74 75-73 D Celtic ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'40', 'HOILETT 74 75-73 A Blackburn');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'41', 'INSUA 75 75-73 D Galatasaray ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'42', 'INZAGHI 75 75/73 A milan ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'43',
'JUNIOR CESAR 74 75-73 D San Paolo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'44', 'KADLEC 74 75-73 D');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'45', 'KAGAWA 75 75-73 C b.dormunt ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'46', 'KONCHESKY 75 75-73 D ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'47', 'LEDESMA 75 75-73 C Lazio ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'48', 'LICHTSTEINER 75 75-73 D Lazio');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'49', 'LLAMA 75 75-73 C Catania ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'50', 'MAICON 73 75-73 A LOKOMOTIV ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'51', 'MAKUKULA 75 75-73 A maniaspor ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'52', 'MANCINI 74 75-73 A inter ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'53', 'MANNINGER 74 75/73 P Juventus ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'54', 'MASCARA 75 75-73 A catania ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'55', 'MATUIDI 74 75-73 A ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'56', 'MAURI 75 75-73 C lazio ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'57', 'MOISES 75 75/73 D sc braga ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'58', 'MONDRAGON 75 75-73 P');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'59', 'N GOG 75 75-73 A liverpool ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'60', 'NOBOA 75 75-73 C Rubin Kazan ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'61', 'NOCERINO 74 75-73 C PALERMO ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'62', 'OTAMENDI 74 75-73 D Porto ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'63', 'PEDRO MENDES 75 75/73 C sporting ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'64', 'PINILLA 75 75-73 A Palermo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'65', 'PITROIPA 74 75/73 A Amburgo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'66',
'POLGA 75 75-73 D Sp.Lisbona ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'67', 'REVER 75 75/73 D atl. miniero ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'68', 'RODRIGUEZ 75 75-73 D Braga ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'69', 'ROLFES 75 75-73 C Leverkusen ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'70', 'RUNJE 75 75/73 P lens ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'71', 'SANTACROCE 73 75-73 D Napoli ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'72', 'SARIOGLU 75 75/73 D galatasaray ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'73', 'USTARI 75 75-73 P GETAFE ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'74',
'VILAR 75 75-73 P Monarcas ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'75', 'VORSAH 75 75-73 D hoffenheim ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'76', 'ZELAO 75 75-73 D ramenskoye');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'77', 'ZABALETA 78 78-76 D Manchester city');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'78', 'ZIGIC 75 75-73 A birmingham ');
}

 if (document.getElementById('ChronoContact_Mercato').sezione.value == '5'){
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'1', 'AGAZZI 69 -73 P cagliari ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'2', 'ANGWBA 69 -73 D S.Ramenskoye ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'3', 'ANITA 71 -73 D AJAX 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'4',
'ANTONIO FERREIRA 72 -73 D terek grozny');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'5', 'ANTONIOLI 70 -73 P Cesena ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'6', 'ARLAUSKIS 72 -73 P Rubin Kazan ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'7', 'BACINOVIC 65 -73 c palermo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'8',
'BALBOA 70 -73 C Benfica ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'9', 'BALCI 70 -73 A ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'10', 'BEGOVIC 72 -73 P Stoke City ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'11', 'CAMACHO 71 -73 C Atletico Madrid');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'12', 'CAMPBELL F 73 -73 A Sunderland ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'13', 'CAMPOS 72 -73 D Atl.Mineiro ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'14', 'CAVANDA 71 -73 D lazio');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'15', 'CICINHO 70 -73 D ROMA ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'16', 'CONTENTO 68 -73 D Bayern monaco ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'17', 'COPA 72 -73 P Lokeren ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'18', 'D.CHA 72 -73 D Celtic ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'19', 'DARMIAN 64 -73 D palermo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'20', 'DE CEGLIE 72 -73 D Juventus ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'21', 'DE LUCIA 70 -73 P Livorno ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'22', 'DE SILVESTRI 72 -73 D Fiorentina  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'23', 'DOS SANTOS 72 -73 A Barcellona');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'24', 'EARNSHAW 72 -73 A Nottingham F. ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'25', 'ESTEBAN 72 -73 P Almeria ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'26', 'GARCIA 72 -73 P boca junior ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'27', 'GONZALEZ 72 -73 C lazio');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'28', 'GUALTA 72 -73 P VALENCIA  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'29', 'HERNANDEZ 72 -73 A monarcas ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'30', 'IEZZO 71 -73 P Napoli ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'31',
'ILICIC 72 -73 C palermo  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'32', 'JEAN 72 -73 C ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'33', 'JOAO SILVA 73 -73 A Everton ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'34', 'JORGESSEN D 72 -73 D copenaghen ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'35', 'KALADZE 72 -73 D Genoa');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'36', 'KOVACS 70 -73 A lierse sk ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'37', 'LACAZETTE 71 -73 A Lione ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'38', 'LARSSON D 69 -73 A malmo f f ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'39',
'LEITGEB 72 -73 C salisburgo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'40', 'LEONI 72 -73 P zurigo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'41', 'MARCIO ARZEVEDO 71 -73 D atl. paranaense');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'42', 'MIGUEL LOPES 72 -73 D Betis Siviglia ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'43',
'MODESTO 72 -73 C olympiakos ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'44', 'ODDO 73 73 D Milan ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'45', 'ORLANDONI 69 -73 P inter  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'46', 'OWUSY-ABEYE 72 -73 A Malaga  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'47', 'PADELLI 65 -73 P Bari  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'48', 'PARA 72 -73 D santos ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'49', 'PELIZZOLI 70 -73 P CAGLIARI 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'50', 'PISANO 71 -73 D Parma  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'51', 'PRIB 60 -63 C greuther furth 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'52', 'RAFAEL 72 -73 P SANTOS ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'53', 'RICARDO JESUS 72 -73 A Spartak Nalchik');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'54', 'RICHARDSON 72 -73 D Sunderland ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'55', 'RIOU 72 -73 P Auxerre ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'56', 'SALINO 72 -73 C SC BRAGA ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'57', 'SCHENNIKOV 71 -73 D Cska Mosca');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'58', 'SERIGNHO 72 -73 C atletico minero ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'59', 'SHELTON 72 -73 A VALERENGA');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'60', 'SOUGOU 72 -73 A academica ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'61', 'TETTEY 72 -73 C rennes ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'62', 'TITON 73 -73 P roda jc  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'63', 'TORNES 60 -73 P brondby ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'64', 'VANNEGOOR OF HESS 72 -73 A RAPID ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'65', 'WYNNE 64 -73 D ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'66',
'ZAPATA 73 -73 D Udinese');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'67', 'ZAPATER 70 -73 C Sportig Lisbona');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'68', 'ZEBINA 71 73 D Brescia');
}
}
//////////////////

function removeAllOptions(selectbox)
{
   var i;
   for(i=selectbox.options.length-1;i>=1;i--)
   {
      selectbox.options[i]=null;
      //selectbox.remove(i);
   }
}


function addOption(selectbox, value, text )
{
   var optn = document.createElement("option");
       
        optn.text = text;
   optn.value = value;

   selectbox.options.add(optn);
          //selectbox.appendChild(optn,where);

}


Ora, il form funziona perfettamente, ma quando scrive i dati nella tabella che ho creato nel database, nei campi "sezione" e "categoria" appare l'id e non la voce selzionata dall'l'utente che compila.
Dove sbaglio?

Spero di essere stato chiaro e attendo un vs aiuto

Grazie

: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 11 Dec 2010, 16:37:39
Devi modificare ancora il javascript sostituendo il valore numerico dell'id con le descrizioni.

esempio la prima function diviene così, nella seconda ho modificato solo la prima categoria le altre devi modificarle con la stessa modalità sia nella if che nelle option.

:
// JavaScript Document

//questo è il codice da inserire nella TAB Form Code sezione javascript

function fillCategory(){
removeAllOptions(document.getElementById('ChronoContact_Mercato').sezione);


 addOption(document.getElementById('ChronoContact_Mercato').sezione, 'Fascia 84-82', 'Fascia 84-82');
 addOption(document.getElementById('ChronoContact_Mercato').sezione,  'Fascia 81-79', 'Fascia 81-79');
 addOption(document.getElementById('ChronoContact_Mercato').sezione, 'Fascia 78-76', 'Fascia 78-76');
 addOption(document.getElementById('ChronoContact_Mercato').sezione, 'Fascia 75-73', 'Fascia 75-73');
 addOption(document.getElementById('ChronoContact_Mercato').sezione, 'Fascia -73', 'Fascia -73');
}

function SelectCategoria(){
// Funzione chiamata dopo la selezione della Sezione - ON or after selection of category this function will work

removeAllOptions(document.getElementById('ChronoContact_Mercato').categoria);
//addOption(document.getElementById('ChronoContact_Mercato').categoria, "", "Seleziona", "");

// Raccoglie tutti gli elementi della categoria per id - Collect all element of subcategory for various id

if (document.getElementById('ChronoContact_Mercato').sezione.value == 'Fascia 84-82'){
 addOption(document.getElementById('ChronoContact_Mercato').categoria, 'CHAMACK 82 84-82 A Arsenal', 'CHAMACK 82 84-82 A Arsenal');
 addOption(document.getElementById('ChronoContact_Mercato').categoria, 'DONOVAN 83 84-82 A l.a. galaxy', 'DONOVAN 83 84-82 A l.a. galaxy');
 addOption(document.getElementById('ChronoContact_Mercato').categoria, 'GONZALEZ 82 84-82 C O. Marsiglia', 'GONZALEZ 82 84-82 C O. Marsiglia');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'PIZARRO 82 84/82 A Werder Brema', 'PIZARRO 82 84/82 A Werder Brema');
}

 if (document.getElementById('ChronoContact_Mercato').sezione.value == '2'){
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'1', 'ABIDAL 79 81/79 D barcellona');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'2', 'BARRY 79 81-79 C Manchester City');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'3', 'BENAGLIO 81 81-79 P Wolfsburg');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'4', 'BYSTROV 79 81/79 A Zenit');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'5', 'CAHILL 80 81-79 C everton');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'6', 'CHEYROU 79 81/79 C Marsiglia');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'7', 'DIABY 79 81-79 C Arsenal');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'8', 'FARFAN 81 81-79 A Schalke 04');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'9', 'HENRY 81 81-79 A New York');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'10', 'MONTOLIVO 81 81/79 C fiorentina');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'11',
'VAN BUYTEN 80 81-79 D bayern monaco');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'12', 'CISSE 80 81/79 A Panathinaikos');
}

 if (document.getElementById('ChronoContact_Mercato').sezione.value == '3'){
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'1', 'ABATE 76 78-76 C Milan');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'2', 'ALBIN 77 78-76 c getafe');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'3', 'ALMUNIA 77 78-76 P arsenal');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'4',
'BECK 76 78-76 D 1989 hoffenheim');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'5', 'BIABIANY 77 78-76 A inter 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'6', 'BODMER 78 78/76 C psg');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'7', 'BURDISSO 78 78/76 D roma ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'8',
'CRIS 78 78-76 D LIONE');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'9', 'D AGOSTINO 78 78-76 C Fiorentina');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'10', 'EMANA 78 78-76 C SIVIGLIA');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'11', 'FUCILE 76 78-76 D Porto');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'12', 'GOMIS 77 78/76 A Lione');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'13', 'HEITINGA 78 78-76 D everton');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'14', 'HENGBART 76 78-76 D Auxerre');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'15', 'ISAAKSSON 77 78-76 P PSV Eindoven');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'16', 'JAVI GARCIA 77 78-76 C benfica');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'17', 'KAZIM KAZIM 77 78-76 A Fenerbahce');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'18', 'LANZAFAME 76 78-76 A Juventus');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'19', 'LEGROTTAGLIE 76 78-76 D Juventus');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'20', 'LUCAS 78 78-76 C Liverpool');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'21', 'MAKOUN 78 78-76 C Lione');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'22', 'MILLER 78 78-76 A ranger');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'23', 'MOLINARO 76 78-76 D Stoccarda');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'24', 'PERROTTA 78 78-76 C Roma');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'25', 'REVELLEIRE 78 78-76 D Lione');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'26', 'ROLANDO 76 78/76 D');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'27', 'SAMBA 77 78-76 D blackburn rover');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'28', 'SISSOKO 76 78-76 C tolosa');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'29', 'SUBOTIC 78 78/76 D B.Dortmund');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'30', 'TREZEGUET 78 78-76 A hercules');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'31',
'VAN DER WIEL 77 78-76 D Ajax 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'32', 'VELA 77 78-76 A Arsenal');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'33', 'VIEIRA 77 78-76 C Manchester city');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'34', 'ZABALETA 78 78-76 D Manchester city');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'35', 'ZAMBROTTA 76 78-76 D Milan');
}
 if (document.getElementById('ChronoContact_Mercato').sezione.value == '4'){
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'1', 'ACQUAFRESCA 75 75-73 A Cagliari');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'2', 'ALMEYDA 73 75-73 C River Plate');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'3', 'AMELCHENKO 74 75-73 P fc.rostov');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'4',
'AOGO 75 75-73 D Amburgo');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'5', 'AROUCA 74 75-73 C Santos');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'6', 'BADSTUBER 75 75-73 D bayern monaco');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'7', 'BENITEZ 75 75-73 A Santos Laguna');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'8',
'BIZARRI 73 75/73 P lazio');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'9', 'CANA 75 75-73 C Galatasaray');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'10', 'CANDREVA 75 75-73 C Parma');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'11', 'CARRIZO 75 75-73 P river plate');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'12', 'CHIMBONDA 74 75-73 D Blackburn');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'13', 'COLTORTI 73 75/73 p R.Racing Club');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'14', 'CORTES 73 75/73 D');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'15', 'COSTANZO 75 75/73 P Basilea');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'16', 'CRESPO 73 75-73 A PARMA 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'17', 'CUDICINI 75 75-73 P Tottenham');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'18', 'DAGOBERTO 75 75-73 A san paolo');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'19', 'DAINELLI 75 75-73 D Genoa');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'20', 'DAVIES 74 75-73 A Sochuax');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'21', 'DESSENA 75 75-73 C Sampdoria');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'22', 'DIAMANTI 74 75-73 C Brescia ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'23', 'DIOP P 75 75-73 C AEK Atene 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'24', 'DONATI 73 75-73 C Bari ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'25', 'DONI 75 75-73 p roma');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'26', 'DRENTHE 73 75-73 C HERCULES');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'27', 'DROGUETT 73 75/73 C monarcas ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'28', 'ELISEU 74 75-73 A malaga ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'29', 'ENGELAAR 75 75/73 C psv ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'30', 'EVALDO 75 75-73 D Sporting Lisbon');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'31',
'FER 73 75/73 C feyenord ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'32', 'FERNANDINHO 74 75/73 A San paolo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'33', 'FOGGIA 75 75-73 C Lazio ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'34', 'GARCIA 73 75-73 C Paok ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'35', 'GIACCHERINI 73 75-73 C Cesena ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'36', 'GIBSON 75 75-73 C Manchester Utd ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'37', 'GROSSO 73 75-73 D juventus ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'38', 'GUARENTE 75 75-73 C sevilla ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'39',
'HINKEL 74 75-73 D Celtic ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'40', 'HOILETT 74 75-73 A Blackburn');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'41', 'INSUA 75 75-73 D Galatasaray ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'42', 'INZAGHI 75 75/73 A milan ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'43',
'JUNIOR CESAR 74 75-73 D San Paolo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'44', 'KADLEC 74 75-73 D');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'45', 'KAGAWA 75 75-73 C b.dormunt ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'46', 'KONCHESKY 75 75-73 D ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'47', 'LEDESMA 75 75-73 C Lazio ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'48', 'LICHTSTEINER 75 75-73 D Lazio');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'49', 'LLAMA 75 75-73 C Catania ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'50', 'MAICON 73 75-73 A LOKOMOTIV ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'51', 'MAKUKULA 75 75-73 A maniaspor ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'52', 'MANCINI 74 75-73 A inter ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'53', 'MANNINGER 74 75/73 P Juventus ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'54', 'MASCARA 75 75-73 A catania ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'55', 'MATUIDI 74 75-73 A ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'56', 'MAURI 75 75-73 C lazio ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'57', 'MOISES 75 75/73 D sc braga ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'58', 'MONDRAGON 75 75-73 P');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'59', 'N GOG 75 75-73 A liverpool ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'60', 'NOBOA 75 75-73 C Rubin Kazan ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'61', 'NOCERINO 74 75-73 C PALERMO ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'62', 'OTAMENDI 74 75-73 D Porto ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'63', 'PEDRO MENDES 75 75/73 C sporting ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'64', 'PINILLA 75 75-73 A Palermo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'65', 'PITROIPA 74 75/73 A Amburgo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'66',
'POLGA 75 75-73 D Sp.Lisbona ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'67', 'REVER 75 75/73 D atl. miniero ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'68', 'RODRIGUEZ 75 75-73 D Braga ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'69', 'ROLFES 75 75-73 C Leverkusen ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'70', 'RUNJE 75 75/73 P lens ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'71', 'SANTACROCE 73 75-73 D Napoli ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'72', 'SARIOGLU 75 75/73 D galatasaray ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'73', 'USTARI 75 75-73 P GETAFE ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'74',
'VILAR 75 75-73 P Monarcas ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'75', 'VORSAH 75 75-73 D hoffenheim ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'76', 'ZELAO 75 75-73 D ramenskoye');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'77', 'ZABALETA 78 78-76 D Manchester city');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'78', 'ZIGIC 75 75-73 A birmingham ');
}

 if (document.getElementById('ChronoContact_Mercato').sezione.value == '5'){
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'1', 'AGAZZI 69 -73 P cagliari ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'2', 'ANGWBA 69 -73 D S.Ramenskoye ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'3', 'ANITA 71 -73 D AJAX 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'4',
'ANTONIO FERREIRA 72 -73 D terek grozny');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'5', 'ANTONIOLI 70 -73 P Cesena ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'6', 'ARLAUSKIS 72 -73 P Rubin Kazan ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'7', 'BACINOVIC 65 -73 c palermo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'8',
'BALBOA 70 -73 C Benfica ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'9', 'BALCI 70 -73 A ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'10', 'BEGOVIC 72 -73 P Stoke City ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'11', 'CAMACHO 71 -73 C Atletico Madrid');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'12', 'CAMPBELL F 73 -73 A Sunderland ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'13', 'CAMPOS 72 -73 D Atl.Mineiro ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'14', 'CAVANDA 71 -73 D lazio');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'15', 'CICINHO 70 -73 D ROMA ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'16', 'CONTENTO 68 -73 D Bayern monaco ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'17', 'COPA 72 -73 P Lokeren ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'18', 'D.CHA 72 -73 D Celtic ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'19', 'DARMIAN 64 -73 D palermo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'20', 'DE CEGLIE 72 -73 D Juventus ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'21', 'DE LUCIA 70 -73 P Livorno ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'22', 'DE SILVESTRI 72 -73 D Fiorentina  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'23', 'DOS SANTOS 72 -73 A Barcellona');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'24', 'EARNSHAW 72 -73 A Nottingham F. ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'25', 'ESTEBAN 72 -73 P Almeria ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'26', 'GARCIA 72 -73 P boca junior ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'27', 'GONZALEZ 72 -73 C lazio');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'28', 'GUALTA 72 -73 P VALENCIA  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'29', 'HERNANDEZ 72 -73 A monarcas ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'30', 'IEZZO 71 -73 P Napoli ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'31',
'ILICIC 72 -73 C palermo  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'32', 'JEAN 72 -73 C ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'33', 'JOAO SILVA 73 -73 A Everton ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'34', 'JORGESSEN D 72 -73 D copenaghen ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'35', 'KALADZE 72 -73 D Genoa');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'36', 'KOVACS 70 -73 A lierse sk ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'37', 'LACAZETTE 71 -73 A Lione ');
 addOption(document.getElementById('ChronoContact_Mercato').categoria,'38', 'LARSSON D 69 -73 A malmo f f ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'39',
'LEITGEB 72 -73 C salisburgo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'40', 'LEONI 72 -73 P zurigo ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'41', 'MARCIO ARZEVEDO 71 -73 D atl. paranaense');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'42', 'MIGUEL LOPES 72 -73 D Betis Siviglia ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'43',
'MODESTO 72 -73 C olympiakos ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'44', 'ODDO 73 73 D Milan ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'45', 'ORLANDONI 69 -73 P inter  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'46', 'OWUSY-ABEYE 72 -73 A Malaga  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'47', 'PADELLI 65 -73 P Bari  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'48', 'PARA 72 -73 D santos ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'49', 'PELIZZOLI 70 -73 P CAGLIARI 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'50', 'PISANO 71 -73 D Parma  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'51', 'PRIB 60 -63 C greuther furth 1');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'52', 'RAFAEL 72 -73 P SANTOS ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'53', 'RICARDO JESUS 72 -73 A Spartak Nalchik');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'54', 'RICHARDSON 72 -73 D Sunderland ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'55', 'RIOU 72 -73 P Auxerre ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'56', 'SALINO 72 -73 C SC BRAGA ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'57', 'SCHENNIKOV 71 -73 D Cska Mosca');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'58', 'SERIGNHO 72 -73 C atletico minero ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'59', 'SHELTON 72 -73 A VALERENGA');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'60', 'SOUGOU 72 -73 A academica ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'61', 'TETTEY 72 -73 C rennes ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'62', 'TITON 73 -73 P roda jc  ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'63', 'TORNES 60 -73 P brondby ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'64', 'VANNEGOOR OF HESS 72 -73 A RAPID ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'65', 'WYNNE 64 -73 D ');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'66',
'ZAPATA 73 -73 D Udinese');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'67', 'ZAPATER 70 -73 C Sportig Lisbona');
addOption(document.getElementById('ChronoContact_Mercato').categoria,'68', 'ZEBINA 71 73 D Brescia');
}
}
//////////////////

function removeAllOptions(selectbox)
{
   var i;
   for(i=selectbox.options.length-1;i>=1;i--)
   {
      selectbox.options[i]=null;
      //selectbox.remove(i);
   }
}


function addOption(selectbox, value, text )
{
   var optn = document.createElement("option");
       
        optn.text = text;
   optn.value = value;

   selectbox.options.add(optn);
          //selectbox.appendChild(optn,where);

}


: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: stingolo 11 Dec 2010, 18:32:16
Ti ringrazio molto vales per la pronta risposta, provato e perfettamente funzionante!

Grazie 1000
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: xzero2 27 Jan 2011, 18:40:03
Uno dei problemi da risolvere in un form è spesso il riempimento di caselle dropdown con i valori memorizzati in tabelle di database. Spesso insieme a questa necessità c'è anche quella che la seconda casella dropdown sia in funzione della scelta operata nella prima casella.

Esempio di questo sono il valori delle sezioni e categorie di Joomla dove le seconde appartengono ad una sezione oppure il caso classico di provincie e comuni.

In questi casi occorre che nella prima casella compiuta la scelta della sezione o provincia e nella seconda casella siano resi disponibili i valori delle categorie appartenenti alla sezione oppure i comuni appartenenti alla provincia.

Si può fare questa cosa il vari modi con l'uso misto di PHP, javascript o Ajax. Dopo aver ricercato a giro varie soluzioni ho optato per questa, adattata a Chonoforms, che mi sembra molto flessibile e gestibile in varie varianti.

Si tratta di un codice Javascript generato con l'aiuto di PHP per le parti dinamiche che variano a seconda della scelta.
Il codici seguenti sono stati collaudati sia con Chronoforms e con Chronoconnectivity in alcune applicazioni che ho realizzato (es. Albo Pretorio On Line discusso in altro topic del forum).

Ecco il blocchi di codice funzionanti per le tabelle sezioni e categorie di Joomla, ma che potranno essere adattati ad altri casi.

Codice da inserire nella sezione Form Html

:
<!-- inizio codice campi form -->

<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Sezioni</label>
           
<select name="id_sezione" onChange="SelectCategoria();" class="cf_inputbox validate-selection"  ><Option value="">Seleziona</option>

</select> Categorie

       <select id="id_categoria" name="categoria" class="cf_inputbox validate-selection" ><Option value="">Seleziona</option>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>



<div class="form_item">
  <div class="form_element cf_button">
    <input value="Invia" name="button_1" type="submit" /><input type="reset" name="reset" value="Reset"/>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>


Codice da inserire nella sezione Form Javascript

:
<?php
//questo è il codice da inserire nella TAB Form Code sezione javascript 

echo "function fillCategory(){ ";
 
// questa funzione è usata per riempire le sezioni al caricamento 




$db =& JFactory::getDBO();
$query "
    SELECT `id`,`title`
    FROM `#__sections`
    ORDER BY `title` "
;
    
$db->setQuery($query);
    
$nomes $db->loadAssocList();
    
      foreach ( 
$nomes as $nt1 ) {
       echo 
"\n addOption(document.ChronoContact_nome_vostro_form .id_sezione, '".$nt1['id']."', '".$nt1['title']."'); ";
      
      }
      
echo 
"\n}"// fine della funzione Javascript - end of JS function
?>



function SelectCategoria(){
// Funzione chiamata dopo la selezione della Sezione

removeAllOptions(document.ChronoContact_nome_vostro_form .id_categoria);
//addOption(document.ChronoContact_nome_vostro_form .id_categoria, "", "Seleziona", "");

// Raccoglie tutti gli elementi della categoria per id

<?php
    
    $query
"
           SELECT distinct(id) FROM `#__sections`"
;
           
$db->setQuery($query);
       
$nomes $db->loadAssocList();
           
$nome_options "";
                                              
// inizio ciclo sezioni
               
foreach ( $nomes as $nt2 ) {
       
             echo 
"\n if(document.ChronoContact_nome_vostro_form .id_sezione.value == '".$nt2['id']."'){ ";
     
      
$query"
         SELECT `id`,`title` FROM `#__categories` WHERE `section` ='"
.$nt2['id']."' ORDER BY `title`" ;
         
$db->setQuery($query);
     
$nomes $db->loadAssocList();
         
$nome_options "";
                                               
//inizio ciclo categorie
               
foreach ( $nomes as $nt3 ) {

echo 
"\n addOption(document.ChronoContact_nome_vostro_form .id_categoria,'".$nt3['id']."', '".$nt3['title']."'); ";

// fine ciclo categorie
echo "\n}"// fine della if Javascript 

// fine loop sezioni
?>


}
// fine della funzione javascripts
//////////////////

function removeAllOptions(selectbox)
{
    var i;
    for(i=selectbox.options.length-1;i>=1;i--)
    {
        selectbox.options[i]=null;
        //selectbox.remove(i);
    }
}


function addOption(selectbox, value, text )
{
    var optn = document.createElement("OPTION");
    optn.text = text;
    optn.value = value;

    selectbox.options.add(optn);
}



Il codice restituirà i valori id rispettivamente delle tabelle jos_sections e jos_categories nelle variabili del form id_sezione ed id_categoria che sono i campi name delle due caselle.

Il codice è commentato in alcune parti e credo sia facilmente comprensibile.
L'unica cosa da cambiare 5 volte è nome_vostro_form con il nome del form che sarà da voi creato.

Buon uso a tutti.

P.S. Verificato con Firefox, Internet Explorer e Crome.

Ho provato il codice che non fa uso dei database e sono riuscito a farlo funzionare adattandolo alle mie esigenze.

Ma questo qui sopra non mi riesce di farlo funzionare, neanche usandolo pari pari cosi come lo hai scritto, logicamente cambiando 5 volte  il nome del form.

Praticamente sezioni e categorie non si popolano.

Le tabelle esistono e sono popolate; dove posso sbagliare ??

Mille grazie per gli esempi che metti sa disposizione .

xzero2
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: xzero2 29 Jan 2011, 09:10:20
Ancora non ho trovato una soluzione.

Mi sono creato un form chiamato "nome_vostro_form"  cosi da non dover toccare il codice, ma anche cosi non va.

Mi sono fatto un'altra installazione di joomla per fare dei test, installato joomla 1.5.22, ChronoForm v3.2.0  Chronoconnectinity V2rc3 senza patch e com_albopretoriosetup_10RC2   per cercare un form che usi due dropdown collegate;
mi pare di capire che quel sistema è utilizzato in "atto_10"  ma il codice javascript è molto diverso e non ho le competenze necessarie per venirne fuori.

qualche aiutino.....

xzero2
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: xzero2 01 Feb 2011, 15:38:58
Vales, scusami se ti coinvolgo direttamente;

Mi puoi confermare che il codice inserito sul tuo primo post funziona correttamente, perché io proprio non riesco a farlo andare.

Mi confermi anche che è indipendente dalla patch di chronoconnectivity necessaria ad albo pretorio ?

Io uso ubuntu 10.04 e firefox.

xzero2
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 01 Feb 2011, 16:53:38
La dropdown proposta nel primo post funziona su chronoforms originale senza patch. E non dovrebbe funzionare con chronoconnectivity poichè fa riferimento al nome del form non alla connessione.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: xzero2 02 Feb 2011, 07:15:40
Effettivamente è quello che avevo capito, però sul mio server locale (lamp) ho installato in una cartella a parte ( indirizzoip/nuovacartella) joomla liscio liscio, poi chronoform , cronoconnectivity, albopretorio.
Poi ho creato una nuova form chiamata ""nome_vostro_form""  e vi ho copiato dentro il tuo codice proposto.

A questo punto, dovrebbe funzionare senza cambiare nulla, eppure a me non va, vedo il form ma i campi non contengono nessuna voce.

xzero2
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: FraJ 23 Feb 2011, 17:46:37
come chiedevo in un altro post

come si usa in Connectivity?
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 23 Feb 2011, 18:36:57
Qui troverai una serie di articoli

http://forum.joomla.it/index.php/topic,89142.0.html
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: FraJ 23 Feb 2011, 19:09:12
vales ti ringrazio ma me li sto studiando da giorni senza venirne a capo
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 16 Mar 2011, 16:15:23
C'era un problema nel copia incolla del codice del primo post.

Prova con quello che ho modificato ora.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Gnome12 28 May 2011, 19:16:27
Ciao a tutti, riesumo questa discussione.
C'è una guida completa sul come creare una ricerca dropdown regione-provincia-comuni?
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Gnome12 28 May 2011, 21:52:58
Ho importato nel DB le tabelle contenenti regioni, province, comuni. Ora che si fa? Non ne ho idea :(
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 28 May 2011, 22:24:33
prova a guardare questo post.

http://forum.joomla.it/index.php/topic,95733.msg513419.html#msg513419
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Gnome12 28 May 2011, 22:29:19
Grazie per la risp vales.
Ho provato ad utilizzare quel codice ma non ho capito questo passaggio:
Ovviamente vanno adattati i nomi delle tabelle ed i nomi dei campi   in caso di differenze rispetto a quelli proposti nell'esempio.

le mie tabelle sono costruite così:

Cioè dove devo andare a cambiare i nomi? In tutti e due i codici?
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 28 May 2011, 22:34:28
Nel codice php devi cambiare i nomi di campo che ho usato io con quelli corrispondenti ai nomi dei tuoi presenti nel database che hanno la stessa funzione.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Gnome12 28 May 2011, 22:41:54
<?php

$db =& JFactory::getDBO();

$query = "
  SELECT  `id`, `regione`
   FROM `#__regioni` ORDER BY `regione`";

$db->setQuery($query);
$nomes = $db->loadAssocList();
$option_reg="";
  foreach ( $nomes as $v ) {
  $selected="";
  $id =  $v['id'];
  $regione = $v['regione'];
  if ($id==JRequest::getVar('regione',0,'GET','INT')) {
  $selected="selected=\"selected\"";
  }

$option_reg.="<option value=\"$id\" $selected>$regione</option>\n";

}

Il mio campo in questo caso è regioni, quindi dove vedo regione sostituisco, giusto? Scusa la demenza... :D
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 28 May 2011, 22:44:51
Si. Dovrebbe andare bene in quel modo, esclusa la variabile $regione quella puoi lasciarla.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Gnome12 28 May 2011, 23:26:18
Niente, non va. Ho modificato il codice ma nei campi non mi escono le liste. Questo è il link per dare un'okkiata http://www.cliccacitta.it/sito/index.php?option=com_chronocontact&chronoformname=ricerca (http://www.cliccacitta.it/sito/index.php?option=com_chronocontact&chronoformname=ricerca)
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Gnome12 28 May 2011, 23:27:57
Ho utilizzato questo procedimento: importate tabelle nel db, creato form ed incollato codici che ho modificato come detto sopra.

Questo è il codice modificato, controllando mi sono accorto che gli id sono regione, provincia, comune:

<?php

$db =& JFactory::getDBO();

$query = "
  SELECT  `id`, `regione`
   FROM `#__regioni` ORDER BY `regione`";

$db->setQuery($query);
$nomes = $db->loadAssocList();
$option_reg="";
  foreach ( $nomes as $v ) {
  $selected="";
  $id =  $v['id'];
  $regione = $v['regione'];
  if ($id==JRequest::getVar('regione',0,'GET','INT')) {
  $selected="selected=\"selected\"";
  }

$option_reg.="<option value=\"$id\" $selected>$regione</option>\n";

}


$query = "
  SELECT  `id`, `provincia`
   FROM `#__province` WHERE `id_regione`=".JRequest::getVar('regione',0,'GET','INT')." ORDER BY `provincia`";

$db->setQuery($query);
$nomes = $db->loadAssocList();
$option_pro="";
  foreach ( $nomes as $v ) {
  $selected="";
  $id =  $v['id'];
  $province = $v['provincia'];
  if ($id==JRequest::getVar('provincia',0,'GET','INT')) {
  $selected="selected='selected'";
  }

$option_pro.="<option value=\"$id\" $selected>$provincia</option>\n";

}


$query = "
  SELECT  `id`, `comune`
   FROM `#__comuni` WHERE `id_provincia`=".JRequest::getVar('provincia',0,'GET','INT')." ORDER BY `comune`";

$db->setQuery($query);
$nomes = $db->loadAssocList();
$option_com="";
  foreach ( $nomes as $v ) {
  $id =  $v['id'];
  $comune = $v['comune'];

$option_com.="<option value=\"$id\" $selected>$comune</option>\n";

}

?>


<div class="form_item">
        <div class="form_element cf_ricerca">
          <div style="clear:both;"><label class="cf_label">Regione</label>
           
<select id="regione" name="regione"  onchange="provincia(this.form);" class="cf_inputbox validate-selection"  ><option value="" selected="selected">Seleziona</option>

<?php echo $option_reg; ?>

</select>

 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
        <div class="form_element cf_ricerca">
          <div style="clear:both;"><label class="cf_label">Provincia</label>

       <select id="provincia" name="provincia" onchange="reload(this.form);" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_pro; ?>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
        <div class="form_element cf_ricerca">
          <div style="clear:both;"><label class="cf_label">Comuni</label>

       <select id="comune" name="comune" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_com; ?>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Gnome12 29 May 2011, 13:16:56
Sono arrivato a questo punto: http://www.cittasportiva.it/sito/index.php?option=com_chronocontact&chronoformname=form_ajax_inizio (form trovato su un sito)

Ora mi servirebbe inserire un'altra casella volta non collegata (dove l'utente andrà a scegliere l'attività desiderata), e far fungere il tutto come fosse una ricerca. E' possibile?
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Mogikino 05 Oct 2011, 17:39:49
Ciao Vales, sto impazzendo a collegare i miei dropdown alle tabelle che ho creato del mio database seguendo le funzioni sql che hai postato tu.
:

 CREATE TABLE `regioni` (
  `id` int(11) unsigned NOT NULL,
  `regione` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;


CREATE TABLE `province` (
  `id` int(10) unsigned NOT NULL,
  `id_regione` int(10) unsigned NOT NULL,
  `provincia` text NOT NULL,
  `sigla` varchar(2) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;


CREATE TABLE `comuni` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `id_regione` int(10) unsigned NOT NULL,
  `id_provincia` int(10) unsigned NOT NULL,
  `comune` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;

Quindi ho le rispettive tabelle nel DB.
Inserisco i seguenti codici Html e Javascript ma non funziona, mi da i campi dropdown vuoti.
HTML:
:

 <?php

$db 
=& JFactory::getDBO(); 

$query "
  SELECT  `id`, `regione`
   FROM `#__regioni` ORDER BY `regione`"


$db->setQuery($query);
$nomes $db->loadAssocList();
$option_reg="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$regione $v['regione'];
  if (
$id==JRequest::getVar('regione',0,'GET','INT')) {
  
$selected="selected=\"selected\"";
  }

$option_reg.="<option value=\"$id\" $selected>$regione</option>\n";

}


$query "
  SELECT  `id`, `provincia`
   FROM `#__province` WHERE `id_regione`="
.JRequest::getVar('regione',0,'GET','INT')." ORDER BY `provincia`"

$db->setQuery($query);
$nomes $db->loadAssocList();
$option_pro="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$province $v['provincia'];
  if (
$id==JRequest::getVar('provincia',0,'GET','INT')) {
  
$selected="selected='selected'";
  }

$option_pro.="<option value=\"$id\" $selected>$province</option>\n";

}


$query "
  SELECT  `id`, `comune`
   FROM `#__comuni` WHERE `id_provincia`="
.JRequest::getVar('provincia',0,'GET','INT')." ORDER BY `comune`"

$db->setQuery($query);
$nomes $db->loadAssocList();
$option_com="";
  foreach ( 
$nomes as $v ) {
  
$id =  $v['id'];
  
$comune $v['comune'];

$option_com.="<option value=\"$id\" $selected>$comune</option>\n";

}

?>



<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Regioni</label>
           
<select id="regione" name="regione"  onchange="province(this.form);" class="cf_inputbox validate-selection"  ><option value="" selected="selected">Seleziona</option>

<?php echo $option_reg?>

</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">Provincie</label>

       <select id="provincia" name="provincia" onchange="reload(this.form);" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_pro?>
       
</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">Comuni</label>

       <select id="comune" name="comune" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_com?>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>
Javascript:
:

function province(form)
{
var reg=form.regione.options[form.regione.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=reg_prov_com&regione=' + reg ;
}

function reload(form)
{
var prov=form.provincia.options[form.provincia.options.selectedIndex].value;
var reg=form.regione.options[form.regione.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=reg_prov_com&provincia=' + prov + '&regione=' + reg;
}

Modifico il nome del form (chronoformname con nome_mio_form) ma niente da fare.
Dove sbaglio?
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: nikoweb 21 Nov 2011, 19:38:40
Salve a tutti,
devo creare un form Classico regioni, provincie e comuni del quale avete parlato molto chiaramente, ma devo inserire una variabile del destinatario del form. Nel senso una volta compilato il form da un utente, questo viene invito all'amministratore del sito e in copia ad una mail che cambia in base alla provincia.
Secondo voi è possibile?
Grazie
Nicola
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 25 Nov 2011, 19:35:11
Si è possibile associando nella tabella province ad ogni provincia un'email, ed utilizzando poi tale valore nel campo Dynamic to.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Noein 02 Dec 2011, 13:11:27
Ciao a tutti!
Anche io sto provando a implementare il form sullo stile regioni/provincie/comuni sul mio sito ma, nonostante le ottime spiegazioni qui trovate, non riesco a farlo funzionare (e da qui il dubbio di essere abbastanza tardo.  ??? )

Ho utilizzato i codici gentilmente postati da vales, modificandoli secondo le mie necessità ma niente da fare: le caselle di selezione rimangono invariabilmente vuote. Non è che qualcuno potrebbe darmi una mano?

I codici utilizzati sono questi:

Codice per la creazione delle tabelle
:
CREATE TABLE `regioni` (
  `id` int(11) unsigned NOT NULL,
  `regione` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;


CREATE TABLE `province` (
  `id` int(10) unsigned NOT NULL,
  `provincia` text NOT NULL,
`id_regione` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;


CREATE TABLE `comuni` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `id_provincia` int(10) unsigned NOT NULL,
  `comune` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;


INSERT INTO regioni (id, regione) VALUES
(1, 'Piemonte'),
...

INSERT INTO province (id, provincia, id_regione) VALUES
(1, 'Torino', 1),
...

INSERT INTO comuni (id, id_provincia, comune) VALUES
(1002, 1, "Airasca"),
...

Ovviamente, i puntini di sospensioni li ho aggiunti solo qui per non riportare interamente tutti i dati con cui popolo le tabelle.

Questo è il codice html relativo ai dropdown menu:

:
<!-- ############## Inizio dropdown ###################################-->
<?php

$db 
=& JFactory::getDBO(); 

$query "
  SELECT  `id`, `regione`
   FROM `#__regioni` ORDER BY `regione`"


$db->setQuery($query);
$nomes $db->loadAssocList();
$option_reg="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$regione $v['regione'];
  if (
$id==JRequest::getVar('regione',0,'GET','INT')) {
  
$selected="selected=\"selected\"";
  }

$option_reg.="<option value=\"$id\" $selected>$regione</option>\n";

}


$query "
  SELECT  `id`, `provincia`
   FROM `#__province` WHERE `id_regione`="
.JRequest::getVar('regione',0,'GET','INT')." ORDER BY `provincia`"

$db->setQuery($query);
$nomes $db->loadAssocList();
$option_pro="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$province $v['provincia'];
  if (
$id==JRequest::getVar('provincia',0,'GET','INT')) {
  
$selected="selected='selected'";
  }

$option_pro.="<option value=\"$id\" $selected>$province</option>\n";

}


$query "
  SELECT  `id`, `comune`
   FROM `#__comuni` WHERE `id_provincia`="
.JRequest::getVar('provincia',0,'GET','INT')." ORDER BY `comune`"

$db->setQuery($query);
$nomes $db->loadAssocList();
$option_com="";
  foreach ( 
$nomes as $v ) {
  
$id =  $v['id'];
  
$comune $v['comune'];

$option_com.="<option value=\"$id\" $selected>$comune</option>\n";

}

?>



<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Regioni</label>
           
<select id="regione" name="regione"  onchange="province(this.form);" class="cf_inputbox validate-selection"  ><option value="" selected="selected">Seleziona</option>

<?php echo $option_reg?>

</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">Provincie</label>

       <select id="provincia" name="provincia" onchange="reload(this.form);" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_pro?>
       
</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">Comuni</label>

       <select id="comune" name="comune" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_com?>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>
<!-- ############## Fine dropdown ###################################-->

E questo, infine, quello relativo al javascript:

:
function province(form)
{
var reg=form.regione.options[form.regione.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=ordina_sorprendo_bkp3_con_dropdown_vales1=' + reg ;
}

function reload(form)
{
var prov=form.provincia.options[form.provincia.options.selectedIndex].value;
var reg=form.regione.options[form.regione.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=ordina_sorprendo_bkp3_con_dropdown_vales1=' + prov + '&regione=' + reg;
}

Dove ho sostituito:

:
index.php?option=com_chronocontact&chronoformname=reg_prov_com&provincia=
con:

:
index.php?option=com_chronocontact&chronoformname=compila_form_bkp3_con_dropdown_vales1=
Qualche anima pia disposta a darmi una mano?  :)
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Noein 04 Dec 2011, 11:36:12
Continuando ad armeggiare a tempo perso con il codice, mi sono reso conto che sostituendo, nella sezione HTML del Form code le stringhe:

:
FROM `#__regioni` ORDER BY `regione`";

FROM `#__province` WHERE `id_regione`=".JRequest::getVar('regione',0,'GET','INT')." ORDER BY `provincia`";

FROM `#__comuni` WHERE `id_provincia`=".JRequest::getVar('provincia',0,'GET','INT')." ORDER BY `comune`";

con le stringhe:

:
FROM `regioni` ORDER BY `regione`";
 
FROM `province` WHERE `id_regione`=".JRequest::getVar('regione',0,'GET','INT')." ORDER BY `provincia`";
 
 FROM `comuni` WHERE `id_provincia`=".JRequest::getVar('provincia',0,'GET','INT')." ORDER BY `comune`";

In effetti i dati delle tabelle o, quantomeno, i dati della tabella regioni vengono rilevati. Tuttavia, non appena effettuo la scelta della regione (ad esempio, la basilicata), l'url del form diventa:


/index.php?option=com_chronocontact&chronoformname=compila_form_bkp3_con_dropdown_vales1=17


e mi appare il messaggio:


"There is no form with this name or may be the form is unpublished, Please check the form and the url and the form management".

Ancora nessuna idea?

: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 04 Dec 2011, 14:21:16
Dal tipo di errori che hai mostrato sembra di capire che non hai adattato il codice proposto ai reali nomi dei forms che stai usando e delle tabelle del database come hai già rilevato.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Noein 04 Dec 2011, 14:58:48
Ciao vales, ti ringrazio per la risposta (a proposito, già che ci sono ti ringrazio anche per questi codici per i dropdown nidificati). In effetti mi sono accorto di aver dimenticato di aggiungere  nel codice javascript le desinenze: 
:
&regione ed
:
&provincia al termine del nome  del form, per cui il form che derivava dopo qualsiasi scelta finiva necessariamente con l'essere inesistente.

Adesso ho un altro problema dovuto alla struttura del mio form. Ci sono alcune caselle da compilare prima dei dropdown e, così,  non appena effettuo la scelta delle regioni, il form si ricarica cancellando quanto scritto dall'utente prima di giungere ai dropdown.
Vedo, comunque, di riuscire a sbrigarmela da solo (sono distratto da morire ma non vado in cerca della "pappa" pronta!)  ::)
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 05 Dec 2011, 16:40:30
Mi ricordo che trovai anch'io il problema, l'ho aggirato brutalmente inserendo le drop collegate all'inizio del form.

Penso però che sia risolvibile con un javascript che passi i valori dei campi inseriti modificando la  funzione reload() ed aggiungendo all'URL di rinvio tutti i valori dei campi.

Ovviamente essi devono essere tutti recuperati con le corrispondenti

:
<?php JRequest::getVar('nome_campo','','get'); ?>
all'inizio codice del form.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Noein 11 Dec 2011, 04:52:18
Ciao VAles, grazie davvero per i tuoi suggerimenti e per la tua disponibilità.
Alla fine ho risolto anche io mettendo i dropdown all'inizio del form ;)
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: giormagno 20 Dec 2011, 19:36:31
ma questo procedimento va bene anche per l'ultima versione di chronoform? io la sezione javascript non me la ritrovo
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: Noein 20 Dec 2011, 20:38:48
Io utilizzo la versione 3.2 per Joomla 1.5
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: antonello66 13 Jan 2012, 15:19:11
Buongiorno a tutti, un saluto a Vales del quale ho seguito i tutorial e a cui chiedo aiuto. Dunque, sto cercando di imparare ad utilizzare gli script proposti ma proprio non riesco; allora ho caricato modificando gli script ma probabilmente qualcosa ancora mi sfugge quind chiedo se vi fosse possibile indicarmi dove sbaglio.

 Questo il codice html


:
<!-- inizio codice campi form -->


<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">regioni</label>
           
<select name="id_regioni"  onfocus="fillCategory();" onChange="SelectCategoria();" class="cf_inputbox validate-selection"  ><Option value="">Seleziona</option>


</select> provincia


       <select id="id_province" name="provincia" class="cf_inputbox validate-selection" ><Option value="">Seleziona</option>
       
</select>


</select> comune


       <select id="id_comuni" name="comune" class="cf_inputbox validate-selection" ><Option value="">Seleziona</option>
       
</select>
       
 <>   
    <>
  <div class="cfclear">&nbsp;<>
<>


<div class="form_item">
  <div class="form_element cf_button">
    <input value="Invia" name="button_1" type="submit" /><input type="reset" name="reset" value="Reset"/>
  <>
  <div class="cfclear">&nbsp;<>
<>


Questo il codice java


:
<?php
    
    $query
"
           SELECT distinct(id) FROM `#__regioni`"
;
           
$db->setQuery($query);
       
$nomes $db->loadAssocList();
           
$nome_options "";
                                              
// inizio ciclo sezioni
               
foreach ( $nomes as $nt2 ) {
       
             echo 
"\n if(document.ChronoContact_Demo_1.id_regioni.value == '".$nt2['id']."'){ ";
     
      
$query"
         SELECT `id`,`title` FROM `#__regioni` WHERE `regioni` ='"
.$nt2['id']."' ORDER BY `title`" ;
         
$db->setQuery($query);
     
$nomes $db->loadAssocList();
         
$nome_options "";
                                               
//inizio ciclo province
               
foreach ( $nomes as $nt3 ) {


echo 
"\n addOption(document.ChronoContact_Demo_1.id_province,'".$nt3['id']."', '".$nt3['title']."'); ";


// fine ciclo province


  //inizio ciclo comuni
               
foreach ( $nomes as $nt3 ) {


echo 
"\n addOption(document.ChronoContact_Demo_1.id_comuni,'".$nt3['id']."', '".$nt3['title']."'); ";


// fine ciclo comuni
echo "\n}"// fine della if Javascript 


// fine loop sezioni
?>



}
// fine della funzione javascripts
//////////////////


function removeAllOptions(selectbox)
{
    var i;
    for(i=selectbox.options.length-1;i>=1;i--)
    {
        selectbox.options[i]=null;
        //selectbox.remove(i);
    }
}




function addOption(selectbox, value, text )
{
    var optn = document.createElement("OPTION");
    optn.text = text;
    optn.value = value;


    selectbox.options.add(optn);
}


e in allegato la tabella in sql per creare le tabelle in db mysql, che ho trovato in giro sulla rete e che produce le tabelle senza jos_ , e che ho provveduto a modificare inserendo jos_ davanti ai rispettivi nomi.
Ora premesso che ho fatto (credo) tutto come indicato,...ma perchè non riesco a farlo funzionare?
Questo è l'url dove è possibile dare una occhiata:
 http://antonello.comuf.com/index.php?option=com_chronocontact&chronoformname=Demo_1


Ringrazio già in anticipo di cuore per qualsiasi aiuto.
Ciao da Antonello

[allegato eliminato da un amministratore essendo vecchio più di un anno]
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 14 Jan 2012, 19:34:40
Il form non è raggiungibile.

Vedo poi che nel codice non ci sono i caricamenti dei dati delle provincie e comuni.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: nikoweb 20 Jan 2012, 14:23:32
Si è possibile associando nella tabella province ad ogni provincia un'email, ed utilizzando poi tale valore nel campo Dynamic to.
Scusami ma non sono un fenomeno. La cosa dovrei farla associata alla Regione e non più alla provincia.
Quindi secondo te dovrei prendere la tabella delle regioni e aggiungere un campo email_regione a fianco di ogni regione. Poi basta nel form mettere il campo email:regione su dynamic to... oppure sto dicendo ca....?
Grazie infinite
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 20 Jan 2012, 17:10:05
Il campo va letto dal database dopo la scelta della regione e poi assegnato ad un campo nascosto.
Nel dinamic to userai il nome del campo nascosto.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: nikoweb 20 Jan 2012, 19:51:10
Il campo va letto dal database dopo la scelta della regione e poi assegnato ad un campo nascosto.
Nel dinamic to userai il nome del campo nascosto.

Quindi devo creare un campo nascosto nel form che importi il dato dalla tabella del database regione. Scusa ma son de coccio. E come faccio a dire a chronoform di importare il dato dalla tabella e metterlo in quel campo?
Avevo pensato di modificare la tabella regioni inserendo una colonna "mailreg" dove inserisco la mail per ogni regione. Però vado a nasco, non capendo niente di codici e linguaggio. Ho costruito il form seguendo le tue utili informazioni, poi ho aggiunto tutte le altre voci che mi servivano, ma a questo punto sono in difficoltà.
Grazie Per le tue info.
Nic

[allegato eliminato da un amministratore essendo vecchio più di un anno]
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: nikoweb 20 Jan 2012, 20:09:56
scusate mi si bloccava safari durante il salvataggio del post e me lo ha riportato 4 volte.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: nikoweb 23 Jan 2012, 08:19:26
Altro piccolo problema.
Io ho aggiunto nel form regione provincia comune altre voci sopra, tipo mone cognome azienda e te.
Mi ritrovo però con il problema che se compilo i campi nome  e cognome ecc. prima di scegliere i campi regione prov, il nome  e cognome si cancella, in quanto il form effettua un reload per caricare le provincie. Come posso ovviare a questo inconveniente?
Grazie infinite
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 23 Jan 2012, 17:47:23
Mi sembra lo abbiamo detto qualche post sopra.

due possibilità

1) Prima metti le dropdown e poi gli altri campi

2) Passi i parametri nel link di reload e poi recuperi i valori.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: nikoweb 24 Jan 2012, 20:07:47
Scusa Vales ma son de coccio e capisco poco di php java ecc.
Il form funziona, ho inserito altri campi tipo nome cognome azienda ecc sopra le 3 dropdown. Non riesco però a capire come si fa a passare i parametri nel link di reload e poi recuperare i valori come hai spiegato nel post precedente. Inoltre volevo attribuire una mail per ogni regione scelta, ho aggiunto un campo mailre alla tabella regione, ma non so tecnicamente portarmi questo valore nel form. Allora ho creato un'altra tabella e una quarta dropdown che carica la mail corrispondente dopo la scelta della regione. Però questa mail non mi si prende nel campo dynamic to.
Inoltre se provo a compilare il form,  mi arriva una mail don indicato il numero di "id" al posto della regione, provincia e comune, dove sto sbagliando, a parte che non capisco nulla?
Ti allego il codice, se per caso hai voglia e soprattutto il tempo di darci un'occhiata.
Grazie infinite




:
<div class="form_item">
  <div class="form_element cf_text"> <span class="cf_text">FORM PER RICHIESTA PREVENTIVO/OFFERTA/INCONTRO</span> <>
  <div class="clear">&nbsp;<>
<>


<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label">Nome</label>
    <input class="cf_inputbox" maxlength="150" size="30" id="text_3" name="nome" type="text" />
 
  <>
  <div class="clear">&nbsp;<>
<>


<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label">Cognome</label>
    <input class="cf_inputbox" maxlength="150" size="30" id="text_4" name="cognome" type="text" />
 
  <>
  <div class="clear">&nbsp;<>
<>


<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label">Azienda</label>
    <input class="cf_inputbox" maxlength="150" size="30" id="text_5" name="azienda" type="text" />
 
  <>
  <div class="clear">&nbsp;<>
<>
<?php


$db 
=& JFactory::getDBO(); 


$query "
  SELECT  `id`, `regione`
   FROM `#__regioni` ORDER BY `regione`"



$db->setQuery($query);
$nomes $db->loadAssocList();
$option_reg="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$regione $v['regione'];
  if (
$id==JRequest::getVar('regione',0,'GET','INT')) {
  
$selected="selected=\"selected\"";
  }


$option_reg.="<option value=\"$id\" $selected>$regione</option>\n";


}




$query "
  SELECT  `id`, `provincia`
   FROM `#__province` WHERE `id_regione`="
.JRequest::getVar('regione',0,'GET','INT')." ORDER BY `provincia`"


$db->setQuery($query);
$nomes $db->loadAssocList();
$option_pro="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$province $v['provincia'];
  if (
$id==JRequest::getVar('provincia',0,'GET','INT')) {
  
$selected="selected='selected'";
  }


$option_pro.="<option value=\"$id\" $selected>$province</option>\n";


}




$query "
  SELECT  `id`, `comune`
   FROM `#__comuni` WHERE `id_provincia`="
.JRequest::getVar('provincia',0,'GET','INT')." ORDER BY `comune`"


$db->setQuery($query);
$nomes $db->loadAssocList();
$option_com="";
  foreach ( 
$nomes as $v ) {
  
$id =  $v['id'];
  
$comune $v['comune'];


$option_com.="<option value=\"$id\" $selected>$comune</option>\n";


}


$query "
  SELECT  `id`, `mailre`
   FROM `#__mailre` WHERE `id_regione`="
.JRequest::getVar('regione',0,'GET','INT')." ORDER BY `mailre`"


$db->setQuery($query);
$nomes $db->loadAssocList();
$option_ma="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$mailre $v['mailre'];
  if (
$id==JRequest::getVar('mailre',0,'GET','INT')) {
  }


$option_ma.="<option value=\"$id\" $selected>$mailre</option>\n";


}


?>





<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Regioni</label>
           
<select id="regione" name="regione"  onchange="province(this.form);" class="cf_inputbox validate-selection"  ><option value="" selected="selected">Seleziona</option>


<?php echo $option_reg?>


</select>


 <>   
    <>
  <div class="cfclear">&nbsp;<>
<>


<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Provincie</label>


       <select id="provincia" name="provincia" onChange="reload(this.form);" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>


<?php echo $option_pro?>
       
</select>
       
 <>   
    <>
  <div class="cfclear">&nbsp;<>
<>


<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Comuni</label>


       <select id="comune" name="comune" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>


<?php echo $option_com?>
       
</select>


 <>   
    <>
  <div class="cfclear">&nbsp;<>
<>


<div class="form_item">
        <div class="form_element cf_textbox">
          <label class="cf_label">mailre</label>
       <select id="mailre" name="mailre" class="cf_inputbox validate-selection" >


<?php echo $option_ma?>


</select>
       
 <>   
    <>
  <div class="cfclear">&nbsp;<>
<>


  <div class="clear">&nbsp;<>
<>


  <div class="form_element cf_textbox">
    <label class="cf_label">Telefono</label>
    <input class="cf_inputbox validate-number" maxlength="150" size="30" id="text_10" name="telefono" type="text" />
 
  <>
  <div class="clear">&nbsp;<>
<>

[/size]
:
function province(form)
{
var reg=form.regione.options[form.regione.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=offerte_reg_prov_com&regione=' + reg ;
}


function reload(form)
{
var prov=form.provincia.options[form.provincia.options.selectedIndex].value;
var reg=form.regione.options[form.regione.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=offerte_reg_prov_com&provincia=' + prov + '&regione=' + reg;}
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: antonello66 07 Feb 2012, 20:36:00
Il campo va letto dal database dopo la scelta della regione e poi assegnato ad un campo nascosto.
Nel dinamic to userai il nome del campo nascosto.
Buonasera a tutti, vorrei chiedere a Vales se potrebbe fornire, in linea generale, il codice per estrarre la scelta dal campo regioni/province e poi assegnarlo al campo nascosto. A proposito in chronoform c'è hidden field (campo nascosto), è possibile usare quello? Se si come? Poi c'è un problemi fastidioso che non riesco a risolvere e cioè se i settaggi in
 
Load Chronoforms CSS/JS Files?[/t][/t]    No  Yes
li lascio su YES il risultato è così: 
http://antonello.comuf.com/index.php?option=com_chronocontact&chronoformname=form_ajax_inizio (http://antonello.comuf.com/index.php?option=com_chronocontact&chronoformname=form_ajax_inizio)
 
se invece lo setto su NO il risultato è così:
http://antonello.comuf.com/index.php?option=com_chronocontact&chronoformname=form_ajax_inizio1 (http://antonello.comuf.com/index.php?option=com_chronocontact&chronoformname=form_ajax_inizio1)
 
Ringrazio di vero cuore per qualsiasi risposta potrete darmi. Saluti da Antonello
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: antonello66 09 Feb 2012, 17:18:33
Salve, non c'è nessuno che potrebbe aiutarmi a creare il collegamento di cui parlavo nel post prima? Garzie, Antonello
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: mma87 05 Apr 2012, 15:28:53
ciao a tutti!
innanzitutto mi complimento per l'ottima spiegazione! avrei bisogno di una modifica che però non riesco ad effettuare... mi spiego meglio:
dovrei creare una sorta di ricerca con 2 dropdown, il tasto cerca e il tasto reset.
usando il codice presente nella prima pagina di questo topic (il codice senza l'utilizzo del database) sono riuscito a collegare i 2 dropdown però adesso avrei bisogno che ad ogni scelta del secondo dropdown, quando l'utente clicca su cerca, quest'ultimo deve essere reindirizzato ad una determinata pagina.
per es se scegliere "categoria 1 sez 1" viene indirizzato alla pagina  "categoria 1 sez 1", scegliendo "cat 2 sez 1" va alla pagina "cat 2 sez 1" e cosi via...
qualcuno può aiutarmi? uso joomla 1.5 e chronoform v3
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 06 Apr 2012, 17:48:29
Credo dovresti inserire nei valori della seconda drop gli URL di destinazione di ciascuna "cat sez" associate.

Nel campo codice di Server side validation code qualcosa di questo tipo che dopo il submit sul tasto "cerca" apre la pagina con URL scelto.

:
<?php
global $mainframe;

$mainframe->redirect(JRequest::getVar('nomecampodrop2','','post'));
?>

: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: mrfelix86 19 Apr 2012, 00:12:10
Complimenti a tutti x le info e le cose che ho imparato...

ho un problema: il form mi restituisce un errore nell'array associativo

foreach ( $nomes as $v ) {

il messaggio è il seguente

Warning: Invalid argument supplied for foreach() in xxxx\components\com_chronoforms\form_actions\custom_code\custom_code.php(18) : eval()'d code on line 12

Warning: Invalid argument supplied for foreach() xxx\components\com_chronoforms\form_actions\custom_code\custom_code.php(18) : eval()'d code on line 32

Warning: Invalid argument supplied for foreach() xxx\components\com_chronoforms\form_actions\custom_code\custom_code.php(18) : eval()'d code on line 52

a cosa è dovuto secondo voi? ??? ??

grz!!!!!   :D
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: mma87 19 Apr 2012, 12:04:32
grazie mille vales per la risposta, adesso funziona! :)
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 21 Apr 2012, 08:17:05
Benvenuto nella comunità italiana di Joomla mrfelix86,
 
 
Complimenti a tutti x le info e le cose che ho imparato...

ho un problema: il form mi restituisce un errore nell'array associativo

foreach ( $nomes as $v ) {

il messaggio è il seguente

Warning: Invalid argument supplied for foreach() in xxxx\components\com_chronoforms\form_actions\custom_code\custom_code.php(18) : eval()'d code on line 12

Warning: Invalid argument supplied for foreach() xxx\components\com_chronoforms\form_actions\custom_code\custom_code.php(18) : eval()'d code on line 32

Warning: Invalid argument supplied for foreach() xxx\components\com_chronoforms\form_actions\custom_code\custom_code.php(18) : eval()'d code on line 52

a cosa è dovuto secondo voi? ??? ??

grz!!!!!   :D

 Andrebbe verificato il codice del form nelle linee indicate ed il risultato della query se carichi da tabella di database
 
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: dinox 27 Apr 2012, 19:52:27
Salve piccolo problemino:
Ho la necessità di creare un form con tre dropdown (selezione categoria, provincia e città) e un campo testo con un tasto invia, che invierà il messaggio scritto nel campo a tutti gli utenti che fanno parte della categoria selezionata.

Joomla 2.5 gestisce già i gruppi utenti e con il plugin user profile si hanno anche i campi città e provincia.

Ho creato un form con queste tre select leggendo nel forum:

:
<?php
 
//questo codice permette di popolare la dropdown categorie

    
$db =& JFactory::getDBO();         
    
$query "
    SELECT id,title
    FROM jos_usergroups
WHERE id>8
    ORDER BY title "
;
    
$db->setQuery($query);
    
$nomes $db->loadAssocList();
    
$nome_options "";
      foreach ( 
$nomes as $v ) {

      
$nome_options .= "<option value='".$v['id']."' >".$v['title']."</option>";
  
      }

     echo 
$nome_options;
?>


<?php
 
//questo codice permette di popolare la dropdown provincie

    
$db =& JFactory::getDBO();         
    
$query "
    SELECT user_id,profile_key,profile_value
    FROM jos_user_profiles
WHERE profile_key='profile.region'
    ORDER BY profile_value "
;
    
$db->setQuery($query);
    
$nomes $db->loadAssocList();
    
$nome_options "";
      foreach ( 
$nomes as $v ) {

      
$nome_options .= "<option value='".$v['user_id']."' >".$v['profile_value']."</option>";
  
      }

     echo 
$nome_options;
?>
         

<?php
 
//questo codice permette di popolare la dropdown città

    
$db =& JFactory::getDBO();         
    
$query "
    SELECT user_id,profile_key,profile_value
    FROM jos_user_profiles
WHERE profile_key='profile.city'
    ORDER BY profile_value "
;
    
$db->setQuery($query);
    
$nomes $db->loadAssocList();
    
$nome_options "";
      foreach ( 
$nomes as $v ) {

      
$nome_options .= "<option value='".$v['user_id']."' >".$v['profile_value']."</option>";
  
      }

     echo 
$nome_options;
?>
         


inserendole delle tre caselle dropdown:

categorie (collegata alla tabella jos_usergroups)
provincie e città (jos_user_profiles campi city e region)

il form visualizza correttamente i dati, ma devo fare in modo che:
1) quando seleziono una categoria utenti le altre due dropdown (provincia e regione) mi devono restituire i dati in base agli utenti contenuti in quella categoria
2) inviare l'email a quella determinata categoria (in base alle scelte delle tre dropdown)
 
qualcuno può darmi una mano?
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: PippoAlfredo 23 May 2012, 10:50:06
scusate, io non capisco come e dove inserire il codice che avete postato..potete dirmi passo passo dove mettere il codice?


grazie della risposta..
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: dspweb 31 Aug 2012, 11:36:16
@francesco87 benvenuto in Joomla,
c'è voluto un po' ma ho trovato una soluzione, se hai già risolto bene lo stesso e servirà ad altri.

Ho cambiato completamente impostazione. Questa soluzione richiede di avere disponibili delle tabella in sql di regioni provincie e comuni (se cercate per regioni provincie comuni sql le trovate).

Questo il codice per Form HTML
:
<?php

$db 
=& JFactory::getDBO(); 

$query "
  SELECT  `id`, `regione`
   FROM `#__regioni` ORDER BY `regione`"


$db->setQuery($query);
$nomes $db->loadAssocList();
$option_reg="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$regione $v['regione'];
  if (
$id==JRequest::getVar('regione',0,'GET','INT')) {
  
$selected="selected=\"selected\"";
  }

$option_reg.="<option value=\"$id\" $selected>$regione</option>\n";

}


$query "
  SELECT  `id`, `provincia`
   FROM `#__province` WHERE `id_regione`="
.JRequest::getVar('regione',0,'GET','INT')." ORDER BY `provincia`"

$db->setQuery($query);
$nomes $db->loadAssocList();
$option_pro="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$province $v['provincia'];
  if (
$id==JRequest::getVar('provincia',0,'GET','INT')) {
  
$selected="selected='selected'";
  }

$option_pro.="<option value=\"$id\" $selected>$province</option>\n";

}


$query "
  SELECT  `id`, `comune`
   FROM `#__comuni` WHERE `id_provincia`="
.JRequest::getVar('provincia',0,'GET','INT')." ORDER BY `comune`"

$db->setQuery($query);
$nomes $db->loadAssocList();
$option_com="";
  foreach ( 
$nomes as $v ) {
  
$id =  $v['id'];
  
$comune $v['comune'];

$option_com.="<option value=\"$id\" $selected>$comune</option>\n";

}

?>



<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;"><label class="cf_label">Regioni</label>
           
<select id="regione" name="regione"  onchange="province(this.form);" class="cf_inputbox validate-selection"  ><option value="" selected="selected">Seleziona</option>

<?php echo $option_reg?>

</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">Provincie</label>

       <select id="provincia" name="provincia" onchange="reload(this.form);" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_pro?>
       
</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">Comuni</label>

       <select id="comune" name="comune" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_com?>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>

questo il codice per Form Javascript
:
function province(form)
{
var reg=form.regione.options[form.regione.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=reg_prov_com&regione=' + reg ;
}

function reload(form)
{
var prov=form.provincia.options[form.provincia.options.selectedIndex].value;
var reg=form.regione.options[form.regione.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=reg_prov_com&provincia=' + prov + '&regione=' + reg;
}

Ovviamente vanno adattati i nomi delle tabelle ed i nomi dei campi   in caso di differenze rispetto a quelli proposti nell'esempio.

le mie tabelle sono costruite così:

:
CREATE TABLE `regioni` (
  `id` int(11) unsigned NOT NULL,
  `regione` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;


CREATE TABLE `province` (
  `id` int(10) unsigned NOT NULL,
  `id_regione` int(10) unsigned NOT NULL,
  `provincia` text NOT NULL,
  `sigla` varchar(2) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;


CREATE TABLE `comuni` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `id_regione` int(10) unsigned NOT NULL,
  `id_provincia` int(10) unsigned NOT NULL,
  `comune` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;

Ciao Vales, riapro una discussione magari un po' vecchia, in questo post descrivevi come fare per le select concatenate per regioni-province-comuni.. la mia domanda è: Serve il Chronocontact installato?
E poi: lo stesso procedimento è utilizzabile per Chronoforms 4.0 RC3 ?
Grazie in anticipo
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 31 Aug 2012, 12:28:07
si io utilizzavo quel codice in chronoforms (lo vedi come chronocontact nei componenti di Joomla 1.5).

La versione V4 ha invece una funzione nell'elemento drop down chiamata dynamic data che dovrebbe popolare automanticamente la tendina con i dati provenienti da una tabella di database.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: dspweb 31 Aug 2012, 12:38:17
si io utilizzavo quel codice in chronoforms (lo vedi come chronocontact nei componenti di Joomla 1.5).

La versione V4 ha invece una funzione nell'elemento drop down chiamata dynamic data che dovrebbe popolare automanticamente la tendina con i dati provenienti da una tabella di database.

Grazie per la tempestiva risposta, hai già avuto modo di provarlo?
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: dspweb 03 Sep 2012, 16:43:41
si io utilizzavo quel codice in chronoforms (lo vedi come chronocontact nei componenti di Joomla 1.5).

La versione V4 ha invece una funzione nell'elemento drop down chiamata dynamic data che dovrebbe popolare automanticamente la tendina con i dati provenienti da una tabella di database.


Grazie,
sono riuscito a leggere i dati dal DB e inserirli nella prima select (Regioni), ora dovrei riempire le sucessive (Province, Comuni) con i dati dipendenti in cascata: Regioni -> Province -> Comuni, sempre caricati dal DB

ho provato, invano, a configurare il tab DynamicData e anche un Evento di tipo DynamicDropdown

mi sai accendere una piccola lampadina?
Grazie in anticipo
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 03 Sep 2012, 20:00:00
Si ho provato con una drop e funziona.

Va utilizzata un'action DB Multi Record Loader in On Load per caricare tutti i dati di una tabella.

configurare Table, Model id e Fields, in quest'ultimo occorre inserire la chiave primaria della tabella (se fatta con chronoforms normalmente è cf_id) ed il nome del campo da visualizzare nella drop.

Nell'elemento dropdown occorre abilitare Dynamic data e negli altri campi i seguenti valori

Data Path uguale a Model id

Key uguale al nome della chiave primaria (cf_id)

Text key uguale al nome dell'altro campo che usato in Fields.

Il problema sarà poi legare fra loro le 3 drop. Occorrerà un po' di javascript e php da inserire nel form per attivare nelle actions DB Multi Record Loader nella seconda e terza drop il filtri necessari per tenere conto delle due scelte precedenti.

Questo ancora non l'ho provato ma in teoria è possibile.

: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: dla86 18 Sep 2012, 11:43:33
Ciao Vales
e grazie per le tue spiegazioni sempre utili.
a me manca un passaggio fondamentale. non capisco cosa sono i tab per il codice html e quelle per il codice javascript..insomma non capisco dove inserire questi due codici. io devo creare dei dropdown collegati fra di loro in modo che scegliendo la categoria in uno, mi si mostrano nell'altro le sottocategorie, senza passare dal database però ma scrivendo tutto a mano. grazie!

: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 18 Sep 2012, 19:16:00
Le tab sono le cartelle per la configurazione di chronforms ma quei termini valgono per la versione 3 per joomla 1.5.

Per la versione v4 l'html si trova nella tab code che vedi dopo aver cliccato sul nome del form mentre il codice javascript va inserito nell'action Load Js che trovi nella fra le action della sezione Utilities.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: dla86 19 Sep 2012, 09:06:14
Ciao e grazie perla risposta.
ho individuato dove inserire i codici però a me sembra non funzionare, sicuramente perchè non ho capito bene dove inserire le varie opzioni. Ipotizzando che io ho:
Sezione1
sezione2
sezione3
...

se seleziono Sezione1, su Categorie avrò:
Sezione1 Categoria1
Sezione1 Categoria2
...

se seleziono Sezione2, su Categorie avrò:
Sezione2 Categoria1
Sezione2 Categoria2
...

dove devo inserire queste opzioni? grazie mille

: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: dla86 20 Sep 2012, 09:54:45
utilizzo questo codice, ma non so se sbaglio qualcosa...

<select id="id_sezione" name="sezione" onfocus="fillCategory();" onChange="SelectCategoria();" class="cf_inputbox validate-selection"  ><option value="">Seleziona</option>
<option value="1">sezione1</option>
<option value="2">sezione2</option>
<option value="3">sezione3</option>

</select>

: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: dla86 20 Sep 2012, 10:00:53
ho capito perchè non funzionava. il problema era nel nome id del form. nella nuova versione è chronoform_nome del form tutto in piccolo
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: dla86 20 Sep 2012, 12:07:09
è possibile nella scelta della categoria (quindi secondo drop menu) prevedere una scelta multipla?...tenendo premuto il tasto ctrl (mi è capitato su alcuni siti)?...

basta inserire nel campo select  multiple="multiple"?
quindi automaticamente viene salvato sul database la scelta multipla? o devo apportare altre modifiche al form? grazie
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: dla86 20 Sep 2012, 19:38:56
ho verificato...con multiple mi fa selezionare più di una voce ma ne salva solo una...
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: stefystefy 14 Nov 2012, 12:59:20
Scusate ma io sono ancor più che neofita: completamente ignorante! Ho però con buona volontà creato un sito joomla e istallato chronoform e chronoconnectivity
Volendo creare una form di ricerca che dopo aver selezionato la regione da una lista a tendina mi dà l'elenco dei comuni inseriti, ho fatto il copia/incolla del codice html che così gentilmente vales ha messo a disposizioni. La parte della regione funziona (e funziona anche la ricerca) ma quella del comune no, non mi si attiva nessuna lista
Chi mi può aiutare?!!?!? GRAZIE!
ecco il codice:
:
<div class="form_item">
        <div class="form_element cf_dropdown">
          <div style="clear:both;">

<label class="cf_label" style="width: 150px;">Regione</label>
    <select class="cf_inputbox" id="select_6" size="1" title=""  name="regione_select">
    <option value="">Scegli la regione</option>
      <option value="Abruzzo">Abruzzo</option>
<option value="Basilicata">Basilicata</option>
<option value="Calabria">Calabria</option>
<option value="Campania">Campania</option>
<option value="Emilia-Romagna">Emilia-Romagna</option>
<option value="Friuli-Venezia Giulia">Friuli-Venezia Giulia</option>
<option value="Lazio">Lazio</option>
<option value="Liguria">Liguria</option>
<option value="Lombardia">Lombardia</option>
<option value="Marche">Marche</option>
<option value="Molise">Molise</option>
<option value="Piemonte">Piemonte</option>
<option value="Puglia">Puglia</option>
<option value="Sardegna">Sardegna</option>
<option value="Sicilia">Sicilia</option>
<option value="Toscana">Toscana</option>
<option value="Trentino-Alto Adige">Trentino-Alto Adige</option>
<option value="Umbria">Umbria</option>
<option value="Valle d'Aosta">Valle d'Aosta</option>
<option value="Veneto">Veneto</option>


</select> Comune

       <select id="text_1" name="comune" class="cf_inputbox validate-selection" ><Option value="">Seleziona</option>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>



<div class="form_item">
  <div class="form_element cf_button">
    <input value="Cerca" name="button_1" type="submit" /><input type="reset" name="reset" value="Reset"/>
  </div>
  <div class="cfclear">&nbsp;</div>
</div>
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 18 Nov 2012, 10:03:30
Non vedo l'uso del javascript nel codice postato.


Controlla meglio la discussione mi sembra che ci siano i codici completi e istruzioni d'uso compreso anche il caso di prelievo dei dati dal database.
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: WillerCT 13 Feb 2013, 19:07:11
Salve a tutti, mi aggancio a questa discussione perchè da qualche giorno a questa parte sto cercando di capire come rendere il mio form più efficace. In particolare vorrei collegare due dropdown fra loro e in funzione del tipo di servizio scelto essere indirizzare gli utenti a paypal con l'importo esatto già impostato automaticamente. Esiste una guida passo passo, completa, per creare i drop down dinamici con la V4 di chronoform ?
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: claudiovis 14 May 2013, 14:32:43
ho trovato questo ...può essere utile a tutti.

esempio:

****

edit: rimosso link a risorse esterne.

pensavo si potesse ...  chiedo scusa....  :(
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: navajo75 14 Jul 2013, 14:23:52
Buonasera a tutti,

sto cercando di far funzionare il codice di Vales e di avere dunque una select "categoria" dinamica, a seconda della "sezone" scelta.
Ho copiato paro paro il codice di Vales, sia il javascript che l'HTML, limitandomi solo a cambiare il nome del form (prova).
Se lavoro in Joomla 2.5, con Chronoforms 4.0, non c'è modo di far apparire alcuna opzione nei menù a tendina.
Se però lavoro fuori da Joomla, creando un file JS ed uno HTML ed aggiungendo in quest'ultimo il TAG <form id="prova"></form>, le select si popolano con i valori scelti da Vales.
Leggevo in un precedete post di "dla86" (20 settembre 2012 ore 10:00:53), che con la nuova versione di Chrono, l'id del form doveva essere richiamato con chronoform (tutto attaccato e tutto minuscolo) e non più come indicato da Vales con ChronoContact; ho provato questa soluzione ma non funziona ugualmente.
A seguire posto il codice, nella speranza che qualcuno di voi possa darmi una mano ad uscirne, poichè sto diventando pazzo.

Javascript:

:
//questo è il codice da inserire nella TAB Form Code sezione javascript

function fillCategory(){
removeAllOptions(document.getElementById('ChronoContact_prova').sezione);


 addOption(document.getElementById('ChronoContact_prova').sezione, '1', 'sezione 1');
 addOption(document.getElementById('ChronoContact_prova').sezione, '2', 'sezione 2');
 addOption(document.getElementById('ChronoContact_prova').sezione, '3', 'sezione 3');
}

function SelectCategoria(){
// Funzione chiamata dopo la selezione della Sezione - ON or after selection of category this function will work

removeAllOptions(document.getElementById('ChronoContact_prova').categoria);
//addOption(document.getElementById('ChronoContact_prova').categoria, "", "Seleziona", "");

// Raccoglie tutti gli elementi della categoria per id - Collect all element of subcategory for various id


 if (document.getElementById('ChronoContact_prova').sezione.value == '1'){
 addOption(document.getElementById('ChronoContact_prova').categoria,'1', 'categoria 1 sez 1');
 addOption(document.getElementById('ChronoContact_prova').categoria,'2', 'categoria 2 sez 1');
 addOption(document.getElementById('ChronoContact_prova').categoria,'6', 'categoria 3 sez 1');
 addOption(document.getElementById('ChronoContact_prova').categoria,'7', 'categoria 4 sez 1');
}
 if (document.getElementById('ChronoContact_prova').sezione.value == '2'){
 addOption(document.getElementById('ChronoContact_prova').categoria,'3', 'categoria 1 sez 2');
 addOption(document.getElementById('ChronoContact_prova').categoria,'4', 'categoria 2 sez 2');
 addOption(document.getElementById('ChronoContact_prova').categoria,'5', 'categoria 3 sez 2');
}
 if (document.getElementById('ChronoContact_prova').sezione.value == '3'){
 addOption(document.getElementById('ChronoContact_prova').categoria,'9', 'categoria 1 sez 3');
 addOption(document.getElementById('ChronoContact_prova').categoria,'10', 'categoria 2 sez 3');
}



}
//////////////////

function removeAllOptions(selectbox)
{
   var i;
   for(i=selectbox.options.length-1;i>=1;i--)
   {
      selectbox.options[i]=null;
      //selectbox.remove(i);
   }
}


function addOption(selectbox, value, text )
{
   var optn = document.createElement("option");
       
        optn.text = text;
   optn.value = value;

   selectbox.options.add(optn);
          //selectbox.appendChild(optn,where);

}

function removeAllOptions(selectbox)
{
   var i;
   for(i=selectbox.options.length-1;i>=1;i--)
   {
      selectbox.options[i]=null;
      //selectbox.remove(i);
   }
}


function addOption(selectbox, value, text )
{
   var optn = document.createElement("option");
       
        optn.text = text;
   optn.value = value;

   selectbox.options.add(optn);
          //selectbox.appendChild(optn,where);

}

HTML

:
<div class="ccms_form_element cfdiv_select" id="sezione1_container_div" style=""><label>Sezione</label>
<select id="id_sezione" name="sezione" onfocus="fillCategory();" onChange="SelectCategoria();" class="cf_inputbox validate-selection">
<Option value="">Seleziona</option>
</select>
<div class="clear"></div><div id="error-message-sezione"></div></div><div class="ccms_form_element cfdiv_select" id="categoria1_container_div" style=""><label>Categoria</label>
<select id="id_categoria" name="categoria" class="cf_inputbox validate-selection">
<Option value="">Seleziona</option>
</select>
<div class="clear"></div><div id="error-message-categoria"></div></div><div class="ccms_form_element cfdiv_submit" id="input_submit_31_container_div" style="text-align:left">
<input value="Invia" name="button_1" type="submit" />
<div class="clear"></div><div id="error-message-input_submit_3"></div></div><div class="ccms_form_element cfdiv_empty" id="empty_container_div" style="">
<div class="clear"></div><div id="error-message-empty"></div></div>

Grazie anticipatamente a tutti coloro che vorranno collaborare.
Saluti,
Marco
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: vales 27 Jul 2013, 18:02:08
nella versione 2.5 il nome del form nel javascript va richiamato per esempio così:

:
addOption(document.getElementById('chronoform_nomeform').sezione, '1', 'sezione 1');
oppure usando questo che lo rende inpendente dal form



addOption(document.getElementById('<?php echo "chronoform_".$form->html_form_name; ?>').sezione, '1', 'sezione 1');
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: williambrain 13 Aug 2013, 18:56:25
Salve a tutti ,
sono nuovissimo del forum e visionando questo topic vorrei anche io mettere in piedi un form regione provincia comune (dropdown collegato ) che si popola dal DB.
dove trovo  sorgenti e gli sql ?


Grazie in anticipo per l'aiuto

: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: antonelloponziani 15 Oct 2013, 19:29:59
Buonasera a tutti
sto cercando di fare un form con chronoform 4.0 RC3.3    e joomla 2.5.8, dove ci sono due caselle dropdown collegate fra loro e fin qui sono riuscito dopo molti tentativi con la guida postata da vales vi elenco il codice
questo l'ho inserito in un campo custom html/php
:

<?php
$db 
=& JFactory::getDBO();
$query "
  SELECT  `id`, `causale`
   FROM `fl0ma_causali` ORDER BY `id`"
;
$db->setQuery($query);
$nomes $db->loadAssocList();
$option_reg="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$regione $v['causale'];
  if (
$id==JRequest::getVar('causale',0,'GET','INT')) {
  
$selected="selected=\"selected\"";
  }
$option_reg.="<option value=\"$id\" $selected>$regione</option>\n";
}
 
$query "
  SELECT  `id`, `imputazione`
   FROM `fl0ma_imputazioni` WHERE `id_causali`="
.JRequest::getVar('causale',0,'GET','INT')." ORDER BY `imputazione`"
$db->setQuery($query);
$nomes $db->loadAssocList();
$option_pro="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$province $v['imputazione'];
  if (
$id==JRequest::getVar('imputazione',0,'GET','INT')) {
  
$selected="selected='selected'";
  }
$option_pro.="<option value=\"$id\" $selected>$province</option>\n";
}
?>

 
<div class="clear"></div><div id="error-message-"></div></div><div class="ccms_form_element cfdiv_datetime label_over multiline_start" id="autoID-ba7f9f6e06f6eef6af888f9b542ccb7a_container_div"><label>Seleziona data</label><input maxlength="" size="" class="data validate['required'] cf_date_picker" title="data" type="text" value="" name="data" />
<div class="clear"></div><div id="error-message-data"></div></div>
<div class="ccms_form_element cfdiv_select label_over multiline_start" id="casella_combinata_container_div"><label for="casella_combinata">Causale</label><select onchange="province(this.form)" name="causale"  id="casella_combinata" class="" title="causale"   >
<option value="" selected="selected">Seleziona</option><?php echo $option_reg?>
</select>
<div class="clear"></div><div id="error-message-causale"></div></div>
<div class="ccms_form_element cfdiv_text label_over multiline_start" id="casella_testo_container_div"><label for="casella_testo">Operazione</label><input  id="casella_testo" maxlength="" size="40" class="" title="" type="text" value="" name="operazione" />
<div class="clear"></div><div id="error-message-operazione"></div></div>
<div class="ccms_form_element cfdiv_text label_over multiline_start" id="importo_container_div"><label for="importo">Importo</label><h7>&euro; </h7><input id="importo" maxlength="150" size="10" class="" title="" type="text" value="" name="importo" onchange="valuta (this)"/>
<div class="clear"></div><div id="error-message-importo"></div></div>
<div class="ccms_form_element cfdiv_text label_over multiline_start" id="casella_testo_container_div"><label for="casella_testo">Imputazione</label><select id="casella_combinata" class="" title="imputazione" name="imputazione" onchange="reload(this.form);" selected="selected">
<option value="">Seleziona</option><?php echo $option_pro?>
</select>

<div class="clear"></div><div id="error-message-imputazione"></div></div>
<div class="ccms_form_element cfdiv_submit multiline_start" id="autoID-ba542551c7e04bfa9768916e832495d6_container_div"><input name="crea_imputazione" id="button_imputazione" class="" value="" type="button" />
<div class="clear"></div><div id="error-message-crea_imputazione"></div></div>

 
e questo l'ho inserito nell'action load JS
:
function province(form)
{
var reg=form.causale.options[form.causale.options.selectedIndex].value;
self.location='index.php?option=com_chronoforms&tmpl=component&chronoform=Entrate_Uscite&causale=' + reg ;
}
 
function reload(form)
{
var prov=form.imputazione.options[form.imputazione.options.selectedIndex].value;
var reg=form.causale.options[form.causale.options.selectedIndex].value;

self.location='index.php?option=com_chronoforms&tmpl=component&chronoform=Entrate_Uscite&imputazione=' + prov + '&causale=' + reg ;
}
adesso vorrei un aiuto per riuscire a conservare i valori dei campi inseriti prima delle dropdown, dopo che ha fatto il reload  della pagina spero di essermi spiegato bene.
grazie a tutti
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: antonelloponziani 16 Oct 2013, 20:42:49
Ho Risolto mettendo nella prima dropdown
:

function province(form)
{
var reg=form.causale.options[form.causale.options.selectedIndex].value;
var dat=document.Entrate_Uscite.data.value;
self.location='index.php?option=com_chronoforms&tmpl=component&chronoform=Entrate_Uscite&causale=' + reg + '&data=' + dat ;
}

e nella seconda dropdown
:
function reload(form)
{
var prov=form.imputazione.options[form.imputazione.options.selectedIndex].value;
var reg=form.causale.options[form.causale.options.selectedIndex].value;
var ope=document.Entrate_Uscite.operazione.value;
var dat=document.Entrate_Uscite.data.value;
self.location='index.php?option=com_chronoforms&tmpl=component&chronoform=Entrate_Uscite&imputazione=' + prov + '&causale=' + reg  + '&operazione=' + ope + '&data=' + dat ;
}

 
cosi mi rimane il valore di una casella data che si trova prima della prima dropdown e mi rimane il valore della casella operazione che si trova prima della seconda dropdown.
grazie a tutti
: Re:Riempire caselle dropdown collegate fra loro in Chronoforms.
: enrico.curro 01 Nov 2013, 17:06:28
Buondì,
io sto creando un form con funzionalità simili ma con qualche problema.
intanto chiarisco che ho utilizzato i codici per un form appoggiato a database;
poi ho 3 dropdow:
-scuole (che contiene "infanzia","primaria","secondaria")
-categorie (che contiene una serie di categorie diverse a seconda della scelta del menù precedente)
-incontri (che contiente un elenco di incontri per ogni categoria scelta)

utilizzo chronoforms v4.0.1 su joomla! 2.5.1

Semplice modificando i codici suggeriti in questo post non riesco ad accedere al database nemmeno per uno solo dei dropdown, poi facendo una connessione come segue riesco a far visualizzare solo i campi del primo dropdown e non mi abilita i successivi:

$connessione = mysql_connect("localhost", "root", "");
mysql_select_db("science17", $connessione);


Inoltre selezionando "infanzia" nel primo dropdown dovrei attivare direttamente il terzo (cioè quello con i possibili incontri) in quanto non c'è distinzione di categorie per quella scelta.. e magari nascondere il campo "categorie"... è possibile?


Vi prego ho bisogno di risolvere almeno il problema di visualizzare in ogni drop tutte le possibilità relative alla scelta precedente.
HELP --> Vales <--

Allego tutte le info necessarie

Codice html:

:
<?php

$db 
=& JFactory::getDBO(); 


$connessione mysql_connect("localhost""root""");
mysql_select_db("science17"$connessione);

$query "
  SELECT  `id`, `scuola`
   FROM `scuole` ORDER BY `scuola`"


$db->setQuery($query);
$nomes $db->loadAssocList();
$option_scuola="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$scuola $v['scuola'];
  if (
$id==JRequest::getVar('regione',0,'GET','INT')) {
  
$selected="selected=\"selected\"";
  }

$option_scuola.="<option value=\"$id\" $selected>$scuola</option>\n";

}

$query "
  SELECT  `id`, `categoria`
   FROM `categorie` WHERE `id_scuola`="
.JRequest::getVar('scuola',0,'GET','INT')." ORDER BY `categoria`"

$db->setQuery($query);
$nomes $db->loadAssocList();
$option_categoria="";
  foreach ( 
$nomes as $v ) {
  
$selected="";
  
$id =  $v['id'];
  
$categorie $v['categoria'];
  if (
$id==JRequest::getVar('categoria',0,'GET','INT')) {
  
$selected="selected='selected'";
  }

$option_categoria.="<option value=\"$id\" $selected>$categorie</option>\n";

}

$query "
  SELECT  `id`, `incontro`
   FROM `incontri` WHERE `id_categoria`="
.JRequest::getVar('categoria',0,'GET','INT')." ORDER BY `incontro`"

$db->setQuery($query);
$nomes $db->loadAssocList();
$option_incontro="";
  foreach ( 
$nomes as $v ) {
  
$id =  $v['id'];
  
$incontro $v['incontro'];

$option_incontro.="<option value=\"$id\" $selected>$incontro</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="province(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">Categoria</label>

       <select id="categoria" name="categoria" onchange="reload(this.form);" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_categoria?>
       
</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">Incontro</label>

       <select id="incontro" name="incontro" class="cf_inputbox validate-selection" ><option value="" selected="selected">Seleziona</option>

<?php echo $option_incontro?>
       
</select>
       
 </div>   
    </div>
  <div class="cfclear">&nbsp;</div>
</div>

Codice JS

:
<script type="text/javascript">
function categorie(form)
{
var scu=form.scuola.options[form.scuola.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=scu_cat_inc&scuola=' + scu ;
}

function reload(form)
{
var cat=form.categoria.options[form.categoria.options.selectedIndex].value;
var scu=form.scuola.options[form.scuola.options.selectedIndex].value;
self.location='index.php?option=com_chronocontact&chronoformname=scu_cat_inc&categoria=' + cat + '&scuola=' + scu;
}
</script>

Info sul DB

:
--
-- Database: `science17`
--
-- --------------------------------------------------------
--
-- Struttura della tabella `scuole`
--
CREATE TABLE `scuole` (
  `id` int(3) NOT NULL,
  `scuola` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Struttura della tabella `categorie`
--
CREATE TABLE `categorie` (
  `id` int(21) NOT NULL AUTO_INCREMENT,
  `id_scuola` int(3) NOT NULL,
  `categoria` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id_scuola` (`id_scuola`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=23 ;

--
-- Struttura della tabella `incontri`
--
CREATE TABLE `incontri` (
  `id` int(90) NOT NULL AUTO_INCREMENT,
  `id_scuola` int(3) NOT NULL,
  `id_categoria` int(21) NOT NULL,
  `incontro` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id_categoria` (`id_categoria`),
  KEY `id_scuola` (`id_scuola`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=148 ;