sites/shop.php
Code:
if( @odbc_exec($odbc_connect, $strUpdateBalance)
AND
@odbc_exec($odbc_connect, '
INSERT INTO [' . $_CONFIG['db_databases']['web'] . '].dbo.[LOG_PURCHASES] (
item,
itemname,
itemcount,
itemcurrency,
itemworth,
account,
datetime
) VALUES (
' . cleanSqlInput($mixedSelectedItemDetailsArray['itemid']) . ',
\'' . cleanSqlInput($mixedSelectedItemDetailsArray['name']) . '\',
' . cleanSqlInput($mixedSelectedItemDetailsArray['count']) . ',
' . $intGetCurrentCurrency . ',
' . cleanSqlInput($mixedSelectedItemDetailsArray[$intWorthColumnHelper]) . ',
\'' . cleanSqlInput($_SESSION['user']) . '\',
\''. date($_CONFIG['web_date_format']['dbDatetime']) .'\'
)
')
AND
send_item($intCharacterID, $mixedSelectedItemDetailsArray['itemid'], $mixedSelectedItemDetailsArray['count'])
)
xinc_functions.php
Code:
function send_item($playerid, $itemid, $quantity) {
global $odbc_connect, $_CONFIG;
if(is_numeric($playerid) AND is_numeric($itemid) AND is_numeric($quantity)) {
if( @odbc_exec($odbc_connect, '
INSERT INTO [' . $_CONFIG['db_databases']['chr'] . '].dbo.[ITEM_SEND_TBL] (
m_idPlayer,
serverindex,
Item_Name,
Item_count,
idSender
) VALUES (
\''.$playerid.'\',
\'01\',
\''.$itemid.'\',
\''.$quantity.'\',
\'0000000\'
)
')) {
return true;
}
else {
return false;
}
}
else {
return false;
}
}
Entferne das @ for dem odbc_exec (das @ unterdürckt Fehlermeldungen von Funktionen in PHP), kaufe erneut ein Item und schaue, ob es nun einen neuen Error-Log gibt.
Die PHP Errorlogs liegen bei Windows (IIS) standardmäßig im C:\Windows\Temp Ordner.
Meine Vermutung ist ein Fehler mit dem Dateformat.
Wenn das der Fall ist, eventuell mal in der xinc_config.php das Dateformat bearbeiten.
Dies hängt in der Regel von der Sprachversion des SQL Servers ab, auf dem die Datenbank liegt:
- Deutsch
- 'dbDatetime' => 'Y-d-m H:i:s'
- Englisch
- 'dbDatetime' => 'Y-m-d H:i:s'
Am einfachsten ist es aber, in Querys das date($_CONFIG['web_date_format']['dbDatetime']) durch GETDATE() zu ersetzen - der Server baut sich das Datumsformat dann selbst zusammen.