2017-01-13 1 views
1

dhtmlxgrid를 사용하여 라인 셀 데이터를 편집 할 수있는 사용자에게 MySQL 데이터베이스 정보를 표시하고 있습니다. 하나의 열 productionstage은 값을 Staged Done으로 변경할 수있는 콤보 상자 열로 표시됩니다. 이것은 DB 테이블을 완벽하게 업데이트합니다. 그러나 Staged Done 값을 테스트하려면 productionstage 열의 값을 확인해야합니다. productionstage가 해당 값으로 설정된 경우 동일한 테이블에 다른 열 stagestatus이 있어야 값이 Production으로 업데이트됩니다. DB 테이블의 stagestatus 열은 최종 사용자가 볼 수있는 열이 아니고 대신 백엔드에서 트리거되는 것이 좋습니다.dhtmlxgrid 열 선택 옵션 변경시 다른 데이터베이스 값 업데이트 필요

모든 도움을 주실 수 있습니다. 고맙습니다!

내 CODE :

//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 주입 공격에 스크립트를 노출 이해 - 나는 또한이 스크립트는 준비된 문을 사용하여 업데이트됩니다 ... 고맙습니다!

+0

오류를 찾으셨습니까? '$ sql1'에 여분의 괄호가 있지만 typo 일 수 있습니다. –

+0

페이지를 검사 할 때 어떤 오류도 발생하지 않지만 두 번째 UPDATE 문으로 인해 dhtmlxgrid가 줄을 업데이트하지 못하는 것을 볼 수 있습니다. dhtmlxgrid는 그리드 당 하나의 UPDATE 문만 처리 할 수 ​​있습니까? 그렇다면 값을 테스트하고 IF 문 논리를 기반으로 올바른 UPDATE 문을 실행하도록 코드를 조정합니다. – rdimouro

답변

0

그래서 나는 코드 어딘가에 버그가 있었을 것입니다. 몇 가지 테스트 및 편집시 다음 코드가 문제를 해결했습니다 (예, 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>"); 

} 

참고 : 내 다음 단계는 스크립트를보다 안전하게 만들기 위해 준비된 문을 사용하여 더욱 코드를 업데이트하고 있습니다.

감사합니다.

관련 문제