作者chrisQQ (ChrisLiu)
看板Ajax
標題Re: [問題] Ajax的.open問題
時間Sat Oct 2 14:32:44 2010
1F:→ TonyQ:$q 會是什麼 成員嗎? (因為你的event trigger原始碼目前 10/02 12:32
http://tinyurl.com/2f4jb3b 新的
※ 編輯: iii125 來自: 140.127.220.28 (10/02 12:35)
2F:→ TonyQ:看起來好像是成員變數沒出去的問題。 10/02 12:41
3F:→ TonyQ:$q 改寫成 $this->q 並把$q 放到成員去宣告應該會work。 10/02 12:42
4F:→ TonyQ:in php5 10/02 12:42
5F:→ TonyQ:chris 你幫他看看吧 php 你比我熟 XD 10/02 12:42
竟然被點名了 -_____-
基本上這個問題嘛… 就是你沒有 new 一個 EvnetTrigger 的物件
所以這一頁只是定義了一個 class 叫做 EventTrigger
然後就結束了…
最簡單的最法就是前面加上
$et = new EventTrigger();
不過讓 class 中直接取 $_GET 中的值感覺很怪
但如果你堅持的話,那應該改成這樣
class EventTrigger{
var $dbh;
var $q;
public function __construct() {
$this->dbh = mysql_connect ("*", "root", "*") or die ('I
cannot connect to the database because: ' . mysql_error());
mysql_select_db ("exp");
mysql_query("SET NAMES = utf8");
mysql_query("SET CHARACTER_SET_CLIENT = utf8");
mysql_query("SET CHARACTER_SET_RESULTS = utf8");
$this->q=$_GET["q"];
}
// 然後後面有 $q 的地方都改成 $this->q;
// 直接用 $q 好像也可以,只要 function 中沒有同樣名稱的 parameter
// 但既然都用了 OO 就建議養成良好習慣
function UpdateExp($exp,$stren,$level)
{
mysql_query("UPDATE usr_info SET
usr_exp='$exp',strength='$stren',level='$level' WHERE usr_id='
$this->q' ");
}
所以我會建議你如果要用 OO 的寫法的話,應該寫成
$et = new EventTrigger($_GET['q']);
class EventTrigger{
var $dbh;
var $q;
// 兼容有一個參數和沒丟參數給 constructor 的時候
// 在 java 和 c# 中要分開寫不同參數數量的 constructor
public function __construct($q = NULL) {
$this->dbh = mysql_connect ("*", "root", "*") or die ('I
cannot connect to the database because: ' . mysql_error());
mysql_select_db ("exp");
mysql_query("SET NAMES = utf8");
mysql_query("SET CHARACTER_SET_CLIENT = utf8");
mysql_query("SET CHARACTER_SET_RESULTS = utf8");
$this->q=$q;
}
// 以下類推
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.85.187.167
※ 編輯: chrisQQ 來自: 219.85.187.167 (10/02 14:35)