Xwab
Форумыnavigate_nextСкрипты

Обсуждение форумов с конкурса
Сообщения
Nu3oN

Собственно хотелось бы услышать свои недочеты (в плане кода) своих форумов которые мы писали на конкурс!
Думаю другим участникам тоже было бы интересно послушать мнения!

24 Авг 2010, 22:50
Nu3oN

Пока что разбераю работу пирата:

<?php
/* Определение корня сайта */
for($i=0; $i<60; $i++){
   $p=str_repeat('../', $i);
   if(file_exists($p.'base.level')){
      define('BASE', $p);
      break;
   }
   if($i==59) die('PostEngine not found!');
}
unset($i, $p);
?>

Думаю проще было бы сделать так:

<?php
$root = null;
while (!is_file($root.'file.format')) $root .= '../';
?>

----

<?php
function int($int)
{
   
return abs(intval($int));

}
?>

Зачем писать велосипед? места это много не знанимает...
P.s вместо intval() лучше юзать (int)
----

<?php
/* Функции отображения статуса */

# по ID

function status($online)
{
   
$t = mysql_fetch_assoc(mysql_query("SELECT `time` FROM `users` WHERE `id` = ".$online.""));

if ($t['time']+300>time())
 {
echo ' <span class="user_on">[ON]</span> ';
   
}

else

{
      
echo ' <span class="user_off">[OFF]</span> ';
   
}

}
?>

Не легче ли просто передавать $online в функцию?
Да и геморой это лишнийй!
$online = ($user['time']+300) > time() ? '[on]' : '[off]';
Вот и вся твоя функция в одной строке!
----

<?php
/* Функция вывода аватара */

function avatar($id)
{
   
global $user, $style, $set;
   
$query = mysql_fetch_assoc(mysql_query("select `avatar` from `users` where `id` = ".$id));

return (empty($query['avatar'])) ? '<img src="style/'.$style.'/avatar.gif" alt="avatar" />' : '<img src="files/'.$query['avatar'].'" alt="avatar" />';
}
?>

желательно проверять еще есть ли файл или нет...
Мало ли... бывает случайно удалишь или еще что...
P.s как совет, сохраняй названия аватаров id юзера, и у тебя минус один лишний запрос к бд
Просто проверяешь существует ли аватар с именем id1.gif если есть, выводишь его, нет картинку мол нет аватара
---
В head.php, foot.php и т.д лучше вверху сделать проверку типа:

<?php
defined('CONST') or die('Error');
?>

иначе выведет ошибку, следовательно расскрытие путей =)
==========
С пирата хватит... уже под-устал децл...
позже может еще что гляну =)


__________
посл.ред. 24 Авг 2010, 23:28; всего 4 раз(а) 24 Авг 2010, 22:56
wapmorgan

Nu3oN, 1. А если этого файла все же нет?
здесь счетчик нужен по любому.
2. Какой велосипед?
Нам отрицательные значения не нужны.
З.Ы, почему?

24 Авг 2010, 23:04
Nu3oN

Цитата:
" А если этого файла все же нет?"

Ну да, насчет счетчика че то я не додумался... косяк за мной! =)
Цитата:
"З.Ы, почему?"

int преобразует целое число
intval округляет, и выдает целое число!
---
int это конструкция языка php а intval функция
Следовательно int быстрее чем intval


__________
посл.ред. 24 Авг 2010, 23:21; всего 1 раз 24 Авг 2010, 23:14
wapmorgan

Нужно будет затестить.
Насчет первого аргумента, что то я не чувствую разницы в результате.
// опять же, много не тестил.
А по моему коду есть что сказать?
// это не мотор, тут нужно [quote] )


__________
посл.ред. 24 Авг 2010, 23:20; всего 1 раз 24 Авг 2010, 23:19
Nu3oN

Morgan, я каждого гляну =)
дело не в поиске гомна, а ради интереса =)
вдруг что нового для себя найду =)
а то подумаете... гг
думаю вам и самим интересно узнать свои ошибки

24 Авг 2010, 23:22
Nu3oN

По поводу работы моргана:
Любишь же ты константы =) гг
Пока ничего не нашел =)
----

<?php
$db -> sql("SELECT * FROM `table` WHERE `name` <= '$var'");
?>

переменные лучше брать в коаычки. Типа: ".$var."
Без ковычек переменная интерпретируется медленнее...
---
Понравилось то что находится в кейс 'stat'
Не легче ли кешировать все это дело?
Столько лишних запросов ничем не оправданных...
----

<?php
$template -> assign(array
      (
      'all_posts' => $all_posts,
      'usefull_posts' => $usefull_posts,
      'all_usefull_posts' => $all_userfull_posts,
      # тут еще много их...
      )
   );
?>

Не легче ли сразу писать там:
$array['all_posts'] = $db -> one("SELECT COUNT(*) FROM `posts`");
$template -> assign('array', $array);
и потом просто выводить в шаблоне {$array.all_posts}
p.s это я на примере смарти, не знаю как у тебя устроен класс $template
точнее метод assign
---
В одном файле практически весь сайт, это неудобно да и выгоды от этого не вижу =)
---
Заюзай полнотекстовый поиск в mysql
http://www.mysql.ru/docs/man/Fulltext_Search.html
----
К тебе что-то и придраться не могу гг


__________
посл.ред. 25 Авг 2010, 0:19; всего 3 раз(а) 24 Авг 2010, 23:34
Okula

А чем плохи такие велосипеды?

<?php
function int($int)
{
   
return abs(intval($int));

}
?>


Ведь все мы любим полениться)))

24 Авг 2010, 23:54
Nu3oN

Цитата:
"А чем плохи такие велосипеды?"

Тем, что это велосипед =)
---
не могу больше... спать хочется =)

25 Авг 2010, 0:11
Okula

Nu3oN, а ты в детстве катался на велосипеде? нравилось? вот и пирату тоже нравится, помне так лучше уж 20 раз написать int($var);
чем abs(intval($var));

25 Авг 2010, 0:28
Ответить на тему