Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Запросы к БД через API

00 голосов
10
Покажите пример рабочего куска кода ("произвольный PHP-скрипт"), который обратится к БД, используя стандартный API Bitrix (CDataBase, CDBResult...)

Как сделать запрос, используя стандартные возможности PHP представляю ( $res=mysql_query("SELECT ..... ), хочется именно посмотреть, как это сделано в API - не уверен, что не придется впоследствии переделывать всё под Oracle XE.
В документации есть только описания классов, хочется уже готовый кусок кода.
спросил 25 Фев, 13 от Alsan (160 баллов)

10 Ответы

00 голосов
Код

//Сортировка по свойству CLICKS
if ($sort == "byclick")
{
   $properties = CIBlockProperty::GetList(Array(), Array("IBLOCK_ID"=>$IBLOCK_ID, "CODE"=>"CLICKS"));
   $prop = $properties->Fetch();
   $arOrder = Array("property_".$prop["ID"]=>"DESC","DATE_CREATE"=>"DESC");
}
else
{
   $arOrder = Array("SORT"=>"DESC","ID"=>"DESC");
}

//массив возращаемых значений
$arSelect = Array("ID","DATE_CREATE","NAME","IBLOCK_SECTION_ID","DETAIL_TEXT","PROPERTY_EMAIL","PROPERTY_URL","PROPERTY_CLICKS");

//выборка
$element = GetIBlockElementListEx("websites",$IBLOCK_ID,Array(),$arOrder,10,Array("SECTION_ID"=>$filter),$arSelect);

CPageOption::SetOptionString("main", "nav_page_in_session", "N"); //Запоминание страниц - нет

//Вывод элементов
while($arElement = $element->GetNext()):?>

Название: <?=$arElement["NAME"]?><br>
Дата создания: <?=$arElement["NAME"]?><br>

<?endwhile;?>

<?$element->NavPrint("Мое название",false,"","navprint.php")//Собсвенный шаблон для вывода постранички?>



ответил 25 Фев, 13 от Sazragore (500 баллов)
00 голосов
Код

<?
//работа с собственными таблицами
$strSql = "SELECT NAME FROM mytable";

CPageOption::SetOptionString("main", "nav_page_in_session", "N"); //Запоминание страниц - нет
$res = $DB->Query($strSql); //выполняем запрос
$res->NavStart(15,false);//15 элементов на страницу
?>

<?while($ar = $res->GetNext()):?>

Название: <?=$ar["NAME"];?>

<?endwhile;?>

<?$res->NavPrint("Мое название");//Вывод постранички?>
ответил 15 Март, 13 от Sazragore (500 баллов)
00 голосов
Не совсем то, что нужно. smile:( Впрочем, я почти разобрался, что-то вроде:

Код
<?php


$err_mess = "<br />MyCode<br />";
global $DB;
$strSql = "SELECT id, date_active FROM b_module";
$res = $DB->Query($strSql, false, $err_mess.__LINE__);
$res->NavStart(50);


while($arElement = $res->GetNext()):?> Название: <?=$arElement["ID"]?> 
<br />
 Дата создания: <?=$arElement["date_active"]?> 
<br />
 <?endwhile;


?>
ответил 16 Апр, 13 от Alsan (160 баллов)
00 голосов
Работа с таблицами битрикса напрямую не рекомендуется. Используйте API соответствующих модулей.
ответил 09 Авг, 13 от Sazragore (500 баллов)
00 голосов
А что делать, иной раз не обойтись. Хотя кстати вынесение свойств в отдельную таблицу в 5.1 что ли вдохновляет. Возникаект некая надежда...
ответил 10 Ноя, 13 от Revola (140 баллов)
00 голосов
Цитата
Анна Кузьмина пишет:
Хотя кстати вынесение свойств в отдельную таблицу в 5.1 что ли вдохновляет


Анна, не совсем понятно, что имеется ввиду. Вроде бы сами свойства и значения свойств всегда были в отдельных таблицах. Не заметил в 5.1 никаких изменений по этому поводу smile:)
ответил 17 Фев, 14 от krivedko (500 баллов)
00 голосов
Упс... Я, собственно, об этом

http://www.bitrix.ru/help/source/iblock/help/ru/developer/infoblock2.php.html
ответил 08 Июнь, 14 от Revola (140 баллов)
00 голосов
Кстати, такой вопрос к тем, кому приходится создавать и править собственные таблицы.
Есть ли у кого готовые наработки для типовых задачек? Например, есть таблица на сервере ЕABLE prefix_mytable (
id NUMBER(18,0) NOT NULL ENABLE , first_name VARCHAR2(50) NOT NULL ENABLE etc...
необходимо реализовать вывод данных таблицей а-ля "битрикс стайл", возможность редактирования записей, мультиакшэны, ввод новых значений с минимум телодвижений. Можно ли такое сделать через стандартный модуль? или может быть есть смысл в еще одном модуле для Битрикс, в котором указываешь имя таблицы и в два щелчка делаешь страницу?
ответил 07 Окт, 14 от Alsan (160 баллов)
00 голосов
А DB->Query не?

Или надо, чтобы именно по таблице уже строилась страница, на основе ее структуры и прочего? Это конечно была бы мечта.

И чтобы оно еще за пивом само бегало smile;-)
ответил 07 Фев, 15 от Kania (5,180 баллов)
00 голосов
Гость, зря иронизируете. Первое, что я сделал - это как раз написал часть кода для вывода таблицы списком, кнопочки add и edit пририсовал. Сложно это оформить как часть системы? Чтобы мне оставалось только указать, какие поля нужны (или наименование таблицы) ?
Уже сейчас есть такой функционал, только заточенный под конкретные типы таблиц - таблица новостей, таблица с фотографиями и т.п. Почему нельзя сделать обобщенный конструктор? Когда говорят, что Битрикс не подходит для их сайта, очень часто подразумевают, что им не нужны новости (фотографии, etc...) а нужно что-то свое. В результате начинается кромсание админок, перекраивание стандартных модулей до неузнаваемости.
Мне (думаю есть еще клиенты) Битрикс как конструктор нужен только в публичной части сайта, а применить его для конструирования закрытой части для сотрудников компании - очень сложно: все компоненты приходится писать с нуля, и код и стиль Битрикса практически не используется. Жаль.
ответил 20 Май, 15 от Alsan (160 баллов)

Похожие вопросы

0 голосов
3 ответов
0 голосов
4 ответов
спросил 26 Окт, 13 от WelMax (430 баллов)
0 голосов
1 ответ
спросил 23 Окт, 13 от LAYS (180 баллов)
0 голосов
6 ответов
0 голосов
3 ответов
спросил 10 Окт, 13 от Zoogr (120 баллов)