Как отменить создание записи в т. Заявки, если в выборке $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); отсутствует результат по условиям? От запрета if(!$row) что то нету толку...
Сейчас алгоритм следующий
Если поле Связана по услуге (т. Заказчики) = какому то значению, то поле Состояние = Связана:
if ($line['Связана по услуге']['ID']==0) $line['Состояние'] = "Свободна"; else $line['Состояние'] = "Связана";
и тогда запускается основное вычисление, подбирающее исполнителя по условиям в запросе:
// 130 - ID т. Заявки, 240 - ID т. Исполнители
if($line['Состояние'] == "Связана") // связана будет тогда только, если...
{
$zvka = data_table(130, "`status`<>'2' AND `f5620`='Исполняемая' AND `f1750`=" . $line['ID']); // проверяем на наличие дубля размещаемой заявки
$row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); // делаем выборку по условиям и присваиваем массив значений полей переменной
if(!$zvka) {
if(!$row) {
data_update(240, array('f6130' => 0), "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID']); // присваиваем значение 0 полю Флаг по условиям
$row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); // делаем выборку по условиям и присваиваем массив значений полей переменной
}
// создаём запись и копируем значения полей в т. Заявки
$zvka['Город'] = $line['Город']['ID'];
$zvka['Заказчик'] = $line['ID'];
$zvka['Тип услуги'] = $line['Связана по услуге']['ID'];
$zvka['Исполнитель'] = $row['id'];
$zvka['ID'] = insert_query($zvka, "Заявки");
// обновляем Флаг=1 по итогу
data_update(240, array('f6130' => 1), "id=", $row['id']);
}
}
и всё бы ничего...
Все отрабатывается наотлично, но только когда выборка принесла какой то результат. А если результат = 0, то заявка создаётся (в т. Заявки) со значением поля Статус=В ожидании и конечно же пустым полем Исполнитель (так как нет такого, по условиям выборки). Как остановить вычисление, если в выборке отсутствует результат по условии и вывести сообщение во всплывающем окне: По запрошенной услуге отсутствует свободный исполнитель
Сообщение отредактировал All_ex74: 17 Июнь 2014 - 16:52














