- 1
<option<?=($qqrow->ServiceID==$row->ID&&!isset($servid))?" selected":""?><?=(isset($servid))?($servid==$row->ID)?" selected":"":""?> value="<?=$row->ID?>"><?=$row->Name?>
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+154
<option<?=($qqrow->ServiceID==$row->ID&&!isset($servid))?" selected":""?><?=(isset($servid))?($servid==$row->ID)?" selected":"":""?> value="<?=$row->ID?>"><?=$row->Name?>
+154
function UsersDefineParameters(&$db_parameters, &$cookie_parameters, $key = '', $is_check_db = false)
{
global $CONFIG, $USER, $SCRIPT;
if (!$key) $key = array();
$SCRIPT[ttt] = $is_check_db ? 1 : 0;
$default_val = tieArrayValue($CONFIG[defaults], $key);
$SCRIPT[ttt] = 0;
$user_val = tieArrayValue($USER[parameters], $key);
$db_val = tieArrayValue($db_parameters, $key);
$cookie_val = tieArrayValue($cookie_parameters, $key);
if ($is_check_db)
{
if (!is_array($db_val) || (isListArray($db_val) && count($db_val) == 2 && is_int($db_val[1])))
{if (!isset($default_val)) tieArrayValue($USER[parameters], $key, is_array($db_val) ? $db_val[0] : $db_val);}
else foreach ($db_val as $k=>$v) UsersDefineParameters($db_parameters, $cookie_parameters, array_merge($key, array($k)), 1);
}
else
if (!is_array($default_val) || (isListArray($default_val) && count($default_val) == 2 && is_int($default_val[1])))
{
$use_cookie = !is_array($default_val) || $default_val[1];
$keys = array(db, cookie);
foreach ($keys as $k)
if (isset(${$k._val}))
{${$k._time} = is_array(${$k._val}) ? (int)${$k._val}[1] : 0; if (is_array(${$k._val})) ${$k._val} = ${$k._val}[0];}
if (isset($db_val) && (!$use_cookie || !isset($cookie_val) || $db_time >= $cookie_time)) {$val = $db_val; $time = $db_time;}
elseif ($use_cookie && isset($cookie_val)) {$val = $cookie_val; $time = $cookie_time;}
else {$val = is_array($default_val) ? $default_val[0] : $default_val; unset($time);}
if (isset($time))
{
if ($val != $db_val) {tieArrayValue($SCRIPT[write_db_parameters], $key, array($val,$time)); $SCRIPT[is_write_db_parameters] = true;}
if ($use_cookie) tieArrayValue($SCRIPT[write_cookie_parameters], $key, array($val, $time));
}
tieArrayValue($USER[parameters], $key, $val);
}
else foreach ($default_val as $k=>$v) UsersDefineParameters($db_parameters, $cookie_parameters, array_merge($key, array($k)));
if (!$is_check_db && !$key) UsersDefineParameters($db_parameters, $cookie_parameters, '', 1);
}
function tieArrayValue(&$arr, $key, $value = '')
{
if (is_string($key)) $key = explode('][',substr($key,1,-1));
$element = &$arr;
$count=count($key);
for ($i=0;$i<$count;$i++) $element = &$element[$key[$i]];
if (func_num_args() == 3) {$element = $value; unset($arr);}
else return $element;
}
function isListArray($arr)
{
if (!is_array($arr)) return false;
@reset($arr); $i = 0;
while (list($key) = @each($arr)) if ((string)$key != (string)$i++) return false;
return true;
}
Крайне "эффективное" склеивание массивов с настройками из разных источников
+153
$date=date(Ymd);
$day=substr($date,6,2);
$month=substr($date,4,2);
$year=substr($date,0,4);
list($date,$month,$year) = explode("/",date("D/M/Y"));
+155
$query = "SELECT DATE_FORMAT(`Date`, '%d.%m.%Y') 'dat',
DATE_FORMAT(`Date`, '%Y-%m-%d') 'd'
FROM Sklad
WHERE OrderID = '{$row->ID}'
AND OrderStatusID = 6
AND Kol < 0";
$qsklad_data = mysql_fetch_object(mysql_query($query));
if ($row->DateFakt == "00.00.0000") {
$query = "UPDATE Orders
SET DateFakt = '{$qsklad_data->d}'
WHERE ID = '{$row->ID}'";
$qupddd = mysql_query($query);
}
Паттерн программирования: сначала сделать запрос к БД, а потом проверить, нужны ли нам его результаты. $qsklad_data используется только здесь. И опять же два SQL-запроса там, где мог быть один.
+153
if($servid>0){
$servid=$servid;
}
А если $servid == 0?
+154
function parseString($str) {
$op = array();
$pairs = explode("&", $str);
foreach ($pairs as $pair) {
list($k, $v) = array_map("urldecode", explode("=", trim($pair)));
$op[$k] = $v;
}
return $op;
}
if (!isset($HTTP_RAW_POST_DATA))
{
$HTTP_RAW_POST_DATA = file_get_contents("php://input");
}
И это уже не в первый раз. А когда надо отправить форму, то php-шники делают это через raw socket.
+155
$q=mysql_query($que.$limit)or die(mysql_error());
$numr=mysql_num_rows($q);
$q2 = mysql_query($que)or die(mysql_error());
$numrows = mysql_num_rows ($q2);
$pages = ceil($numrows/$step);
Здесь: $que - тяжелый SQL-запрос, который собирался в течение предыдущих сотен строк (десятки IF... ELSE...). $limit - лимит: выбрать 30 записей с такой по этакую. Чтобы орагнизовать на сайте пагинацию, автор выполняет запрос $que дважды. Во второй раз - чтобы просто посчитать общее число записей. При этом в MySQL второй запрос убивается парой SELECT SQL_CALC_FOUND_ROWS... / SELECT FOUND_ROWS().
+153
/**
* Компиляция плейсхолдера
*/
private function sql_compile_placeholder($tmpl)
{
$compiled = array();
$p = 0; // текущая позиция в строке
$i = 0; // счетчик placeholder-ов
$has_named = false;
while(false !== ($start = $p = strpos($tmpl, "?", $p)))
{
// Определяем тип placeholder-а.
switch ($c = substr($tmpl, ++$p, 1))
{
case '%': case '@': case '#':
$type = $c; ++$p; break;
default:
$type = ''; break;
}
// Проверяем, именованный ли это placeholder: "?keyname"
if (preg_match('/^((?:[^\s[:punct:]]|_)+)/', substr($tmpl, $p), $pock))
{
$key = $pock[1];
if ($type != '#')
$has_named = true;
$p += strlen($key);
}
else
{
$key = $i;
if ($type != '#')
$i++;
}
// Сохранить запись о placeholder-е.
$compiled[] = array($key, $type, $start, $p - $start);
}
return array($compiled, $tmpl, $has_named);
}
/**
* Выполнение плейсхолдера
*/
private function sql_placeholder_ex($tmpl, $args, &$errormsg)
{
// Запрос уже разобран?.. Если нет, разбираем.
if (is_array($tmpl))
$compiled = $tmpl;
else
$compiled = $this->sql_compile_placeholder($tmpl);
list ($compiled, $tmpl, $has_named) = $compiled;
// Если есть хотя бы один именованный placeholder, используем
// первый аргумент в качестве ассоциативного массива.
if ($has_named)
$args = @$args[0];
// Выполняем все замены в цикле.
$p = 0; // текущее положение в строке
$out = ''; // результирующая строка
$error = false; // были ошибки?
foreach ($compiled as $num=>$e)
{
/* .. тут куча кода .. */
}
$out .= substr($tmpl, $p);
// Если возникла ошибка, переделываем результирующую строку
// в сообщение об ошибке (расставляем диагностические строки
// вместо ошибочных placeholder-ов).
if ($error)
{
$out = '';
$p = 0; // текущая позиция
foreach ($compiled as $num=>$e)
{
list ($key, $type, $start, $length) = $e;
$out .= substr($tmpl, $p, $start - $p);
$p = $start + $length;
if (isset($e['error']))
{
$out .= $e['error'];
}
else
{
$out .= substr($tmpl, $start, $length);
}
}
// Последняя часть строки.
$out .= substr($tmpl, $p);
$errormsg = $out;
return false;
}
else
{
$errormsg = false;
return $out;
}
}
Вот такой велосипед у симплы, типа о PDO не слышали?
Файл api/database.php, SimplaCMS.
+152
<?php
class Config {
/* ... */
public function __construct ()
{
// Читаем настройки из дефолтного файла
$ini = parse_ini_file(dirname(dirname(__FILE__)).'/'.$this->config_file);
// Записываем настройку как переменную класса
foreach($ini as $var=>$value)
$this->vars[$var] = $value;
/* ... */
Взято из файла api/config.php из Simpla CMS.
Нельзя было $this->vars = parse_ini_file(dirname(dirname(__FILE__) ).'/'.$this->config_file); написать что ли?
+153
$k_new=mysql_result(mysql_query("SELECT COUNT(`mail`.`id`) FROM `mail`
LEFT JOIN `users_konts` ON `mail`.`id_user` = `users_konts`.`id_kont` AND `users_konts`.`id_user` = '$user[id]'
WHERE `mail`.`id_kont` = '$user[id]' AND (`users_konts`.`type` IS NULL OR `users_konts`.`type` = 'common' OR `users_konts`.`type` = 'favorite') AND `mail`.`read` = '0'"),0);
$k_new_fav=mysql_result(mysql_query("SELECT COUNT(`mail`.`id`) FROM `mail`
LEFT JOIN `users_konts` ON `mail`.`id_user` = `users_konts`.`id_kont` AND `users_konts`.`id_user` = '$user[id]'
WHERE `mail`.`id_kont` = '$user[id]' AND (`users_konts`.`type` = 'favorite') AND `mail`.`read` = '0'"),0);