Я использую dhtmlxgrid для отображения информации базы данных MySQL пользователям с возможностью редактировать данные линейных ячеек. Один столбец productionstage
отображается как выпадающий список с возможностью изменить значение на Staged Done
, Это прекрасно обновляет таблицу БД. Однако мне нужно проверить значение столбца productionstage, чтобы проверить Staged Done
значение. Если производственное значение установлено на это значение, мне нужен еще один столбец stagestatus
в той же таблице, чтобы обновить его значение Production
, Желательно, чтобы столбец stagestatus в таблице БД НЕ был видимым для конечного пользователя столбцом и вместо этого вызывался на серверной части.
Вся помощь приветствуется. Спасибо!
Мой код:
//update row
$sql = "UPDATE invoices SET editby='".$editBy."', editpage='".$editPage."', serverip='".$serverIp."', ip='".$Ip."',floornotes='".$_GET["floornotes"]."',productionstage='".$_GET["productionstage"]."' where id=".$_GET["gr_id"]."'";
$res = mysqli_query($sql);if (($_GET['productionstage']) == 'Staged Done' ) {
//update stagestatus from 'Scheduled' to Production if moved to 'Staged Done' in Glass Prep.
$sql1 = "UPDATE invoices SET stagestatus = 'Production') WHERE id=".$_GET["gr_id"]."'";
$res1 = mysqli_query($sql1);
}
ПРИМЕЧАНИЕ :: Я понимаю, что существующий метод, использованный предыдущим программистом, подвергает сценарий атакам SQL-инъекций — я также буду обновлять этот сценарий, чтобы использовать подготовленные операторы … Спасибо!
Так что у меня где-то только что была ошибка в коде. После некоторого тестирования и редактирования следующий код решил проблему (и да, dhtmlxgrid может обрабатывать более одного оператора UPDATE на сетку).
Решение:
//update row
$sql = "UPDATE invoices SET editby='".$editBy."', editpage='".$editPage."', serverip='".$serverIp."', ip='".$Ip."',floornotes='".$_GET["floornotes"]."',productionstage='".$_GET["productionstage"]."' where id=".$_GET["gr_id"]."";
$res = mysqli_query($sql);if (($_GET['productionstage']) == 'Staged Done' ) {$sql1 = "UPDATE invoices SET stagestatus = 'Production' WHERE id=".$_GET["gr_id"]."";
$res1 = mysqli_query($sql1);
} else {
print("<action type='error'>SQL query error</action>");
}
Обратите внимание: Мой следующий шаг — дальнейшее обновление кода с использованием подготовленных операторов, чтобы сделать скрипт более безопасным.
Спасибо!
Других решений пока нет …