Visualizzare contenuto di 6 query in view

Ciao Ragazzi

ho il database con 4 tabelle


CREATE TABLE `site` (

  `id` int(11) NOT NULL,

  `description` varchar(200) COLLATE utf8_bin NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


INSERT INTO `site` VALUES(1, 'concessionaria_opel');

INSERT INTO `site` VALUES(2, 'concessionaria_fiat');

INSERT INTO `site` VALUES(3, 'concessionaria_bmw');


CREATE TABLE `sections` (

  `id` int(11) NOT NULL,

  `description` varchar(200) COLLATE utf8_bin NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


INSERT INTO `sections` VALUES(1, 'sectionA');

INSERT INTO `sections` VALUES(2, 'sectionB');

INSERT INTO `sections` VALUES(3, 'sectionC');


CREATE TABLE `networks` (

  `id` int(11) NOT NULL,

  `description` varchar(200) COLLATE utf8_bin NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


INSERT INTO `networks` VALUES(1, 'networkA');

INSERT INTO `networks` VALUES(2, 'networkB');

INSERT INTO `networks` VALUES(3, 'networkC');





CREATE TABLE `filekeys` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `network_id` int(11) DEFAULT NULL,

  `site_id` int(11) DEFAULT NULL,

  `section_id` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`),

  KEY `network_id` (`network_id`),

  KEY `site_id` (`site_id`),

  KEY `section_id` (`section_id`)

) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=8 ;


INSERT INTO `filekeys` VALUES(1, 1, NULL, NULL);

INSERT INTO `filekeys` VALUES(2, 1, 1, NULL);

INSERT INTO `filekeys` VALUES(3, 1, 1, 1);

INSERT INTO `filekeys` VALUES(4, 1, 1, 2);

INSERT INTO `filekeys` VALUES(5, 2, NULL, NULL);


ALTER TABLE `filekeys`

  ADD CONSTRAINT `filekeys_ibfk_4` FOREIGN KEY (`site_id`) REFERENCES `site` (`id`),

  ADD CONSTRAINT `filekeys_ibfk_1` FOREIGN KEY (`network_id`) REFERENCES `networks` (`id`),

  ADD CONSTRAINT `filekeys_ibfk_3` FOREIGN KEY (`section_id`) REFERENCES `sections` (`id`);

in quest’ultima tabella viene definito network quanti figli site ha, e site quanti altri figli c’ha.

Nel controller ho questo codice




        public  function actionCreatepublicaggregati()

	{

		$Criteria = new CDbCriteria();

		$Criteria2 = new CDbCriteria();

		$Criteria3 = new CDbCriteria();

		$C_n = new CDbCriteria();

		$C_s = new CDbCriteria();

		$C_section=new CDbCriteria();

		

		$Criteria->select = "distinct network_id";

		 

		$query= Filekeys::model()->findAll($Criteria);

			

		foreach($query AS $q) {

		   $id_n = $q->network_id;

		   	   

			

			$C_n->condition = 'id='.$id_n;

			$query_n= Networks::model()->findAll($C_n);

			foreach($query_n AS $q_n) {

			   echo '<br/>'.$q_n->description;

			}

			

			$controllo= new CDbCriteria();

			$Criteria->condition = '';

			

			

		   	$Criteria2 ->select = "distinct site_id, network_id";

		   	$query2= Filekeys::model()->findAll($Criteria2);

		   	foreach($query2 AS $q2) {

		     	$id_site = $q2->site_id;

		     	$id_Network= $q2->network_id;

		     	if($id_Network==$id_n)

		     	{	

			     	$C_s->condition = 'id='.$id_site;

					

			     	if($id_site!=null)

			     	{

						$query_site= Site::model()->findAll($C_s);

						foreach($query_site AS $q_site) {

						   echo '<br/>--   '.$q_site->description;

						

							$Criteria3 ->select = "distinct section_id,site_id";

							$query3= Filekeys::model()->findAll($Criteria3);

							foreach($query3 AS $q3) {

								$id_section=$q3->section_id;

								$id_section_site=$q3->site_id;

								

								if($id_section_site==$id_site)

								{

									$C_section->condition = 'id='.$id_section;

									if($id_section!=null)

									{

										$query_section= Sections::model()->findAll($C_section);

										foreach($query_section AS $q_section) {

							 				echo '<br/>----       '.$q_section->description;

										}

									}

								}	

								

							}

							

						

						}

			     	}

		     	}

		   		

		   	}

		}		

	 			

		

	}



che mi visualizza la struttura ad albero con echo.

Io voglio che questi 3 echo venga visualizzato nel view come è giusto che sia, ma non riesco a capire come posso riuscirci.

alla fine eseguendo il codice mi viene visualizzato così:




networkA

-- concessionaria_opel

---- sectionA

---- sectionB

networkB



una volta mandato nella view devo mostrare accanto una checkbox per farlo selezionare ogniuna di queste opzioni.

i view stampano le variabili che passi loro, quindi dovresti memorizzare tutto in variabili anziché fare echo e riciclarle nel view

se lo memorizzo tutte nell’array

avrei tutte una dopo l’altra ma perdere la struttura ad albero.

Allora usa più variabili =).

Incredibile, adesso questo codice è in pochissime righe, e fatto molto bene.

Si vede che avevo appena cominciato sia con la programmazione che con yii

Quale codice? lanci la pietra e nascondi la mano?

Ora ci fai vedere il codice corretto :))