Hallo Gemeinde,
ich habe hier ein kleines Script geschrieben und mein Chef hat eine Anmerkung gemacht. Kann mir jemand bitte helfe dieses Problem zu lösen und mir eine short-description dazu geben damit ich das einwandfrei nachvollziehen kann? Hier das Script plus Anmerkung. Danke für eure Unterstützung ich weiß den Support echt zu schätzen.
Script:
PHP-Code:
<?php
include_once(dirname(__FILE__) . '/../bootstrap.php');
$oDb = oxDb::getDb( oxDb::FETCH_MODE_ASSOC );
$sQ1 = "SELECT `oxid` FROM `oxorder` WHERE `oxtransstatus` = 'NOT_FINISHED' AND `oxpaymenttype` = 'trosofortgateway_su'";
$oRs = $oDb->getArray( $sQ1, false, false );
foreach ($oRs as $oxOrderID) {
$oxOrderID = $oxOrderID['oxid'];
$sQ = "SELECT oxorderid, oxartid, oxartnum, oxamount FROM `oxorderarticles` WHERE `oxOrderID` = '$oxOrderID'";
$oRs = $oDb->getArray( $sQ, false, false );
foreach ($oRs as $oxArticle){
$oArticle = oxNew('oxarticle');
if ($oArticle->load($oxArticle['oxartid'])) {
$oArticle->reduceStock(-$oxArticle['oxamount'], true);
}
}
$updstatus = "UPDATE oxorder SET oxtransstatus = 'NOT_FINISHED_MODI' WHERE oxtransstatus = 'NOT_FINISHED' AND `oxpaymenttype` = 'trosofortgateway_su'";
$result = mysql_query($updstatus) or die ('Update fehlgeschlagen : ' . msql_error($oDb));
}
?>
Anmerkung vom Chef:
++ $result = mysql_query($updstatus) or die ('Update fehlgeschlagen : ' . msql_error($oDb)); ++
Du änderst hier ALLE Datensätze, d. h. auch zwischenzeitlich neu eingetroffene Datensätze werden direkt als bearbeitet markiert obwohl, sie nicht bearbeitet wurden. Bitte ändere das so, dass nur der aktuell bearbeitete Datensatz als bearbeitet markiert wird. So können wir das nicht verwenden.