2015-01-16 49 views
0

嗨即時無法應用array_diff()當用戶編輯的庫房細節,以取代新的結果。如何應用array_diff與PHP和SQL

這裏是我通過sql調用所有變量的編輯函數。

function einv_editStockrm($srid,$code,$name,$desc,$remark,$cat) 
    { 
     //connect to database 
     base_connectDatabase(); 

$User = base_getUserDetail($_SESSION['uID']); 
    $Stockroom = einv_getStockrmDetail($srid); 
    base_executeSQL("UPDATE einv_stockroom 
    SET einv_stockrm_code='" . $code . "', 
    einv_stockrm_name='" . $name . "', 
    einv_stockrm_desc='" . $desc . "', 
    einv_stockrm_remark='" . $remark . "', 
    einv_stockrm_cat = '" . $cat . "' 
    WHERE einv_stockrm_id=" . $srid . ""); 

    base_addTransactionLog('Manage Stock Room', 'Edit', 
    " 
    Stock Room Code = " . $code . " || 
    Stock Room Name = " . $name . " || 
    Stock Room Description = " . $desc . " || 
    Stock Room Remark = " . $remark . " || 
    Stock Room Category = " . $cat . " 
    "); 

這裏是array_diff()函數。可能會有不必要的調用和/或缺乏編碼..不太確定。這組編碼導致沒有輸出。服務器基本崩潰。對此有何幫助?

//oldsr is existing stockroom data 
    //newsr is new stockroom data through edit function 
    //resultsr is the end result 
    <?php 
    $StockroomGetAllDetails = array(); 
    $arr2 = einv_getStockrmDetailFromCode($stockroomCode); 
    $codearr = explode(",", $arr2['einv_stockrm_code']); 

    $oldsr = array($codearr); 
    $newsr = array($codearr); 
    $resultsr = array_diff($newsr, $oldsr); 

    if(!count(array_diff($oldsr, $newsr)) && !count(array_diff($newsr, $oldsr))) { 
    // Arrays are equal 
    } else { 
    // Array values are different 
     echo $resultsr; 
    } 
    ?> 

此代碼是用於重定向。

 //go to stock room page 
     echo '<script type="text/javascript">' . "\n"; 
     echo 'window.location="../einventory/view_stockrm.php?id='. $srid .'";'; 
     echo '</script>'; 

    //close the database 
    base_closeDatabase(); 
} 

回答

0

這組能顯示添加了新的DATAS代碼並相應地除去:)

$oldCat = $Stockroom["einv_stockrm_cat"]; 

$oldCatArr = explode(",",$oldCat); 
$newCatArr = explode(",",$cat); 

//Debugging 
//print_r($oldCatArr); 
//print_r($newCatArr); 
$resultCatAdd = array_diff($newCatArr, $oldCatArr); 
$resultCatRemove = array_diff($oldCatArr, $newCatArr); 

//Debugging 
print_r($resultCatAdd); 
print_r($resultCatRemove);