Doppio Dropdownlist Dipendente Aiuto!

Ciao a tutti e ringrazio in anticipo chiunque possa darmi qualche indicazione…

sto avendo problemi con due dropdownlist dipendenti l’uno dall’altro…il problema è questo , vorrei che dal dropdown delle provincie mi selezionasse i comuni in una seconda dropdown e vorrei che entrambe i campi ‘provincia’ e ‘citta’ venissero salvati.

Per maggior chiarezza vi posto le tabelle del DB più il codice

Queste sono le mie tre tabelle del DB:





CREATE TABLE IF NOT EXISTS `ingegneri` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `nome` varchar(30) NOT NULL,

  `cognome` varchar(30) NOT NULL,

  `codicefiscale` varchar(16) NOT NULL,

  `telfisso` varchar(25) DEFAULT NULL,

  `telmobile` varchar(25) NOT NULL,

  `annolaurea` int(4) NOT NULL,

  `laureaing_id` int(11) NOT NULL,

  `specializzazione` varchar(45) DEFAULT NULL,

  `matricola` varchar(20) NOT NULL,

  `annoisc` int(4) NOT NULL,

  `provincie_id` int(11) DEFAULT NULL,

  `citta_id` int(11) DEFAULT NULL,

  `users_id` int(11) NOT NULL,

  `note` varchar(120) DEFAULT NULL,

  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  PRIMARY KEY (`id`),

  UNIQUE KEY `matricola` (`matricola`),

  UNIQUE KEY `users_id` (`users_id`),

  UNIQUE KEY `telmobile` (`telmobile`,`matricola`,`users_id`),

  KEY `fk_ingegneri_citta` (`citta_id`),

  KEY `fk_ingegneri_laureaing` (`laureaing_id`),

  KEY `fk_ingegneri_provincie` (`provincie_id`)

)


CREATE TABLE IF NOT EXISTS `provincie` (

  `id` int(11) NOT NULL,

  `provincia` varchar(30) NOT NULL,

  PRIMARY KEY (`id`)

)







CREATE TABLE IF NOT EXISTS `citta` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `provincie_id` int(11) NOT NULL,

  `comune` varchar(30) NOT NULL,

  PRIMARY KEY (`id`),

  KEY `fk_citta_provincie` (`provincie_id`)

)




Questo è il codice di ingengeri/_form:





<div class="row">

	

	

	

	                                 

 <?php echo $form->dropDownList($model,'provincie_id', CHtml::listData(Provincie::model()->findAll(), 'id','provincia'), array('empty'=>'--scegli una provincia--')); 


  array(

    'prompt'=>'Seleziona una citta',

    'ajax' => array(

    'type'=>'POST', 

    'url'=>CController::createUrl('ingegneri/loadcities'),

    'update'=>'#city_name', 

  'data'=>array('provincie_id'=>'js:this.value'),

  )); ?>

<?php  

echo CHtml::dropDownList('city_name','', array(),

                      array('prompt'=>'Select City'));

?>

	

	 </div> 






Questo è il codice del controller di ingegneri:





public function actionLoadcities()

{

   $data=Citta::model()->findAll('citta_id=:citta_id', 

   array(':citta_id'=>(int) $_POST['citta_id']));


   $data=CHtml::listData($data,'id','city_name');


   echo "<option value=''>Select City</option>";

   foreach($data as $value=>$city_name)

   echo CHtml::tag('option', array('value'=>$value),

                         CHtml::encode($city_name),true);

}




mi è sfuggito questo thread… puoi speigarci ‘cosa’ non funziona ?

Ciao! praticamente non salva il secondo campo… scelgo "provincie" di conseguenza mi fa scegliere "citta" ma non salva, apparentemente tutto bello e funziona bene, solo che non fa il salvataggio di "citta"…

La proprietà del tuo modello è city_id ma tu hai creato un campo, nella vista, city_name.

Questo campo




...

echo CHtml::dropDownList('city_name','', array(),

                      array('prompt'=>'Select City'));


...

non verrà usato per valorizzare gli attributi del modello, penso che dovresti usare activeDropDownList per legarla al modello e chiamare il campo citta_id, come la proprietà del modello che vuoi salvare.

Non ho capito perché non usi direttamente:




...

echo $form->dropDownList($model,'citta_id', ...);

...



al posto di CHtml::dropDownList.

Cerca anche di spostare tutta la logica per la costruzione del dato nel modello e non nella vista e nel controller.

Grazie mille nicola!! adesso lo testo e poi vi dico come ho risolto…

hai risolto ?