diff --git a/classes/Battles/DressedItems.php b/classes/Battles/DressedItems.php index d1b170f..5fcb770 100644 --- a/classes/Battles/DressedItems.php +++ b/classes/Battles/DressedItems.php @@ -27,16 +27,16 @@ class DressedItems public static function getDressedItemBySlot($itemSlot, $ownerId) { - return self::$db->fetch('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot = ?', [$ownerId, $itemSlot]); + return self::$db->fetch('SELECT *, COUNT(1) AS count FROM inventory WHERE owner_id = ? AND dressed_slot = ?', [$ownerId, $itemSlot]); } - public function getItemsInSlots() + public function getItemsInSlots(): \stdClass { $items = self::$db->ofetchALL('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot > 0', $this->USERID); - $i = 0; - while ($i < count($items)) { - $this->dressedItem[$items[$i]->dressed_slot] = $items; - $i++; + $this->dressedItem = new \stdClass(); + foreach ($items as $item) { + $i = $item->dressed_slot; + $this->dressedItem->$i = $item; } return $this->dressedItem; } @@ -123,7 +123,7 @@ SQL; { self::getItemsInSlots(); // Проверяем, что используется один из 12 слотов и наличие предмета в слоте. - if (in_array($slot_id, Item::ITEM_TYPES_ALLOWED_IN_SLOTS) && $this->dressedItem[$slot_id]) { + if (in_array($slot_id, Item::ITEM_TYPES_ALLOWED_IN_SLOTS) && $this->dressedItem->$slot_id) { self::$db->execute('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot = ? AND owner_id = ?', [$slot_id, $this->USERID]); } } diff --git a/classes/Battles/Item.php b/classes/Battles/Item.php index 39a22ae..a60cfa0 100644 --- a/classes/Battles/Item.php +++ b/classes/Battles/Item.php @@ -49,9 +49,17 @@ abstract class Item */ public function __construct($row) { - foreach ($this as $key => $value) { - if (isset($row[$key])) { - $this->$key = $row[$key]; + if (is_array($row)) { + foreach ($this as $key => $value) { + if (isset($row[$key])) { + $this->$key = $row[$key]; + } + } + } elseif (is_object($row)) { + foreach ($this as $name => $value) { + if (isset($row->$name)) { + $this->$name = $row->$name; + } } } diff --git a/classes/Battles/UserInfo.php b/classes/Battles/UserInfo.php index ab978cd..4892f7e 100644 --- a/classes/Battles/UserInfo.php +++ b/classes/Battles/UserInfo.php @@ -25,13 +25,13 @@ class UserInfo extends User $dressedItems = $di->getItemsInSlots(); for ($i = 1; $i <= 12; $i++) { echo sprintf('
', $i); - if (!empty($dressedItems[$i])) { + if (!empty($dressedItems->$i)) { if (!$isBattle && $isMain) { - $itemString = '%s'; - echo sprintf($itemString, mt_rand(), $i, $dressedItems[$i]['image'], $dressedItems[$i]['name'], $dressedItems[$i]['name']); + echo sprintf('%s', + mt_rand(), $i, $dressedItems->$i->image, $dressedItems->$i->name, $dressedItems->$i->name); } else { - $itemString = '%s%s'; - echo sprintf($itemString, $dressedItems[$i]['image'], $dressedItems[$i]['name'], $dressedItems[$i]['name']); + echo sprintf('%s%s', + $dressedItems->$i->image, $dressedItems->$i->name, $dressedItems->$i->name); } } else { echo sprintf('Пустой слот [%s]', $i, $i); diff --git a/main.php b/main.php index 91173ed..9721a0b 100644 --- a/main.php +++ b/main.php @@ -36,10 +36,9 @@ $edit = $_GET['edit'] ?? null; // Подготавливаем отображение инфы и предметов. $userInfo = new UserInfo($user->getId()); $getItemsBonuses = new DressedItems($_SESSION['uid']); -$data_query = 'SELECT * FROM inventory WHERE owner_id = ?i AND dressed_slot = 0 AND on_sale = 0'; -$data = db::c()->query($data_query, $_SESSION['uid']); +$data = \Battles\Database\DBPDO::INIT()->ofetchAll('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot = 0 AND on_sale = 0', $user->getId()); $iteminfo = []; -while ($row = $data->fetch_assoc()) { +foreach ($data as $row) { $iteminfo[] = new InventoryItem($row); } @@ -456,8 +455,8 @@ Template::header('Игра'); echo ""; $ii->printInfo(); } - if ($data->getNumRows() == 0) { - echo "Пусто"; + if (!$data) { + echo "Пусто"; } ?>