1

PHP クラスに問題があります。ユーザーが別のユーザーをフォローしたい場合は follow メソッドが呼び出され、ユーザーがフォローを停止したい場合は次のメソッドが呼び出さdelete_followれます。

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();
}

助けてください。

4

2 に答える 2

4

あなたのクラスの名前は ですFollow。クラスの最初のメソッドは と呼ばれfollow()ます。PHP はこの点で大文字と小文字を区別せず、そのfollow()メソッドをコンストラクターとして扱います。したがって、このステートメントは -- -- 実際にクラスからメソッドを$follows = new Follow()呼び出しfollow()ます。そこにあなたの問題があるかもしれません。

PHP コンストラクターの詳細については、こちらをご覧ください。

于 2012-07-21T04:10:50.027 に答える
0

あなたのフォームにエラーがあると思います。おそらく、またはなどfollowのブール値を持つフィールドを1つ持つ方がよいでしょう。yesno

于 2012-07-21T04:07:53.860 に答える