$query = mysqli_query($con, "INSERT INTO sales (name, color, adress, tel) VALUES (`{$name}`, `{$color}`, `{$adress}`, `{$tel}`)");
if ( !$query )
{
var_dump(mysqli_error($con));
}
use \PhpOffice\PhpSpreadsheet\Cell\Coordinate;
// Выведет: Z
var_dump(Coordinate::stringFromColumnIndex(26));
// Выведет: R
var_dump(Coordinate::stringFromColumnIndex(18));
// Выведет 2
var_dump(Coordinate::columnIndexFromString('B'));
// Выведет 26
var_dump(Coordinate::columnIndexFromString('Z'));
/* @var float Стоимость минуты разговора, в данном случае 55 рублей 56 копеек */
$rateMinutes = 55.56;
/* @var DateTime Время начало разговора/события */
$oStartDate = new \DateTime('11.10.2017 10:37:00');
/* @var DateTime Время оконачания разговора/события */
$oEndDate = new \DateTime('11.10.2017 10:47:00');
/* @var int Длительность события в секундах */
$durationSeconds = abs($oEndDate->getTimestamp()-$oStartDate->getTimestamp());
/* @var int Длительность события в минутах, округленных в большую сторону */
$durationMinutes = round($durationSeconds/60);
/* @var float Стоимость разговора/события */
$price = $durationMinutes * $rateMinutes;
// Выводим стомость разговора/события
var_dump($price);
#-----------------------------------------------#
# Начало блока конфигурации HTTP хоста
#-----------------------------------------------#
<VirtualHost *:%httpport%>
DocumentRoot "%hostdir%"
ServerName "%host%"
ServerAlias "%host%" %aliases%
ScriptAlias /cgi-bin/ "%hostdir%/cgi-bin/"
</VirtualHost>
<Directory "E:/OpenServer/OpenServer/domains/dev">
AllowOverride All
php_admin_value mbstring.func_overload 0
</Directory>
#-----------------------------------------------#
# Начало блока конфигурации HTTP хоста
#-----------------------------------------------#
<VirtualHost *:%httpport%>
DocumentRoot "%hostdir%"
ServerName "%host%"
ServerAlias "%host%" %aliases%
ScriptAlias /cgi-bin/ "%hostdir%/cgi-bin/"
<Directory "e:\openserver\openserver\domains\cli">
AllowOverride All
php_admin_value mbstring.func_overload 0
</Directory>
<Directory "E:/OpenServer/OpenServer/domains/dev">
AllowOverride All
php_admin_value mbstring.func_overload 0
</Directory>
</VirtualHost>
Массив полей для группировки элемента. Если поля указаны, то выборка по ним группируется (при этом параметр arSelectFields будет проигнорирован), а в результат добавляется поле CNT - количество сгруппированных элементов. Если указать в качестве arGroupBy пустой массив, то метод вернет количество элементов CNT по фильтру. Группировать можно по полям элемента, а также по значениям его свойств. Для этого в качестве одного из полей группировки необходимо указать PROPERTY_, где PROPERTY_CODE - ID или символьный код свойства.
Необязательное. По умолчанию false - записи не группируются.
/* @var string Текст, в котором проводим замену*/
$str = <<<STRTEXT
[index:Звездочет]А тут хз что[/index]
Тут текст [guest]Иванов[/guest]
STRTEXT;
$oTextParser= (new TextParser($str))
->addRule("#\\[index:(.+?)\\](.*?)\\[/index\\]#ies", "indexShow('\\1', '\\2')")
->addRule("#\\[guest](.*?)\\[/guest]#ies","checkGuest('\\1')")
->parse();
/*
На выходе хочу получить:
-------------------------
Звездочет(А тут хз что)
Тут текст GUEST(Иванов)
*/
echo "<pre>";
var_dump($oTextParser->getText());
echo "</pre>";
function indexShow( $a, $b)
{
return $a."(".$b.")";
}
function checkGuest( $a )
{
return 'GUEST('.$a.')';
}
class TextParser
{
/* @var string Результат выполнения парсинга */
public $parsed;
/* @var string[] Ассоциативный список правил в формате: регулярка => функция для замены */
public $rules = [];
public function __construct( $text )
{
$this->parsed = $text;
}
/**
* Добавляет правило работы парсера
* Для использования цепочек возвращает текущий экземпляр
*
* @param string $regex
* @param string|callback $func
* @return TextParser
*/
public function addRule( $regex, $func )
{
$this->rules[ $regex ] = $func;
return $this;
}
/**
* Выполняет разброр исходного текста
* Для использования цепочек возвращает текущий экземпляр
*
* @return TextParser
*/
public function parse()
{
array_walk(
$this->rules,
function($function, $regular)
{
$this->parsed = preg_replace($regular, $function, $this->parsed);
}
);
return $this;
}
/**
* Возвращает результат парсера (или исходный текст, если был вызван до метода parse)
*
* @return string
*/
public function getText()
{
return $this->parsed;
}
}
<?php
AddEventHandler("main", "OnAdminListDisplay", "MyOnAdminContextMenuShow");
function MyOnAdminContextMenuShow(&$oAdminList)
{
/**
* $type - тип кода инфоблока, например news, events и т.д.
* $iblock - идентификатор инфоблока
*
* Если интересует каталог, то вместо tbl_iblock_list_ нужно использовать tbl_product_list_
*/
if ( $oAdminList->table_id == "tbl_iblock_list_".md5($type.".".$iblock) )
{
// полезные действия
}
}
?>
AddEventHandler("main", "OnAdminListDisplay", "MyOnAdminContextMenuShow");
function MyOnAdminContextMenuShow(&$oAdminList)
{
/**
* $type - тип кода инфоблока, например news, events и т.д.
* $iblock - идентификатор инфоблока
*
* Если интересует каталог, то вместо tbl_iblock_list_ нужно использовать tbl_product_list_
*/
if ( $oAdminList->table_id == "tbl_iblock_list_".md5("structure.4") )
{
$arActions = $oAdminList->arActions;
$arActions['alert'] = 'Ругаться!';
$oAdminList->AddGroupActionTable($arActions);
}
}
AddEventHandler("main", "OnAfterEpilog", "iblockAlert");
function iblockAlert()
{
$oRequest = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
// Проверяем, что работает только в админке
if ( $oRequest->isAdminSection() )
{
if (
// Интересуют только интерактивные запросы
$oRequest->get('mode')=='frame'
// Где передана переменна IBLOCK_ID
&& $oRequest->get('IBLOCK_ID')==4
// Соответствующие нашему action
&& $oRequest->get('action')=='alert'
)
{
/**
* Вот тут можно сделать что угодно
* Можно получить выделенные ID
* через $oRequest->get('ID')
* Если он пуст, значит действие на всех элементах инфоблока
*/
}
}
}