Сборник индуского кода.

AmdY

Пью пиво
Команда форума
korchasa
самый любимый кусок
$db=connect();
..............
$db->close();
.............
я недавно один "хайлод" оптимизировал, там подобным образом для каждого запроса создавался новый коннект в базе. обрати внимание, что это не одиночка, вызывается close()

foreach($article as $v) {
$db->query("delete from article where id_article='$v' and id_clients='".$_SESSION['client']."'");
}
комментарий излишен

$type===''||$type===null||$type==='0'
заковыристо, а int 0 пропустит.

if (!get_magic_quotes_gpc())
дальше идёт экранирование, но не всех переменных, например, $curr так и пройдёт с $_POST

copy($_FILES['pic_art']['tmp_name'],"../images/articleImg/".$img)
классический код программистов из песочницы, опыт учит что использовать нужно move_uploaded_file

$art->set<НАЗВАНИЕ>
классика не расширяемого кода, вместо того, чтобы сделать один метод $art->fromArray($data)

затем ещё классический кусок, сразу же после сохранения идёт вывод echo без редиректа и привет f5.
 

korchasa

LIMB infected
AmdY
Ну так и выложил бы эти куски, а не 4 экрана текста. И даже в этих кусках настоящий "индуский" код всего в паре случаев, в остальном недостаток опыта. Про проблему расширяемости сеттеров я вообще не в курсе, тебе виднее.
 

korchasa

LIMB infected
Смысл этой темы вообще от меня ускользает местами. Хотите индуского кода? http://govnokod.ru/php С рейтингом, комментариями и прочими плюшками.
 

fixxxer

К.О.
Партнер клуба
Говнокод - это более широкое понятие, чем индусский код (то, что привел AmdY - типичный говнокод).

Индусский код - это пересечение множеств "говнокод" и "WTF". :)
 

AmdY

Пью пиво
Команда форума
fixxxer
я специально не упоминал про проблемы с безопасностью, а привёл куски, которые работают, но сделаны неоптимальным способом
 

confguru

ExAdmin
Команда форума
Из жизни:
Для всех задач есть ТЗ. После завершения основных работ над этим проектом,
будет необходимо клонировать подобный проект с нуля на другие рынки.
Вопрос цены обсуждается ;-).

phpclub: а кусок кода можно посмотреть?
client: нет ;-(
phpclub: фигово.. хотя бы в каком стиле код написан и кто писал? Наши или индусы :)
client: индусы
 

craz

