1

これは、承認または却下された場合の条件ベースで必要です。30 フィールドの 25 行を持つグリッド タイプのフォームが、一括挿入のために送信されます。最後に挿入された 25 行が temp_Orders テーブルに挿入され、承認された場合に基づいて、同じデータ (temp_Orders に最後に挿入された行) をすぐに real_Orders にコピーする必要があります。

$query = "insert into temp_users (fname,sname,lname,email,dob,date_signup,date_expire) values ";    

$count = count($_POST['fname']);

for($x=0;$x < $count; $x++)     
{

    $fname = $_POST['fname'][$x];
    $sname = $_POST['sname'][$x];
    $lname = $_POST['lname'][$x];
    $dob = $_POST['dob'][$x];
    $email = $_POST['email'][$x];

    echo $fname . $sname . $lname . $dob . $email . '<br>';

    $emty_tbl = "TRUNCATE temp_users";

    $result_emty_tbl = mysql_query($emty_tbl);
    if(!$result_emty_tbl){
        die(mysql_error());
        @mysql_free_result($result_emty_tbl);
    }

    $query .= "(
        '$fname', 
        '$sname',
        '$lname', 
        '$email', 
        '$dob',
        '$today',
        '$nextyear')";

    /* If not last iteration, add a comma and a space */
        if ($x < ($count - 1)) {
        $query .= ", ";
    }


    $result = mysql_query($query);


}
if(!$result){
    die(mysql_error());
    @mysql_free_result($result);
} else {

    $totalRID = mysql_affected_rows();
    $lastRID = mysql_insert_id();

    echo "Total records <b>" . $totalRID . " </b>entered into the database!" . "<br>";                                  
    echo "Current record number <b>" . $lastRID . " </b>entered into the database!" . "<br>";
    echo "<form name='postbackid' method='post'>
        <input type='hidden' name='lastrecord' value='$lastRID'>
        <input type='button' value='Approved' name='approved' onclick='return Approved();'>
        <input type='button' value='Declined' name='declined' onclick='return Declined();'>                                       
        </form>";       

}   






    }
}



$postbackid=$_POST['lastrecord'];
echo $postbackid;


$sqlinsert = "INSERT INTO users (fname, sname, lname, dob, email, date_signup, date_expire)
    SELECT fname, sname, lname, dob, email, date_signup, date_expire
    FROM temp_users 
    WHERE id='$postbackid'";

$resultinsert = mysql_query($sqlinsert, $link);
4

1 に答える 1

1

samimi_it が述べているように -> mysql_insert_id() は最後に挿入された id(uid) のみをトレースするため、次のいずれかが必要になります。

  1. コード内の行を追跡する - 簡単な方法ですが、最大の問題があります
  2. データの処理方法を変更し、一時注文行に ref/order_no などの追加の列を追加して、それをコード内に保持します。その後、単純なコピーが承認されたらクエリを実行し、real_orders に挿入します (order_no = {saved order_no を選択) }))
  3. または、1 つのテーブル「注文」に新しい列を含めることにより、冗長データを削除します。承認された int 0 = false、1 = true および order_no (注文を参照するため) は、承認済み = 0 で行を注文テーブルに挿入します。次に、単純に承認されたら、order_no = {order_no_from_code} の承認済み = 1 を設定する注文を更新します。

これがあなたを正しい方向に向けることを願っています。

于 2012-11-22T07:27:51.993 に答える