2012-07-21 65 views
1

我有一個問題,我的PHP類,當用戶想要跟隨其他用戶後續的方法被調用,當用戶想要停止跟隨delete_follow被稱爲:PHP類方法

class Follow { 

    protected static $table_name = "interests"; 


    public function follow() { 
     global $dbh; 
     $sql = "INSERT INTO ".self::$table_name." (company_id,user_id,likedate) VALUES (:company_id,:user_id,NOW())"; 
     $follow = $dbh->prepare($sql); 
     $follow->bindParam(':user_id',$_SESSION['user_id']); 
     $follow->bindParam(':company_id',$_GET['company']); 
     if($follow->execute() == true){ 
      header("Location: profile.php?company=".$_GET['company'].""); 
      exit; 
     } else { 
      header("Location: error.php"); 
      exit; 
     } 
    } 

    public function delete_follow() { 
     global $dbh; 
     $sql = "DELETE FROM ".self::$table_name." WHERE company_id = :company_id AND user_id = :user_id LIMIT 1"; 
     $delete_follow = $dbh->prepare($sql); 
     $delete_follow->bindParam(':user_id',$_SESSION['user_id']); 
     $delete_follow->bindParam(':company_id',$_GET['company']); 
     if($delete_follow->execute() == true) { 
      header("Location: profile.php?company=".$_GET['company'].""); 
      exit; 
     } else { 
      header("Location: error.php"); 
      exit; 
     } 
    } 


} 

我的問題是,當調用delete_follow方法時,實際上會調用follow方法,我不知道發生了什麼。

這裏是後續按鈕的代碼:

if(isset($_POST['follow'])) { 
    $follows = new Follow(); 
    $follows->follow(); 
} 

if(isset($_POST['delete_follow'])) { 
    $follows = new Follow(); 
    $follows->delete_follow(); 
} 

請幫助。

回答

0

我會想象你的表單中有錯誤。也許最好有一個帶有布爾值的字段follow,比如說yesno

+0

這不是形式,becasue之前,我曾在一個正常功能的代碼,它工作得很好,當我把它搬到了一類問題發生 – 2012-07-21 04:10:51

4

你的班級的名字是Follow。你班上的第一種方法叫做follow()。 PHP在這方面不區分大小寫,並將該方法作爲構造函數。所以這個陳述 - $follows = new Follow() - 實際上是從您的班級調用follow()方法。這可能會導致你的問題。

閱讀更多關於PHP構造函數here

+0

號構造是__construct() – 2012-07-21 04:12:21

+1

@ColeJohnson不,「爲了向後兼容性,如果PHP 5找不到給定類的__construct()函數,它將按類的名稱搜索舊式構造函數。「 http://php.net/manual/en/language.oop5.decon.php – JohnD 2012-07-21 04:13:50

+0

謝謝,解決了這個問題。 – 2012-07-21 04:13:57