2015年5月8日 星期五

[php]圖片壓縮

/*
PHP 圖片壓縮
$file 為檔案位置
$quality 為壓縮比例
$tofile 為儲存位置
*/

$file ="test.jpg";
$quality = 50;

switch (exif_imagetype($file)) {

    case IMAGETYPE_PNG :
        $img = imagecreatefrompng($file);
        break;
    case IMAGETYPE_JPEG :
        $img = imagecreatefromjpeg($file);
        break;
    default:
        throw new InvalidArgumentException("錯誤發生");
        exit();
        break;
}

@imagejpeg($img, $tofile, $quality);

//印在畫面上
//header('Content-Type: image/jpeg');
//@imagejpeg($img, NULL, $quality);

//釋放記憶體
@imagedestroy($img);

2015年5月1日 星期五

[編碼]windows,linux編碼問題

今天把Server換成Linux,

結果之前在Windows沒出現過的問題,

都出現了XD

檔案大小寫,一般來說以小寫為主

再來就是上線後

<head></head>

的東西都跑到

<body></body>

中間多了一個很大的空白,把東西都擠下來

好在有同事幫忙,原來是檔案編碼問題

存成UTF-8有兩種,一種檔首有含BOM,這個就會造成上面問題

所以要把檔案存成UTF-8檔首沒有含BOM的格式。

2015年4月27日 星期一

正規表示式

日期格式 yyyy-mm-dd
/^([0-9]{4})[./]{1}([0-9]{1,2})[./]{1}([0-9]{1,2})$/g

[php]取得圖片尺吋

PS:必須要安裝 GD 函式庫

<?php
$arr = getimagesize("圖片位置");

/**
 * $arr[0] 寬
 * $arr[1] 高
 * $arr[2] 格式
 * $arr[3] 寬和高,內容為: width="xxx" height="yyy"
 */
?>

2015年3月19日 星期四

[mysql] 之於MSSQL XML PATH

在MSSQL中,要合併多筆資料到同一個欄位

可以用 XML PATH來實現

SELECT T1.id, T1.type
          ,(SELECT [DESC] + ''
          FROM   @TABLE AS T2
          WHERE  T2.id = T1.id  FOR XML PATH('')) AS [DESC]
FROM @TABLE AS T1
GROUP BY id, type


而在MYSQL中,可以用GROUP_CONCAT來實現

SELECT date_format(T.T1,'%Y%m') AS d
              ,GROUP_CONCAT(T.ID) AS id
FROM @TABLE AS T
GROUP BY date_format(T.T1,'%Y%m')

2015年3月17日 星期二

[php] CI 同時連MSSQL與MYSQL

在\application\config\database.php裡加上

$db['default']['hostname'] = 'SQL伺服器名稱';
$db['default']['username'] = '使用者名稱';
$db['default']['password'] = '使用者密碼';
$db['default']['database'] = '資料庫名稱';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

$db['default']['hostname'] = 'SQL伺服器名稱';
$db['default']['username'] = '使用者名稱';
$db['default']['password'] = '使用者密碼';
$db['default']['database'] = '資料庫名稱';
$db['default']['dbdriver'] = 'sqlsrv';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

怎麼連接MSSQL請看[php]CI 連接 MSSQL(使用apache)

第一個為預設
$this->load->database();

第二個就要改成
$this->load->database("資料庫名稱",TURE);

接下來

在你要轉換資料庫的語法上面加
$this->msdb= $this->load->database('資料庫名稱', TRUE);
$this->msdb->query('SELECT top 10 * FROM test_db')->result();

原本的就
$this->load->database();
$this->db->query('SELECT top 10 * FROM test_db')->result();

[php]CI 連接 MSSQL(使用apache)

還是要抱怨一下!
都換PHP了,竟然還要連MSSQL

在網路上試了幾個方法
最後終於成功啦!!

先去微軟官網,依照你的php版本,下載不同的Drivers
Microsoft Drivers for PHP for SQL Server

再去微軟官網,下載
Microsoft® ODBC Driver 11 for SQL Server® - Windows

修改\php\php.ini

把原本的
;extension=php_mssql.dll
改成
extension=php_pdo_sqlsrv_XXXXX.dll
extension=php_sqlsrv_XXXXX.dll

也可以不修改它,直接增加這兩行
修改得話,記得前面的";"號要拿掉,這是註解的意思

再把
mssql.secure_connection = On  <=Off 改成On

Apache 重啟!很重要!,但我只說一遍!


接下來換CI的config設定

\application\config\database.php

$db['default']['hostname'] = 'SQL伺服器名稱';
$db['default']['username'] = '使用者名稱';
$db['default']['password'] = '使用者密碼';
$db['default']['database'] = '資料庫名稱';
$db['default']['dbdriver'] = 'sqlsrv';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE; -> FALSE
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

如果
$db['default']['pconnect'] = TRUE;

不做修改的話
需修改
\system\database\drivers\sqlsrv\sqlsrv_driver.php

function db_pconnect()
{
retrun $this->db_connect(TRUE);
}


同一個檔案,一定要修改的
function affected_rows()
{
return @sqlsrv_rows_affected($this->conn_id);
}


這樣就OK啦!