2012-11-22 41 views
1

這對於基於條件(如果已批准或拒絕的情況)是必需的。提交包含25行30個字段的格式的網格類型以用於批量插入。最後25個插入的行將被插入到temp_Orders表中,然後基於if批准,相同的數據(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); 
+1

你能否提供更多信息?爲什麼PHP代碼不能跟蹤最後25行,並對'real_Orders'表執行另一個'INSERT'? mysql_insert_id()的 – meustrus

+0

工作正常,但在mysql_affected_rows()失敗。不知道如何做到這一點。 –

+0

如果插入兩行,'mysql_insert_id()'插入第一個輸入的行,但是「mysql_affected_rows()」只插入一行最後一行。 –

回答

1

爲samimi_it所言 - > mysql_insert_id()將只跟蹤最後插入的ID(UID) 所以你要麼需要:

  1. 保持你的代碼中軌行 - 容易出路,但最高難題
  2. 改變你處理數據的方式,在你的臨時訂單行上添加一個額外的列,如ref/order_no等,並保存在你的代碼中,此後如果批准的簡單複製運行查詢,插入real_orders(select order_no = {saved order_no})
  3. 或刪除冗餘數據,有一個表「訂單」 包括新列;已批准int 0 = false,1 = true和order_no(引用訂單) 將行插入批准= 0的訂單表中。 然後一旦批准,簡單地執行更新訂單集合approved = 1 where order_no = {order_no_from_code}。

希望這點能指引您正確的方向。

+0

好主意,會試着讓你知道結果。 –

+0

但是,我已將整個場景放入一個小例子中,我可以給予嘗試,包括mysql。任何有興趣的人都會告訴我 –

相關問題