2011-12-18 11 views
0

私は、サイトへの外部リンクを表示するアプリを持っています。すべての記事です。これらの記事はデータベースにあります。私は現在、 "NEW"のような単純なタグを使って、次回訪問時にユーザーに新しい記事を表示するソリューションを探しています。
cols ID、user_id、article_idのテーブルを作成しました。
私はモデルとコントローラの作業を開始しましたが、ユーザーがその記事をクリックすると、記事IDとユーザーIDをjquery関数に渡す必要があります。読む。したがって、その記事の「NEW」ラベルは表示されません。マーキング記事を読む

これを行う最も良い方法ですか?私は物事のjquery側に接近する方法についていくつかの助けが必要です。

ありがとうございます。

+0

パラメータを残してJOINを使用して行っています。これも空の値を返します。したがって、私はNULL値をチェックしてNEWタグを表示することができました。 – viperfx

答えて

1

何がsawny上にビルドされていると、別のコントローラは必要ありません。ちょうどあなたがあなたが別々のテーブルにArtilceのIDとユーザーIDを格納していることを確認したいと思う機能では、この

baseurl.com/controller/function/linkID

を処理するために、あなたのコントローラで関数を定義します。

表名:article_views フィールド:ユーザーID、情報でarticleID

あなたは、各ユーザーのInfactは新しく追加された記事を表示するのに役立つあなたがこのテーブルに参加することができますこの方法。

これが保存されると、ユーザーを実際の記事にリダイレクトできます。

+0

ありがとう、それは私が直面している現在の問題です。私は、テーブルが空であれば、結合が何も表示されないので、記事が "NEW"か読んでいるかどうかを表示したり、チェックする方法を知らない。したがって、私は各記事に対してチェックを行う方法を知らない。 – viperfx

+0

読み込まれたアーティクルを配列としてビューに渡します。次に、それらを印刷するときに、if文にPHP関数in_array($ article、$ articles_array)を使用します。その配列にない場合は、 "new"と表示します。 –

1

もしあなたがjavascriptを使用していれば、javascriptのない人ではうまくいきません。私は?out=*articleId*のようなアウトリンクを使いました。次に、userXがlinkXをクリックしたことを保存することができます。次に、ユーザーの幅をheader("Location: *realURlFromDB*");にリダイレクトします。

+0

ああ、私は実際にクリック数のような多くのことをログに記録することができます。ありがとうございました。これを行うには、これを処理してリダイレクトする別のコントローラが必要でしょうか? – viperfx

+0

@viperfx私はMVCを初めて使ったので、わかりません。しかし、私はコントローラー 'logger'で' out'関数を実行しました。そうすれば、すべてのロギング機能が同じファイルに組み込まれます。 – Sawny

0

パラメータを残してJOINを使用して行っています。これも空の値を返します。したがって、私はNULL値をチェックしてNEWタグを表示することができました。

0
<?php 

//query that fetch unread articles 
$query = " 
    SELECT 
     articles.* 
    FROM 
     articles 
    LEFT JOIN 
     read_articles 
      ON articles.id != read_articles.article_id 
    WHERE 
     read_articles.user_id = 1 
"; 

/** 

Test db data 
CREATE TABLE IF NOT EXISTS `articles` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `title` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

INSERT INTO `articles` (`id`, `title`) VALUES 
(1, 'Article 1'), 
(2, 'Article 2'); 

-- -------------------------------------------------------- 

CREATE TABLE IF NOT EXISTS `read_articles` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `article_id` int(11) NOT NULL, 
    `user_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

INSERT INTO `read_articles` (`id`, `article_id`, `user_id`) VALUES 
(1, 1, 1); 
関連する問題