Нестандартное звание
PHP:
SELECT DISTINCT BE.ID as ID,BE.NAME as NAME,BE.CODE as CODE,DATE_FORMAT(BE.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_FROM)>0, DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) as ACTIVE_FROM,BE.CREATED_BY as CREATED_BY,BE.IBLOCK_ID as IBLOCK_ID,BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID,B.DETAIL_PAGE_URL as DETAIL_PAGE_URL,BE.DETAIL_TEXT as DETAIL_TEXT,BE.DETAIL_TEXT_TYPE as DETAIL_TEXT_TYPE,BE.DETAIL_PICTURE as DETAIL_PICTURE,BE.PREVIEW_TEXT as PREVIEW_TEXT,BE.PREVIEW_TEXT_TYPE as PREVIEW_TEXT_TYPE,BE.PREVIEW_PICTURE as PREVIEW_PICTURE,L.DIR as LANG_DIR,BE.SORT as SORT,BE.XML_ID as EXTERNAL_ID,B.IBLOCK_TYPE_ID as IBLOCK_TYPE_ID,B.CODE as IBLOCK_CODE,B.XML_ID as IBLOCK_EXTERNAL_ID,B.LID as LID , CAT_P2.ID as CATALOG_PRICE_ID_2,  CAT_P2.CATALOG_GROUP_ID as CATALOG_GROUP_ID_2,  CAT_P2.PRICE as CATALOG_PRICE_2,  CAT_P2.CURRENCY as CATALOG_CURRENCY_2,  CAT_P2.QUANTITY_FROM as CATALOG_QUANTITY_FROM_2,  CAT_P2.QUANTITY_TO as CATALOG_QUANTITY_TO_2,  'Оптовая цена' as CATALOG_GROUP_NAME_2,  'N' as CATALOG_CAN_ACCESS_2,  'N' as CATALOG_CAN_BUY_2,  CAT_P2.EXTRA_ID as CATALOG_EXTRA_ID_2, CAT_P3.ID as CATALOG_PRICE_ID_3,  CAT_P3.CATALOG_GROUP_ID as CATALOG_GROUP_ID_3,  CAT_P3.PRICE as CATALOG_PRICE_3,  CAT_P3.CURRENCY as CATALOG_CURRENCY_3,  CAT_P3.QUANTITY_FROM as CATALOG_QUANTITY_FROM_3,  CAT_P3.QUANTITY_TO as CATALOG_QUANTITY_TO_3,  'Розничная цена' as CATALOG_GROUP_NAME_3,  'Y' as CATALOG_CAN_ACCESS_3,  'Y' as CATALOG_CAN_BUY_3,  CAT_P3.EXTRA_ID as CATALOG_EXTRA_ID_3, CAT_P4.ID as CATALOG_PRICE_ID_4,  CAT_P4.CATALOG_GROUP_ID as CATALOG_GROUP_ID_4,  CAT_P4.PRICE as CATALOG_PRICE_4,  CAT_P4.CURRENCY as CATALOG_CURRENCY_4,  CAT_P4.QUANTITY_FROM as CATALOG_QUANTITY_FROM_4,  CAT_P4.QUANTITY_TO as CATALOG_QUANTITY_TO_4,  'Оптовая' as CATALOG_GROUP_NAME_4,  'Y' as CATALOG_CAN_ACCESS_4,  'Y' as CATALOG_CAN_BUY_4,  CAT_P4.EXTRA_ID as CATALOG_EXTRA_ID_4, CAT_P5.ID as CATALOG_PRICE_ID_5,  CAT_P5.CATALOG_GROUP_ID as CATALOG_GROUP_ID_5,  CAT_P5.PRICE as CATALOG_PRICE_5,  CAT_P5.CURRENCY as CATALOG_CURRENCY_5,  CAT_P5.QUANTITY_FROM as CATALOG_QUANTITY_FROM_5,  CAT_P5.QUANTITY_TO as CATALOG_QUANTITY_TO_5,  'Розничная' as CATALOG_GROUP_NAME_5,  'Y' as CATALOG_CAN_ACCESS_5,  'Y' as CATALOG_CAN_BUY_5,  CAT_P5.EXTRA_ID as CATALOG_EXTRA_ID_5, CAT_P8.ID as CATALOG_PRICE_ID_8,  CAT_P8.CATALOG_GROUP_ID as CATALOG_GROUP_ID_8,  CAT_P8.PRICE as CATALOG_PRICE_8,  CAT_P8.CURRENCY as CATALOG_CURRENCY_8,  CAT_P8.QUANTITY_FROM as CATALOG_QUANTITY_FROM_8,  CAT_P8.QUANTITY_TO as CATALOG_QUANTITY_TO_8,  'Опт' as CATALOG_GROUP_NAME_8,  'Y' as CATALOG_CAN_ACCESS_8,  'Y' as CATALOG_CAN_BUY_8,  CAT_P8.EXTRA_ID as CATALOG_EXTRA_ID_8, CAT_P9.ID as CATALOG_PRICE_ID_9,  CAT_P9.CATALOG_GROUP_ID as CATALOG_GROUP_ID_9,  CAT_P9.PRICE as CATALOG_PRICE_9,  CAT_P9.CURRENCY as CATALOG_CURRENCY_9,  CAT_P9.QUANTITY_FROM as CATALOG_QUANTITY_FROM_9,  CAT_P9.QUANTITY_TO as CATALOG_QUANTITY_TO_9,  'Партнер' as CATALOG_GROUP_NAME_9,  'N' as CATALOG_CAN_ACCESS_9,  'N' as CATALOG_CAN_BUY_9,  CAT_P9.EXTRA_ID as CATALOG_EXTRA_ID_9, CAT_PR.QUANTITY as CATALOG_QUANTITY,  CAT_PR.QUANTITY_TRACE as CATALOG_QUANTITY_TRACE,  CAT_PR.WEIGHT as CATALOG_WEIGHT,  CAT_VAT.RATE as CATALOG_VAT,  CAT_PR.VAT_INCLUDED as CATALOG_VAT_INCLUDED,  CAT_PR.PRICE_TYPE as CATALOG_PRICE_TYPE,  CAT_PR.RECUR_SCHEME_TYPE as CATALOG_RECUR_SCHEME_TYPE,  CAT_PR.RECUR_SCHEME_LENGTH as CATALOG_RECUR_SCHEME_LENGTH,  CAT_PR.TRIAL_PRICE_ID as CATALOG_TRIAL_PRICE_ID,  CAT_PR.WITHOUT_ORDER as CATALOG_WITHOUT_ORDER,  CAT_PR.SELECT_BEST_PRICE as CATALOG_SELECT_BEST_PRICE  
			FROM b_iblock B
			INNER JOIN b_lang L ON B.LID=L.LID
			INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
			 INNER JOIN (
					SELECT DISTINCT B.ID
					FROM b_iblock B
					INNER JOIN b_iblock_site BS ON BS.IBLOCK_ID = B.ID
					INNER JOIN b_iblock_group IBG ON IBG.IBLOCK_ID = B.ID
					WHERE
					((((BS.SITE_ID='s3')))) AND ((
						IBG.GROUP_ID IN (2)
						AND IBG.PERMISSION >= 'R'
						AND (IBG.PERMISSION='X' OR B.ACTIVE='Y')
					)) AND ((((B.ID = '60')))) AND ((((B.ACTIVE='Y'))))
				) BB ON BB.ID = BE.IBLOCK_ID
 INNER JOIN (
					SELECT DISTINCT BSE.IBLOCK_ELEMENT_ID
					FROM b_iblock_section_element BSE
					
					INNER JOIN b_iblock_section BSubS ON BSE.IBLOCK_SECTION_ID = BSubS.ID
					INNER JOIN b_iblock_section BS ON (BSubS.IBLOCK_ID=BS.IBLOCK_ID
						AND BSubS.LEFT_MARGIN>=BS.LEFT_MARGIN
						AND BSubS.RIGHT_MARGIN<=BS.RIGHT_MARGIN)
					
					WHERE ((BS.ID IN (1872)))
					) BES ON BES.IBLOCK_ELEMENT_ID = BE.ID

 
			LEFT JOIN b_catalog_price CAT_P2 ON (CAT_P2.PRODUCT_ID = BE.ID AND CAT_P2.CATALOG_GROUP_ID = 2)  AND   ((CAT_P2.QUANTITY_FROM <= 1 OR CAT_P2.QUANTITY_FROM IS NULL) AND (CAT_P2.QUANTITY_TO >= 1 OR CAT_P2.QUANTITY_TO IS NULL))  
			LEFT JOIN b_catalog_price CAT_P3 ON (CAT_P3.PRODUCT_ID = BE.ID AND CAT_P3.CATALOG_GROUP_ID = 3)  AND   ((CAT_P3.QUANTITY_FROM <= 1 OR CAT_P3.QUANTITY_FROM IS NULL) AND (CAT_P3.QUANTITY_TO >= 1 OR CAT_P3.QUANTITY_TO IS NULL))  
			LEFT JOIN b_catalog_price CAT_P4 ON (CAT_P4.PRODUCT_ID = BE.ID AND CAT_P4.CATALOG_GROUP_ID = 4)  AND   ((CAT_P4.QUANTITY_FROM <= 1 OR CAT_P4.QUANTITY_FROM IS NULL) AND (CAT_P4.QUANTITY_TO >= 1 OR CAT_P4.QUANTITY_TO IS NULL))  
			LEFT JOIN b_catalog_price CAT_P5 ON (CAT_P5.PRODUCT_ID = BE.ID AND CAT_P5.CATALOG_GROUP_ID = 5)  AND   ((CAT_P5.QUANTITY_FROM <= 1 OR CAT_P5.QUANTITY_FROM IS NULL) AND (CAT_P5.QUANTITY_TO >= 1 OR CAT_P5.QUANTITY_TO IS NULL))  
			LEFT JOIN b_catalog_price CAT_P8 ON (CAT_P8.PRODUCT_ID = BE.ID AND CAT_P8.CATALOG_GROUP_ID = 8)  AND   ((CAT_P8.QUANTITY_FROM <= 1 OR CAT_P8.QUANTITY_FROM IS NULL) AND (CAT_P8.QUANTITY_TO >= 1 OR CAT_P8.QUANTITY_TO IS NULL))  
			LEFT JOIN b_catalog_price CAT_P9 ON (CAT_P9.PRODUCT_ID = BE.ID AND CAT_P9.CATALOG_GROUP_ID = 9)  AND   ((CAT_P9.QUANTITY_FROM <= 1 OR CAT_P9.QUANTITY_FROM IS NULL) AND (CAT_P9.QUANTITY_TO >= 1 OR CAT_P9.QUANTITY_TO IS NULL))  
			LEFT JOIN b_catalog_product CAT_PR ON (CAT_PR.ID = BE.ID)  
			LEFT JOIN b_catalog_iblock CAT_IB ON ((CAT_PR.VAT_ID IS NULL OR CAT_PR.VAT_ID = 0) AND CAT_IB.IBLOCK_ID = BE.IBLOCK_ID)  
			LEFT JOIN b_catalog_vat CAT_VAT ON (CAT_VAT.ID = IF((CAT_PR.VAT_ID IS NULL OR CAT_PR.VAT_ID = 0), CAT_IB.VAT_ID, CAT_PR.VAT_ID)) 

			WHERE 1=1 
			AND (
			
				((((BE.IBLOCK_ID = '60'))))
				AND ((((B.ACTIVE='Y'))))
				AND (((BE.ACTIVE_TO >= now() OR BE.ACTIVE_TO IS NULL) AND (BE.ACTIVE_FROM <= now() OR BE.ACTIVE_FROM IS NULL)))
				AND ((((BE.ACTIVE='Y'))))
				AND ( 1=1 )
				AND ( 1=1 )
				AND ( 1=1 )
				AND ( 1=1 )
				AND ( 1=1 )
				AND ( 1=1 )
			)
			AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)))
			
		 ORDER BY BE.SORT asc ,BE.ID desc  LIMIT 690, 10
