Блог SOPDU


RSS

Январь 18, 2016

Немного хадкода


Возникла проблема с кастомом элемента, у которого должна была быть необычная верстка.
В частности, вывести название элемента и все дополнительные свойства.
Способ вывода через XSL совсем не подходил для реализации. Достойного решения с помощью HostCMS - API тоже не нашлось.
После недолгих раздумий и изучения строения sql-базы у HostCMS, было принято решение напрямую выдернуть из БД и собрать это в массив, который потом можно закастомить как угодно.

Реализация:

 $system = 26; // указывай id информационной системы
 $item_zapros = "select * from informationsystem_items where informationsystem_id = '".$system."'";
 $item_result = mysql_query($item_zapros);
 while($item_row = mysql_fetch_array($item_result)){
 $items[$item_row["id"]] = array(
  "id" => $item_row["id"],
  "name" => $item_row["name"]
 );
}
$property_list_zapros = "select * from informationsystem_item_properties where informationsystem_id = '".$system."'";
$property_list_result = mysql_query($property_list_zapros);
while($property_list_row = mysql_fetch_array($property_list_result)){
 $property_list[$property_list_row["id"]] = array(
  "id" => $property_list_row["id"],
  "property_id" => $property_list_row["property_id"]
 );
}
foreach($property_list as $list){
 $property_name_zapros = "select * from properties where id = '".$list["property_id"]."'";
 $property_name_result = mysql_query($property_name_zapros);
 while($property_name_row = mysql_fetch_array($property_name_result)){
  $property_value_zapros = "select * from property_value_strings where property_id = '".$list["property_id"]."'";
  $property_value_result = mysql_query($property_value_zapros);
  while($property_value_row = mysql_fetch_array($property_value_result)){
   $items[$property_value_row["entity_id"]]["property"][$property_name_row["tag_name"]] = array(
    "name" => $property_name_row["name"],
    "tag" => $property_name_row["tag_name"],
    "value" => $property_value_row["value"]
   );
  }
 }
}
В итоге мы собрали аккуратный массив $items, где все элементы данной информационной системы в которых лежат их свойства.

Запись в: HostCMS - Тэги: HostCMS, content, условие, PHP, логика, api, MySQL, БД, База данных, запросы


 
Текст сообщения*
Защита от автоматических сообщений