newerant, тяжёлая у нас работа. Большинство пользователей быдло и дегенераты. Приходится подстраиваться.
30 Авг 2012, 19:42YetiRider, возможно
Первый раз делаю сайт не с нуля (отсчитую от года назад, точнее от того времени когда я уже уверенно мог сказать что я программист и мог на PHP написать всё что угодно с ООП, блекджеком и шлюхами) . А джон взял потому что в нём пол работы уже зделанна, в отличии от сайта с нуля где надо пол года пахать чтобы запилить хороший функционал и код без быдлокода
newerant пишет:
"надо пол года пахать чтобы запилить хороший функционал и код без быдлокода"
Если ты говоришь что ты уже год как тру кодер и можешь писать сайты с использованием ООП, то ты б свой функционал сделал бы за пару недель, максимум месяц, за пол года можно выучить все и написать, и если это твой уровень, то мне тебя жаль, ты уже год как ходишь и думаешь что ты программист 
Jadson, Я иммел виду что пол года я уже хорошо знаю всё. А php (+ местами змейку,плюсы) я учил 2 года.
30 Авг 2012, 20:19Jadson, вот один из моих исходников на сайт заказчика(c нуля):
<?php
# Класс постов
/* UPD to 30.08.2012 */
class ForumPosts
{
protected $db_class = array();
protected $update_list = array();
public $theme_exists = 0; //существование темы с таким id'ом
public $message_exists = 0; // существование поста с таким id'ом
public $is_user_access = 1
/предлогается ли вывести информацию о посте в браузер
private $obj_cat;
function __construct($id = 0)
{
$info = self::is_exists_connect_information($id, 1); // проверяем существование темы/поста
if($info)
{
#определяем по типу что за обьект мы нашли
if($info['type'] == 'message')
$this->message_exists = 1;
else
$this->theme_exists = 1;
}
else
{
$this->is_user_access = 0; //сообщаем что тему мы не нашли
return 0;
}
$this->obj_cat = new ForumCat($id);
$this->db_class = $info;
return 1;
}
#Проверяет существование темы/поста и возвращает информацию о нём есле он найден
public static function is_exists_connect_information($id , $return_info = 0)
{
$q = mysql_query("SELECT * FROM `cats_posts` WHERE `id` = '$id' LIMIT 1");
$check = mysql_num_rows($q); //сама проверка существования
if($return_info && $check)
return mysql_fetch_assoc($q);
return (bool) $check;// возвращаем информацию в булевом виде есле тема найденна
}
#Функция добавления темы
public static function AddTheme($name, $message, $id_cat, $anons, $keywords)
{
# Проверка авторизации юзверя
if(!(USER_ACCESS))
return 0;
#time-out в 90 сек
if(isset($_SESSION['time_theme_add']) && $_SESSION['time_theme_add'] > TIME)
return 'time-err';
$_SESSION['time_theme_add'] = (TIME + 90);
if(empty($message) || empty($name)) #Пустое сообщение
return 0;
#Фильтруем типо, ага )
$keywords = hsc($keywords);
mysql_query("INSERT INTO `cats_posts` SET
`name` = '$name',
`message` = '$message',
`type` = 'theme',
`user_id` = '".USER_ID."',
`user_name` = '".USER_LOGIN."',
`counter` = '0',
`time_add` = '".TIME."',
`is_admin_post` = '".USER_ACCESS."',
`hide` = '0',
`id_cat` = '$id_cat',
`anons` = '$anons',
`keywords` = '$keywords'
");
#Плюсуем счётчик тем в категории в которой создавалась тема
$obj_cat = new ForumCat($id_cat);
$obj_cat->themes_counter ++;
mysql_query("UPDATE `cats_posts` SET `id_theme` = '".mysql_insert_id()."' WHERE `id` = '".mysql_insert_id()."' LIMIT 1");
return mysql_insert_id();
}
#Функция доабвления поста
public function AddComent($message)
{
# Проверка авторизации юзверя
if(!(USER_ACCESS))
return 0;
#time-out в 20 сек
if(isset($_SESSION['time_post_add']) && $_SESSION['time_post_add'] > TIME)
return 'time-err';
if(empty($message)) #Пустое сообщение
return 0;
$_SESSION['time_post_add'] = (TIME + 20);
mysql_query("INSERT INTO `cats_posts` SET
`message` = '$message',
`type` = 'message',
`user_id` = '".USER_ID."',
`user_name` = '".USER_LOGIN."',
`counter` = '0',
`time_add` = '".TIME."',
`is_admin_post` = '".USER_ACCESS."',
`hide` = '0',
`id_cat` = '{$this->id_cat}',
`id_theme` = '{$this->id}'
");
#Плюсуем к счётчику сообщений темы при создании новой
$this->counter ++;
return mysql_insert_id();
}
#Статичиское удаление как обьекта
public function delete()
{
#Есле мы удаляем тему деинкруменируем счётчик комов категории
if($this->type == 'theme')
$this->obj_cat->themes_counter --;
return mysql_query("DELETE FROM `cats_posts` WHERE `id` = '{$this->id}' LIMIT 1");
}
#Проверяет существование поста
public function check_exists_post($id_post, $return_info = 0)
{
$q = mysql_query("SELECT * FROM `cats_posts` WHERE `id` = '$id_post' AND `type` = 'message' LIMIT 1");
$check = mysql_num_rows($q); //сама проверка существования
if($return_info && $check)
return mysql_fetch_assoc($q);
return (bool) $check;// возвращаем информацию в булевом виде есле сообщение найденно
}
#Удаляет пост
public function del_post($id_post)
{
#Ограничиваем доступ к удалению постов
if(USER_ACCESS <= 1 || !check_exists_post($id_post, 0))
return 0;
mysql_query("DELETE FROM `cats_posts` WHERE `id` = '$id_post' LIMIT 1");
//Минусуем счётчик сообщений темы при удалении поста из темы
$this->counter --;
return 0;
}
function __get($query)
{
if($query == 'del' && $this->theme_exists): #Удаление этой темы
mysql_query("DELETE FROM `forum_posts` WHERE `id_theme` = '{$this->id}' AND `type` = 'message'"); // удаляем посты темы
mysql_query("DELETE FROM `forum_posts` WHERE `id` = '{$this->id}' AND `type`= 'theme' LIMIT 1"); // удаляем саму тему
#При удалении темы минусуем считчик тем категории
$this->obj_cat->themes_counter --;
return 1;
endif;
return (isset($this->db_class[$query]) ? $this->db_class[$query] : 0);
}
function __set($k, $v)
{
$this->update_list[$k] = $v;
$this->db_class[$k] = $v;
return (1);
}
function __destruct()
{
if(!$this->update_list || !$this->is_user_access)
return 0;
$query = array();
foreach($this->update_list as $key => $value)
{
$query [] = '`'.$key. '`='. "'".$value."'";
}
mysql_query("UPDATE `cats_posts` SET ".join(',' , $query)." WHERE `id` = '{$this->id}' LIMIT 1");
return 0;
}
}
добавлено спустя 2 минуты:
Jadson, жаль табуляция не работе . С подсветкой кода и табульцией - http://codepad.org/WdNqpTX3
newerant, для подсветки кода тэг [php] есть, мне без разницы какой там исходник, я говорю о сайте этом, лучше заказывай дизайны для проектов, я сам лучше не сделаю дизайн, поэтому когда пишу с 0 что-то дизайн заказываю
добавлено спустя 36 минут:
newerant, класс, как по моему уровню ООП, не плох
http://masthelp.ru/notes/read?id=11
Эпично. Феерично. Нет слов.
З.Ы. Это же перевод англоязычного текста через гугл, да?