0

私は以下のコードを持っています:

$do_id=$_GET['id'];
$new_workorder=$_GET['workorder'];

//get current workorder on file for record that will be updated
$query = "SELECT workorder FROM jvltodos WHERE id = '$do_id' LIMIT 1";
$bla = mysql_query($query);
$workorder_old = mysql_fetch_row($bla);

//get record for workorder on file that will have the new workorder
$query = "SELECT id FROM jvltodos WHERE workorder = '$new_workorder' LIMIT 1";
$bla = mysql_query($query);
$id_fix = mysql_fetch_row($bla);

if (isset($new_workorder) && $new_workorder!=$workorder_old) {
    //update the changed record
    $query = "UPDATE jvltodos
        SET workorder={$new_workorder}
        WHERE id = {$do_id}";
    $result = mysql_query($query);

    //update the record that had the old workorder
    $query = "UPDATE jvltodos
        SET workorder={$workorder_old}
        WHERE id = {$id_fix}";
    $result = mysql_query($query);
}

'id'と'workorder'をURLに渡すので、最初にそれらを取得します。これで、その「id」を含むレコードを新しい「workorder」に更新します。ここまでは順調ですね。しかし、その「workorder」を持つレコードを見つけて、古い「id」から「workorder」で更新したいと思います。(簡単に言うと、「workorder」を増減するときに、2つのレコードを切り替えたいと思います)私には、かなり単純に見えますが、機能しません。最初に(新しい作業指示書でIDを更新しますが、他のレコードは同じままです。すでにそこにあった作業指示書を保持します)何が欠けていますか?(私が見落としているような単純なものでなければなりません。)

4

1 に答える 1

0

@andrewsi提案ありがとうございます!私はコードを取り出し、それを別のページにコピーし、何が起こっているのかを確認するためにいくつかのエコーを実行しました。そうすれば、問題が何であるかを簡単に理解できました。

例:$ bla = mysql_query($ query); $ workorder_old = mysql_fetch_row($ bla);

私が欲しかった$workorder_oldは数字でなければなりませんでした。ただし、これは発生しませんでしたが、配列が返されました。コードをに変更したとき...

$bla = mysql_query($query);
$bla = mysql_fetch_row($bla);
$workorder_old = $bla[0];

...それは魅力のように機能しました。

小さなメモ:私は1つのステップ(別の言語)でデータを取得することに慣れているので、PHPでいくつかのステップを実行する必要があることを忘れていました。おそらく関数にそれを投げる時が来たと思います..:-)

于 2012-08-23T01:03:47.970 に答える