Как отменить создание записи в т. Заявки, если в выборке $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