0

コミュニティ Web サイト用の通知システムを作成しようとしています。whileループを使用してデータを取得しようとしています。while ループ内で if ステートメントの条件が満たされると、ページにデータを表示/印刷する必要があります。なんらかの理由で、結果が 1 つしか表示されません。理由はわかりません。

私のデータベースの構造:

CREATE TABLE IF NOT EXISTS `notifications` (
  `notification_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `to_id` int(11) NOT NULL,
  `notification_identifier` enum('1','2','3','4','5','6') NOT NULL,
  `notify_id` int(11) NOT NULL,
  `opened` enum('0','1') NOT NULL,
  `timestamp` datetime NOT NULL,
  PRIMARY KEY (`notification_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

notification_identifier は、それがどのタイプの通知であるか (例: プロファイル コメント、ステータスの更新、いいね) をnotify_id教えてくれ、確認する必要がある特定のテーブルの ID を教えてくれます。

私のコード:

<?
$DisplayNotification ="";

$unread = "0";

$mynotify = mysql_query("SELECT * FROM notifications WHERE to_id='$logOptions_id' AND opened='$unread'") or die (mysql_error());
$notify_Count = mysql_num_rows($mynotify);

if($notify_Count>0){

        while($row = mysql_fetch_array($mynotify)){
        $notification_id = $row["notification_id"];
        $memb_id = $row["user_id"];
        $identifier = $row["notification_identifier"];
        $notify_id =$row["notify_id"];
        $timestamp = $row["timestamp"];
        $convertedTime = ($myObject -> convert_datetime($timestamp));
        $when_notify = ($myObject -> makeAgo($convertedTime));


        if($identifier == 1){// condition 1

            $DisplayNotification ='user added you as a friend';

        }else if ($identifier == 2) {//condition 2

            $DisplayNotification ='user commented on your post';
        }


        }



 }else{// End of $notify
    $DisplayNotification ='You have no new notifications.';
 }



?>

任意の助けをいただければ幸いです

4

2 に答える 2

3

$DisplayNotification実際にはどこに表示されますか?それは確かにあなたのループの本体の中にはありません。

ループを通過するたびに$DisplayNotification、新しい値を割り当てます。もちろん、これは古い値を置き換えます。完了するまでに、何が起こったとしても、最新の変更だけが残っています。

おそらくあなたは次のようなことをするつもりだったと思います

$DisplayNotification .= "User added you as a friend\n";

.=、ループ全体で同じ変数に新しいテキストを追加し続けます。

または、配列を使用することもできます。その場合は、

$DisplayNotifications[] = "User added you as a friend";

次に、最後にすべてのアイテムを好きなように表示できます。

于 2012-07-07T20:36:46.883 に答える
0

実際に変数をダンプする前に、 whileステートメントを完全に実行したようです$DisplayNotification。その場合は、ループ中に変数の値を切り替えるだけです。配列内にダンプする値を格納するか、ループ内にダンプする必要があります。

于 2012-07-07T20:36:56.590 に答える