У меня есть несколько функций, результат которых - массив с полями товара. С классами в теории знаком.. но как это все дело собрать в одну кучу - теряюсь... В идеале, обращение к БД должно быть один раз, если на странице имеется несколько обращений к моему не существующему классу.
<?
function dbRequest($table,$sort){
mysql_connect("localhost", "bd_name", "password");
mysql_select_db("user");
$result = mysql_query("SELECT * FROM ".$table." ORDER BY ".$sort." DESC"); //b_iblock_element_property
$news = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$news[] = $row;
}
mysql_free_result($result);
return $news;
}
function propertyesKey($prop_id){
$propertys=dbRequest("b_iblock_property","ID");
foreach($propertys as $prop_list){
if($prop_list["ID"]==$prop_id){
$name=$prop_list["NAME"];
}
}
return $name;
}
function propertyList($element_id){
$property_list=array();
$property_value=dbRequest("b_iblock_element_property","IBLOCK_PROPERTY_ID");
foreach($property_value as $cell=>$value){
if($element_id==$value["IBLOCK_ELEMENT_ID"]){
$property_list[$value["IBLOCK_PROPERTY_ID"]]=array(
"NAME"=>propertyesKey($value["IBLOCK_PROPERTY_ID"]),
"VALUE"=>$value["VALUE"]
);
}
}
return $property_list;
}
function elementID($id){
$element=dbRequest("b_iblock_element","id");
foreach($element as $key=>$list){
if($id==$list["ID"]){
$element_array=$list;
$element_array["PROPERTY"]=propertyList($list["ID"]);
}
}
return $element_array;
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>bElement</title>
</head>
<body>
<pre>
<? print_r(elementID(778));?>
</pre>
</body>
</html>
Выводимый результат
Array
(
[ID] => 778
[NAME] => Стол и 4 стула
[PREVIEW_TEXT] => Столешница покрыта меламином - устойчивая к воздействию влаги и повреждениям отделка, которую легко поддерживать в чистоте.
...
...
[PROPERTY] => Array
(
[99] => Array
(
[NAME] => Максимальная цена
[VALUE] => 7000.00
)
...
...
)