битрикс считает что именно так должны выглядить запросы
 

partizan

Новичок
Разбираю код. Когда нужно получить запись из БД, результат всегда записывается в переменную $a
Если нужно получить запись из другой таблицы, а дальше в коде сново обратиться к первой - не беда, выполним запрос еще раз, но использовать другую переменную - ни-ни, только $a
 

Breeze

goshogun
Команда форума
Партнер клуба
Разбираю код. Когда нужно получить запись из БД, результат всегда записывается в переменную $a
Если нужно получить запись из другой таблицы, а дальше в коде сново обратиться к первой - не беда, выполним запрос еще раз, но использовать другую переменную - ни-ни, только $a
да, тут больше подходит $r %)
 

Redjik

Джедай-мастер
PHP:
if (isset($_GET['id'])) {
	$id = $_GET['id'];
	$paged = $_GET['paged'];
	$result = $modx->db->query("SELECT * FROM $employees_table WHERE id = $id");
	$employee = $modx->db->getRow($result);
	$name = $employee['name'];
	$lastname = $employee['lastname'];
	$post_id = $employee['post_id'];
	$schedule = $employee['schedule'];
	$position = $employee['position'];
	$department_id = $employee['department_id'];
	$phone = $employee['phone'];
	$email = $employee['email'];
	$skype = $employee['skype'];
	$upload_image = $employee['attached_file'];
}
elseif (isset($_POST['id'])) {
	$id = $_POST['id'];	
	$name = $_POST['name'];
	$lastname = $_POST['lastname'];
	$post_id = $_POST['post_id'];
	$schedule = $_POST['schedule'];
	$position = $_POST['position'];
	$department_id = $_POST['department_id'];
	$phone = $_POST['phone'];
	$email = $_POST['email'];
	$skype = $_POST['skype'];
	$upload_image = $_POST['upload_image'];
}
Классика
 

