顯示具有 ci 標籤的文章。 顯示所有文章
顯示具有 ci 標籤的文章。 顯示所有文章

2015年6月25日 星期四

[C#][php] POST json data TO a PHP page

原本只是很簡單的,跨頁傳值從C#到php
沒想到搞了半天,php那端一直接收不到json值


string json = "{\"user\":\"test\"," +
                "\"n\":\"2\"}";
var webAddr = "http://";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "application/json";
httpWebRequest.ContentLength = json.Length;

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
     streamWriter.Write(json);
     streamWriter.Close();
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
     var result = streamReader.ReadToEnd();
     //return result;

}


找了很久,原來是php那端看不懂,C#這邊傳過去的json格式
在php接收那端需加上

// Error handling is left as an exercise
$input = json_decode(file_get_contents('php://input'), true);

這樣就行了,然後這是php端的改法
C#端也有另一種寫法


string postData = "user=" + HttpUtility.UrlEncode("test") +
                  "&n=" + HttpUtility.UrlEncode("2");

byte[] byteArray = Encoding.ASCII.GetBytes(postData);

string postData = "json=" +
                HttpUtility.UrlEncode(serializer.Serialize(p));

php端:

$json_array = json_decode($_POST['json']);

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啦!

2014年12月4日 星期四

[PHP] CI-VIEW include VIEW

從 MS 跳過來,兩星期了
還是有些不是很適應,也很疑惑,但其實只要把 MS 的觀念都丟了

是不難學的啦!


一般CI,多個VIEW要組在一起的基本寫法:
這是在controllers裡面的
$this->load->view('hearer');
$this->load->view('menu');
$this->load->view('footer');
以上看來是由上往下排,那左右呢?

第一個碰到的疑問


所以針對這個問題,去查了一下
其實是可以在VIEW裡直接include的

第一種、
這是在controllers裡面的,注意view的第三個參數要設為'true',預設為'false'
$viewfile['header'] = $this->load->view('header','',true);
$viewfile['footer'] = $this->load->view('footer','',true);
$this->load->view('menu',$viewfile);

這是在view裡面的
<?=$header?>
<?=$footer?>

第二種、
這是在view裡面的,直接include進來
<?php 
    $this->view('header'); 
    $this->view('footer'); 
?>