0

以下のコードを使用して、ステータスとコメントを表示します。自分のコードを完全には理解していませんが、希望どおりに機能します。

次のことを達成したい:結果がステータスからのものである場合、$ link_type =ステータス、結果がコメントからのものである場合、$link_type=コメント

これは私の試みです($ link_typeは常に'status'になりました)

    $results = db_query("
    SELECT sid as ssid, created as screated, message as smessage, recipient as srecipient 
    FROM {statuses}
    WHERE created > :logout_stamp
    UNION
    SELECT sid as ssid, created as screated, comment as smessage, uid as srecipient 
    FROM {fbss_comments} fbss
    WHERE fbss.created > :logout_stamp
    ORDER BY screated DESC LIMIT 15", 
    array(':logout_stamp' => $logout_stamp))->fetchAll();

  // foreach the results
  foreach ($results as $result) {
      $user_status = user_load($result->srecipient);
      $user_comment = user_load($result->commentuid);
      $username_status = $user_status->name;
      $username_comment = $user_comment->name;
      $date_status = $result->screated;
      $date_comment = $result->commentcreated;

      if ($result->ccreated != NULL) {
        $link_type = "comment";
      }
      else {
        $link_type = "status";
      }

print '<a href="statuses/' . ($result->ssid) . '" class="notification_wrapper">' . '<b>' . $username_status . '</b>' . ' - ' . ($link_type) . ' - ' . strip_tags(substr($result->smessage,0,30)) . ' - ' . elapsed_time($date_status) . '</a>'; 

アドバイスは大歓迎です

4

3 に答える 3

1

stを使用すると、ステータスに1、コメントに2が返されます。

 SELECT 1 as st,sid as ssid, created as screated, message as smessage, recipient as srecipient 
    FROM {statuses}
    WHERE created > :logout_stamp
    UNION
    SELECT 2 as st sid as ssid, created as screated, comment as smessage, uid as srecipient 
    FROM {fbss_comments} fbss
    WHERE fbss.created > :logout_stamp
    ORDER BY screated DESC LIMIT 15
于 2013-03-20T13:23:09.023 に答える
1

この値を追加フィールドとして追加します。

 SELECT sid as ssid, created as screated, message as smessage, recipient as srecipient, "status" as link_type 
FROM {statuses}
WHERE created > :logout_stamp
UNION
SELECT sid as ssid, created as screated, comment as smessage, uid as srecipient,"comment" as link_type 
FROM {fbss_comments} fbss
WHERE fbss.created > :logout_stamp
ORDER BY screated DESC LIMIT 15
于 2013-03-20T13:25:27.647 に答える
1

次のように、クエリにフィールドを追加できます。

$results = db_query("
    SELECT sid as ssid, created as screated, message as smessage, recipient as srecipient, 'status' as link_type
    FROM {statuses}
    WHERE created > :logout_stamp
    UNION
    SELECT sid as ssid, created as screated, comment as smessage, uid as srecipient, 'comment' as link_type
    FROM {fbss_comments} fbss
    WHERE fbss.created > :logout_stamp
    ORDER BY screated DESC LIMIT 15", 
    array(':logout_stamp' => $logout_stamp))->fetchAll();

次に、if条件で新しいフィールドを使用します。

$link_type = ($result->link_type == 'comment') ? "comment" : "status";
于 2013-03-20T13:31:17.787 に答える