Как оптимизировать код?

private function donate_list($server) {
		$server = intval($server);
		$query = $this->db->query("SELECT * FROM mcr_donates WHERE status = 1 AND server_id = $server");

		ob_start();
		while ($donate = $this->db->fetch_assoc($query)) {
			$data = array(
				'TITLE' => $donate['title'],
				'IMG'	=> $donate['img'],
				'PRICE' => $donate['price'] 
			);
			echo $this->core->sp(MCR_THEME_MOD."/profile/donate-id.html", $data);
		}

		return ob_get_clean();
	}

	private function server_list() {
		$query = $this->db->query("SELECT * FROM mcr_servers");

		ob_start();
		while ($ar = $this->db->fetch_assoc($query)) {
			$data = array(
				'TITLE' 	  => $ar['title'],
				'DESCRIPTION' => $ar['description'],
				'DONATES' 	  => $this->donate_list($ar['id'])
			);
			echo $this->core->sp(MCR_THEME_MOD."/profile/server-id.html", $data);
		}

		return ob_get_clean();

	}

Есть 2 функции, 1 выводит в цикле сервера, вторая донаты для каждого сервера. Вторая запускается в цикле и по идее там все равно не будет большой нагрузки, так как серверов не много, но хотелось бы оптимизировать как-то. К тому же сейчас выводится только 1 сервер и донаты к нему, а второй игнорируется. Если убрать строку
'DONATES' => $this->donate_list($ar['id'])
то выводятся все сервера. Можно ли составить запрос, который будет выдавать массив с серверами, где одно поле будет массив с донатами этого сервера?
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы