селект(комбик)


создание селектов с вариантами возмоными также и для поиска

Параметры:

вариант1

{%inj|cmd@eval|php@
global $SOST;
$type_id = GetModiId($this->conn,'refbook_task_sost','REFBOOK');

получение id через модифицированную ссылку на другую таблицу

$sql ="SELECT ID, NAZ FROM REFBOOK WHERE ENAB>0 AND MODI=$type_id ORDER BY PSORT, NAZ";

получем выборку с использованием id полученного выше

$rs = $this->conn->Execute($sql) or die ("sql error: $sql");
$s_sel = "<select class="form-control" name="SOST" onchange="">
<option value="0">Все состояния</option>";
while(!$rs->EOF)
{
$s_sel.="<option value="{$rs->fields['ID']}" ".(($rs->fields['ID']==$SOST)?'selected="selected"':'').">".hsc($rs->fields['NAZ'])."</option>";
$rs->MoveNext();
}
$s_sel.="</select>";
$out = $s_sel;
|%}

вариант2

{%inj|cmd@eval|php@
global $MODI;
$sql ="SELECT ID, NAZ FROM SYS_MODI WHERE ENAB>0 AND INTABLE='TASK' ORDER BY NAZ";

получем выборку при условии что полученные значения относятся также и к другой таблице (это если нет модифицированной ссылки)

$rs = $this->conn->Execute($sql) or die ("sql error: $sql");
$s_sel = "<select class="form-control" name="MODI" onchange="">
<option value="0">Тип задачи</option>";
while(!$rs->EOF)
{
$s_sel.="<option value="{$rs->fields['ID']}" ".(($rs->fields['ID']==$MODI)?'selected':'').">".hsc($rs->fields['NAZ'])."</option>";
$rs->MoveNext();
}
$s_sel.="</select>";
$out = $s_sel;
|%}

вариант3

{%inj|cmd@eval|php@
global $PROJETAP, $global_prj_id, $ID;
$global_prj_id = (int)$ID;
$type_id = GetModiId($this->conn,'task_etap','TASK');
$sql ="SELECT ID, NAZ FROM TASK WHERE ENAB>0 AND SHOW_FRONT=1 AND MODI=$type_id AND PROJECT=$global_prj_id AND SOST IN (".WO_TASKSTATE_NEW.",".WO_TASKSTATE_INWORK.",".WO_TASKSTATE_INFORM.") ORDER BY ID, NAZ";

аналог варианта 1 , но в условии присутствуют константы описанные в define.php

$rs = $this->conn->Execute($sql) or die ("sql error: $sql");
$s_sel = "<select name="PROJETAP" class="form-control" onchange="">
<option value="0">Все подсостояния</option>";
while(!$rs->EOF)
{
$s_sel.="<option value="{$rs->fields['ID']}" ".(($rs->fields['ID']==$PROJETAP)?'selected':'').">".hsc($rs->fields['NAZ'])."</option>";
$rs->MoveNext();
}
$s_sel.="</select>";
$out = $s_sel;
|%}

вариант4

задача создание нескольких селектов содержимое которых зависит друг от друга, в данном случае их 3

в начале страницы создается функция , для аякс загрузки селекта по адресу (все аякс функции работают при помощи front_utils.js)

<script>
function onChangeProj () {
doAjRoute('personal-area/do/do_create_incident_projetap.php','projetap_res','&PROJECT='+document.newincidentform.PROJECT.value);
}
</script>

создание формы

<form action="" id="create-incident" method="post" class="form-personal col-md-6" role="form" name="newincidentform" onsubmit="
var parstr = jQuery('#create-incident').serialize();
doAjRouteJSON('personal-area/do/do_create_incident.php','personal_res','&'+parstr,'','','');return false;">

В теге form в onsubmit указывается в переменной parstr id этой формы В аякс функции doAjRouteJSON путь к файлу обработчику , id блока, в котором будет отображаться результат , переменная описанная выше

 

<div class="form-group clearfix">
<label for="FIRMA" class="col-md-12 control-label">Выбор 1:</label>
<div class="input-group clearfix">
{%inj|cmd@eval|php@
global $_SESSION, $FIRMA;
$FIRMA=0;
@$persona_id = (int)$_SESSION['w_karloid'];
$sql ="SELECT F.ID, F.NAZ, PW.ISKONTMAIN
FROM PERSONA_WORK PW, FIRMA F
WHERE PW.ENAB>0 AND PW.FIRMA=F.ID
AND PW.PERSONA=$persona_id
ORDER BY PW.ISKONTMAIN DESC, F.NAZ";
$rs = $this->conn->Execute($sql) or die ("sql error: $sql");
$s_sel = "<select class="form-control" name="FIRMA" onchange="doAjRouteCallBack('personal-area/do/do_create_incident_projlist.php','projlist_res','&FIRMA='+document.newincidentform.FIRMA.value,'onChangeProj();');">";

в select на onchange вешается аякс функция doAjRouteCallBack с параметрами : файл обработчик, id блока, в котором будет отображаться результат, и передача результата FIRMA для следующего обработчика , указаного в следующем поле в виде функции onChangeProj(), которая также описана выше

while(!$rs->EOF)
{
if (!$FIRMA) $FIRMA=$rs->fields['ID'];
$s_sel.="<option value="{$rs->fields['ID']}" >".hsc($rs->fields['NAZ'])."</option>";
$rs->MoveNext();
}
$s_sel.="</select>";
$out = $s_sel;
|%}
</div>
</div>
<div id="projlist_res" class="form-group clearfix">
{ %inj|cmd@file|file@personal-area/do/do_create_incident_projlist.php|%}

