Система ротации банеров

Dimok

Новичок
Система ротации банеров

Хочу написать клас, который получал масив из базы данных и обрабатывал его надлежащим образом, выдавал масив, который уже можно было обрабатывать и переводить в графическую форму.
Я выкладу пример класа. Я не крутой програмер, я учусь ... прошу не пинать, и дать как можно больше советов. Также хотел бы услышать советы професионалов, которые скажут, насколько безграмотно написан клас.
PHP:
<?php
class banner
{
	protected $table_banner;
	protected $random;
	protected $max_position;
	
	function __constuct($table_banner,
						$random = true,
						$max_position = 8)
	{
		// Назва БД
		$this->table_banner = $table_banner;
		// Максимальна кількість даних в одному масиві
		$this->max_position = $max_position;
		
		// Включення і вимкнення функції випадкового розкидування банерів
		if ($random == "on")
		{
			$this->random = true;
		}
		else
		{
			if ($random === true)
			{
				$this->random = true;
			}
			else
			{
				$this->random = false;
			}
		}
	}
	
	function get_html ()
	{	
		$query = "SELECT * FROM $this->table_banner WHERE hide='show'";
		
		$row_banners = mysql_query($query);
		
		if(!$row_banners) 
		{ 
			echo "Возникла ошибка - ".mysql_error()."<br>"; 
			echo $row_banners; 
			exit(); 
		} 
		

		if (mysql_num_rows($row_banners)>0)
		{
			while ($array_banners = mysql_fetch_array($row_banners))
			{
				// Якщо є код, то використати його і закінчити
				if (!empty($array_banners['code']))
				{
					$banners[] = $array_banners['code'];
				}
				// Якщо коду немає, передивитись інші дані
				else
				{
					// Передивитись наявність картинка
					if (!empty($array_banners['image']))
					{
						$image = $array_banners['image'];
					
						// Якщо є ссилка
						if (!empty($array_banners['url']))
						{
							$url = $array_banners['url'];
						}
						else
						{
							$url = "";
						}
					
						// Якщо є альт-тег, використати його
						if (!empty($array_banners['alt']))
						{
							$alt_teg = $array_banners['alt'];
						}
						else
						// Якщо немає
						{
							// Передивитись, чи є назва компанії
							if (!empty($array_banners['company']))
							{
								$alt_teg = $array_banners['company'];
							}
							else
							{
								$alt_teg = "";
							}
						}
				
						$banners[] = "<a href='$url'><img src='$image' alt='$alt_teg'></a>";
					}
				}
			}
		}
		
		// Включення функції випадкової вибірки даних
		if ($this->random = true)
		{
			shuffle ($banners);
		}
		
		// Повернення готового масиву
		$banners = array_chunk($banners, $this->max_position);
		return $banners;
		
	}
}

?>
Вопросы : 1. Ошибка при формировании запроса к БД, нехочет воспринимать переменную $this->table_banner, как исправить ?
2. Нехочет воспринимать переменную $this->max_position в конце файла. Как исправить ?

А ето код запуска класа. При изменении етих двух переменных на статистическии даные, все работает как надо.
PHP:
<?php
include_once ("config.php");
include_once ("banner.php");

$table = "table_banners";

$date = new banner ($table, true, 4);

var_dump ($date->get_html());

?>
 

Dimok

Новичок
Спасибо, прочитал.
Но ответ так и не нашол.
Получаю такой ответ в броузере :

Возникла ошибка - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE hide='show'' at line 1

Я понимаю, что ошибка в синтаксесе запроса, нельзя получить доступ до переменной. Пожалуйста, подкажите, как получить доступ ?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Здесь не принято копать за тебя.
Тебе дали лопату - идешь и копаешь.

Касательно 1-го пункта:
По ссылке - читаешь пункт #2

Потом делаешь, чтоб запрос работал из консоли, пхп=майадмина.
Потом постепенно "заворачиваешь" его в пхп.
 

Dimok

Новичок
Проблема была решена. Виновата моя внимательность.
Вместо слова __construct, я написал __constuct.
Клас заработал, и получил желаемый ефект.

Вопрос 2 : что почитать, посмотреть, что бы грамотно научиться писать классы ?
 
Сверху