- 1
- 2
- 3
- 4
- 5
$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"));
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+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);
+156
if(!$_SESSION['id'])
{?>
<ul class="login"><?php
}
elseif($_SESSION['id'])
{?>
<ul class="login"><?php
}?>
// всякий код подобный тому что выше
</ul>
История одного проекта
+158
$rs=mysql_query("
update f_subsdetails
set UDate='".date ( "Y-m-d H:i:s", mktime (date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")))."'
where username='$username'");
Прогер наверное дорвался до изучения стандартных функции дат и времени и наверное решил закрепить знания. Наверное изучает по-алфавиту, вcкоре изучит time(), а там возможно и прочитает о втором аргументе date().