подключение файла обдработчика с результатми, полученными исходя из выше полученных результататов

</div>
<div id="projetap_res" class="form-group clearfix">
{ %inj|cmd@file|file@personal-area/do/do_create_incident_projetap.php|%}

подключение файла обдработчика с результатми, полученными исходя из выше полученных результататов

</div>
</form>

описание do_create_incident_projlist.php

<?php
global $FIRMA, $PROJECT;
$PROJECT = (int)$PROJECT;
$FIRMA = (int)$FIRMA;
global $_SESSION;
@$persona_id = (int)$_SESSION['w_karloid'];
$sql ="SELECT P.ID, P.NAZ
FROM PROJPERSONA PP, PROJECT P
WHERE PP.ENAB>0 AND PP.PROJECT=P.ID
AND PP.PERSONA=$persona_id
AND PP.CANBUGADD=1
AND P.SHOW_FRONT=1
AND P.FIRMA=$FIRMA
ORDER BY P.ID DESC";
$rs = $this->conn->Execute($sql) or die ("sql error: $sql");
$s_sel = "<label for="PROJECT" class="col-md-12 control-label">Выбор:</label>
<div class="input-group clearfix">
<select class="form-control" name="PROJECT" onchange="onChangeProj();">";
while(!$rs->EOF)
{
if (!$PROJECT) $PROJECT=$rs->fields['ID'];
$s_sel.="<option value="{$rs->fields['ID']}" >".hsc($rs->fields['NAZ'])."</option>";
$rs->MoveNext();
}
$s_sel.="<option value="0">Выбор 3</option>
</select> </div>";
print($s_sel);
?>

описание do_create_incident_projetap.php

 

<?php
global $PROJECT;
$PROJECT = (int)$PROJECT;
global $_SESSION;
@$persona_id = (int)$_SESSION['w_karloid'];
$type_id = GetModiId($this->conn,'task_etap','TASK');
$sql ="SELECT ID, NAZ
FROM TASK
WHERE ENAB>0 AND SHOW_FRONT=1
AND MODI=$type_id
AND PROJECT=$PROJECT
AND SOST IN (".WO_TASKSTATE_NEW.",".WO_TASKSTATE_INWORK.",".WO_TASKSTATE_INFORM.")
ORDER BY ID, NAZ";
$rs = $this->conn->Execute($sql) or die ("sql error: $sql");
$s_sel = "<label for="PROJETAP" class="col-md-12 control-label">Выбор :</label>
<div class="input-group clearfix">
<select class="form-control" name="PROJETAP" onchange=""><option value="0">Без этапа</option>";
while(!$rs->EOF)
{
$s_sel.="<option value="{$rs->fields['ID']}" >".hsc($rs->fields['NAZ'])."</option>";
$rs->MoveNext();
}
$s_sel.="
</select> </div>";
print($s_sel);
?>

отлавливание переменных

вариант 1

{%inj|cmd@file|file@loopsql.php |sql@ SELECT T.ID, T.NAZ, T.ENAB, T.MODI, F.NAZ AS NAZFIRMA, T.CRTDT FROM TASK T, FIRMA F, PERSONA P, REFBOOK R, REFBOOK R2, PROJECT PR WHERE T.ID>0 AND T.ENAB=1 AND T.FIRMA=F.ID AND T.PERSONA=P.ID

sql запрос

|order_by@ T.ID DESC

порядок вывода результата

|fields@ID,NAZ,CRTDT,NAZFIRMA,SUBSOSTNAZ,SOSTNAZ,NAZPERS, PROJNAZ

доступные выводимые моля

|format@ ,,date('d.m.Y H:i')

формат вывода

|onsql_prg@

дополнительные условия для вывода данных

$sql .= fr_tasklist($this->conn, "T");

fr_tasklist функция проверки доступа для пользователя описанна в файле константе front_rights.php

global $SERCHTASK; if (strlen($SERCHTASK)) $sql .= " AND T.NAZ LIKE " . sqlSTRLIKE('%',$SERCHTASK,'%');

отлаваливание переменных поиска

global $SOST; if ((int)$SOST) $sql .= " AND T.SOST=" . (int)$SOST;

отлаваливание переменных из селекта

global $SUBSOST; if ((int)$SUBSOST) $sql .= " AND T.SUBSOST=" . (int)$SUBSOST;

отлаваливание переменных из селекта

global $MODI; if ((int)$MODI) $sql .= " AND T.MODI=" . (int)$MODI;

отлаваливание переменных из селекта

|empty_part@

вывод если нет результата

Ничего не найдено |loop_part@

вывод результата

вывод результата

<div>:ID:</div> <div>:NAZ:</div>

|footer_part@

вывод доп инфы типа пейджинга

|%}

вариант 2

{%inj|cmd@loop|father_id@ |nodetip@4

Тип узла. от которого картинки брать. Чтобы брало по всему дереву, надо задать пустой father_id - |father_id@|

|tag_varname@TAG

возможные передаваемые теги

|loop_part@

цыкл вывода

<div>:id:</div> <div>:naz:</div>

|onsql_prg@

sql запросы

global $SEARCHTEXT; if (strlen($SEARCHTEXT)) $sql .= " AND NAZ LIKE " . sqlSTRLIKE('%',$SEARCHTEXT,'%');

переменная поиска

|empty_part@

вывод если нет результата

Ничего не найдено |%}