2017-01-13 9 views
1

dhtmlxgridを使用して、ラインデータベースデータを編集できるユーザーにMySQLデータベース情報を表示しています。 1つの列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); 

} 

NOTE ::私は以前、プログラマが使用する既存の方法は、SQLインジェクション攻撃へのスクリプトを公開していることを理解して - 私はまた、このスクリプトは、プリペアドステートメントを使用するように更新されます...ありがとうございました!

+0

エラーが発生しますか? '$ sql1'に余分なカッコがありますが、それは誤字かもしれません。 –

+0

ページを調べてもエラーは出ませんが、2番目のUPDATEステートメントのためにdhtmlxgridが行の更新に失敗しているのがわかります。 dhtmlxgridは、グリッドごとに1つのUPDATE文を処理することのみを目的としていますか?もしそうなら、コードを調整して値をテストし、IFステートメントロジックに基づいて正しいUPDATEステートメントを実行します。 – rdimouro

答えて

0

だから、どこかでコードにバグがあったに違いない。いくつかのテストと編集で、次のコードで問題が解決されました(そして、yes 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>"); 

} 

注意してください:私の次のステップは、スクリプトをより安全にするために準備されたステートメントを使用してさらにコードを更新しています。

ありがとうございました!

関連する問題