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.