kleptos ([info]_kleptos_) wrote,
@ 2006-11-21 13:12:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Current music:Gorillaz - Demon Days - Fire Coming Out of a Monkey's Head
Entry tags:coding, work

пых пых
Разгребая авгиевы конюшни.

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

function mysql_fetchall($query, $dblink=false){
  if($dblink!==false){
    $result=mysql_query($query, $dblink);
  }else{
    $result=mysql_query($query);
  }
  $_array=array();
  if($result!==false){
    while($_array[]=mysql_fetch_array($result, MYSQL_ASSOC));
    mysql_free_result($result);
    array_splice($_array, -1);
  }
  return($_array);
}

function mysql_fetchone($query, $dblink=false){
  if($dblink!==false){
    $result=mysql_query($query, $dblink);
  }else{
    $result=mysql_query($query);
  }
  if($result!==false){
    $_result=mysql_fetch_array($result, MYSQL_ASSOC);
    mysql_free_result($result);
    return($_result);
  }
  return(false);
}

function cbr_currency($ondate){
	mysql_pconnect
		(
			$Config[‘databse’][‘host’],
			$Config[‘databse’][‘login’],
			$Config[‘databse’][‘password’]
		);
  mysql_select_db($Config[‘databse’][‘namespace’]);
  mysql_query(‘SET NAMES CP1251’);
  $daily=mysql_fetchall(“SELECT * FROM ‘daily’ WHERE ‘date’=‘".date(“Y-m-d”, $ondate).“'”);
  $monthly=mysql_fetchall(“SELECT * FROM ‘monthly’ WHERE ‘date’=‘".date(“Y-m-01”, $ondate).“'”);

  if(count($daily)==0){
    $handle=fopen(“http://www.cbr.ru/currency_base/D_print.asp?date_req=”.date(“d/m/Y”, $ondate), “rb”);
    $contents=’';
    while(!feof($handle))$contents.=fread($handle, 8192);
    fclose($handle);
    $contents=str_replace(array(” “,”\r“,”\n“), array(” “,”",“"), $contents);
    preg_match_all(”/\
[Error: Irreparable invalid markup ('<tr[^<>') in entry. Owner must fix manually. Raw contents below.]

Разгребая авгиевы конюшни.
<lj-cut>
Дарагие френды ниже вам предлагаеться на обозрение ковнокод отменннейшего качества, от лучших быдлокодеров и только у нас :)
Этож блять пиздец какой-то, надож сцука быть такими тупым.

<pre>
function mysql_fetchall($query, $dblink=false){
if($dblink!==false){
$result=mysql_query($query, $dblink);
}else{
$result=mysql_query($query);
}
$_array=array();
if($result!==false){
while($_array[]=mysql_fetch_array($result, MYSQL_ASSOC));
mysql_free_result($result);
array_splice($_array, -1);
}
return($_array);
}

function mysql_fetchone($query, $dblink=false){
if($dblink!==false){
$result=mysql_query($query, $dblink);
}else{
$result=mysql_query($query);
}
if($result!==false){
$_result=mysql_fetch_array($result, MYSQL_ASSOC);
mysql_free_result($result);
return($_result);
}
return(false);
}

function cbr_currency($ondate){
mysql_pconnect
(
$Config[‘databse’][‘host’],
$Config[‘databse’][‘login’],
$Config[‘databse’][‘password’]
);
mysql_select_db($Config[‘databse’][‘namespace’]);
mysql_query(‘SET NAMES CP1251’);
$daily=mysql_fetchall(“SELECT * FROM ‘daily’ WHERE ‘date’=‘".date(“Y-m-d”, $ondate).“'”);
$monthly=mysql_fetchall(“SELECT * FROM ‘monthly’ WHERE ‘date’=‘".date(“Y-m-01”, $ondate).“'”);

if(count($daily)==0){
$handle=fopen(“http://www.cbr.ru/currency_base/D_print.asp?date_req=”.date(“d/m/Y”, $ondate), “rb”);
$contents=’';
while(!feof($handle))$contents.=fread($handle, 8192);
fclose($handle);
$contents=str_replace(array(”&nbsp;“,”\r“,”\n“), array(” “,”",“"), $contents);
preg_match_all(”/\<tr[^<>]*\>[^<>]*\<td[^<>]*\>([^<>]*)\<\/td\>[^<>]*\<td[^<>]*\>([^<>]*)\<\/td\>[^<>]*\<td[^<>]*\>([^<>]*)\<\/td\>[^<>]*\<td[^<>]*\>([^<>]*)\<\/td\>[^<>]*\<td[^<>]*\>([^<>]*)\<\/td\>[^<>]*\<\/tr\>/“, $contents, $matches);
if(count($matches[1])==0){
$daily=array();
}else{
foreach($matches[1] as $index => $value){
$daily[$index][”code“]=(integer)trim($value);
$daily[$index][”char“]=trim($matches[2][$index]);
$daily[$index][”unit“]=(integer)trim($matches[3][$index]);
$daily[$index][”name“]=trim($matches[4][$index]);
$daily[$index][”base“]=(float)trim(str_replace(”,“,”.“,$matches[5][$index]));
$value=$daily[$index];
mysql_query(”INSERT INTO ’daily’ (‘code’,‘date’,‘char’,‘name’,‘unit’,‘base’) VALUES (”.$value[“code”].“,‘".date(“Y-m-d”, $ondate).“',‘".addslashes($value[“char”]).“',‘".addslashes($value[“name”]).“',”.$value[“unit”].“,”.$value[“base”].“)”);
}
}
}

if(count($monthly)==0){
$handle=fopen(“http://www.cbr.ru/currency_base/M_print.asp?year=”.date(“Y”, $ondate).“&month=”.date(“m”, $ondate), “rb”);
$contents=’';
while(!feof($handle))$contents.=fread($handle, 8192);
fclose($handle);
$contents=str_replace(array(”&nbsp;“,”\r“,”\n“), array(” “,”",“"), $contents);
preg_match_all(”/\<tr[^<>]*\>[^<>]*\<td[^<>]*\>([^<>]*)\<\/td\>[^<>]*\<td[^<>]*\>([^<>]*)\<\/td\>[^<>]*\<td[^<>]*\>([^<>]*)\<\/td\>[^<>]*\<td[^<>]*\>([^<>]*)\<\/td\>[^<>]*\<td[^<>]*\>([^<>]*)\<\/td\>[^<>]*\<\/tr\>/“, $contents, $matches);
if(count($matches[1])==0){
$monthly=array();
}else{
foreach($matches[1] as $index => $value){
$monthly[$index][”code“]=(integer)trim($value);
$monthly[$index][”char“]=trim($matches[2][$index]);
$monthly[$index][”unit“]=(integer)trim($matches[3][$index]);
$monthly[$index][”name“]=trim($matches[4][$index]);
$monthly[$index][”base“]=(float)trim(str_replace(”,“,”.“,$matches[5][$index]));
$value=$monthly[$index];
mysql_query(”INSERT INTO ’monthly’ (‘code’,‘date’,‘char’,‘name’,‘unit’,‘base’) VALUES (”.$value[“code”].“,‘".date(“Y-m-01”, $ondate).“',‘".addslashes($value[“char”]).“',‘".addslashes($value[“name”]).“',”.$value[“unit”].“,”.$value[“base”].“)”);
}
}
}
return(array_merge($daily, $monthly));
}
?>
</pre>
если кто непонял, эта хрень выдирает курсы с cbr.
</lj-cut>


(Post a new comment)


[info]drumrock
2006-11-21 09:48 am UTC (link)
И про лимиты человек не знает :-)

(Reply to this)(Thread)


[info]_kleptos_
2006-11-21 10:39 am UTC (link)
Лимиты?

Яб может и понял о чём ты говоришь. Но я честно признаюсь: я боюсь такого кода, он просто повергает меня в шок и уныние, я даже до конца непонимаю что там делаеться.

(Reply to this)(Parent)(Thread)


[info]drumrock
2006-11-21 12:17 pm UTC (link)
Я про функции mysql_fetchone() и mysql_fetchall(). Вот, что человеку мешало написать нормальные SQL-запросы, в которых бы просто стояло LIMIT 0,1 или не стояло? Например. Уже не говоря о том, что можно было бы сузить область поиска как-нибудь.

(Reply to this)(Parent)(Thread)


[info]_kleptos_
2006-11-21 01:57 pm UTC (link)
Цбр в выходные не устанавливает новый курс.
Поэтому как я понял, он не заполняет пустые дни в базе значениями из предыдущих дней и если ничего за сегодняшний день не получил, то смотрит за предыдущий.

Я сейчас перереализовываю это функционал, потмоу-что что-то сломал :)
Решил сделать olap с забивкой всех дат и разделить апдейт стоксов от выборки, пофиг на оверхед, зато просто и быстро.

(Reply to this)(Parent)


[info]hichnik
2006-11-21 02:34 pm UTC (link)
сочувствую :-)


я вот пользую такую заготовку для цепляния данных из веба :-)

(Reply to this)(Thread)


[info]_kleptos_
2006-11-21 02:40 pm UTC (link)
а почему не libwww?

(Reply to this)(Parent)(Thread)


[info]hichnik
2006-11-21 02:43 pm UTC (link)
LWP::UserAgent - это и есть libwww

(Reply to this)(Parent)(Thread)


[info]_kleptos_
2006-11-21 02:51 pm UTC (link)
сорри туплю.
глаз зацепился за sub header и всё.

(Reply to this)(Parent)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…