antson

Новичок
Партнер клуба
Иван Redjik Матвеев
>Классика
Классика согласен. И что тут Вас тут раздражает ? Куча переменных вместо массива ?
 

antson

Новичок
Партнер клуба
я вижу кусок инициализации формы редактирования с реинициализацией при ошибке во входных данных.
iceman
И на фига REQUEST в случаях для которых написан код
GET /edit/?id=&paged=
POST /edit/ {id, ... formOtherData ...}
?

Иван Redjik Матвеев
Поясните ЧЕГО тут индуского ?
 

Redjik

Джедай-мастер
я вижу кусок инициализации формы редактирования с реинициализацией при ошибке во входных данных.
iceman
И на фига REQUEST в случаях для которых написан код
GET /edit/?id=&paged=
POST /edit/ {id, ... formOtherData ...}
?

Иван Redjik Матвеев
Поясните ЧЕГО тут индуского ?
А я вот что-то реинициализацию не вижу...

не смущает?
PHP:
    $result = $modx->db->query("SELECT * FROM $employees_table WHERE id = $id");
    $employee = $modx->db->getRow($result);
+ условие меняет значение переменных... => можно вполне догадаться, что отдельно идет условиие для POST и для GET для обработки информации

Не логичнее было бы ... выделить методы (хотя тут выделение функций - весь код процедурный) с параметрами $_POST и $_GET ?

Или мне надо полностью код написать, чтобы было понятнее???
 

Breeze

goshogun
Команда форума
Партнер клуба
ты просто путаешь обычный говнокод с просветленным метфизическим индусским кодом
 

Redjik

Джедай-мастер
Ладно, сейчас выложу, слезно попросили допилить систему оплаты к какому то зверю под названием Groupon_Premium_V4.0... вот там есть, где душе разгуляться...
 
Сверху