Php 仅显示表中的5个

Php 仅显示表中的5个,php,limit,Php,Limit,我试图让你可以看到你朋友的最新活动,但一次只能显示5个。在这5个人中,如果你的时间比任何其他朋友都多,你可以拥有一个人不止一次。比如说“friend Leveled up skillName date”,然后显示最近的五个。我的代码是这样的: function recentActivityF($user){ include "mysql.ws"; $query = mysql_query("SELECT u.* FROM friends uf inner join users u on uf.f

我试图让你可以看到你朋友的最新活动,但一次只能显示5个。在这5个人中,如果你的时间比任何其他朋友都多,你可以拥有一个人不止一次。比如说“friend Leveled up skillName date”,然后显示最近的五个。我的代码是这样的:

function recentActivityF($user){
include "mysql.ws";
$query = mysql_query("SELECT u.* FROM friends uf inner join users u on uf.friend = u.username WHERE uf.user = '$user' ORDER BY u.username") or die(mysql_error());
while($row = mysql_fetch_array($query)){
    $friends = $row['username'];    
            //$query2 = mysql_query("SELECT * FROM recentactivity WHERE user LIKE '".$friends."' ORDER BY time DESC LIMIT 1") or die(mysql_error());
        $query2 = mysql_query("SELECT u.* FROM recentactivity uf inner join friends u on uf.user = u.friend WHERE uf.user LIKE '".$friends."' ORDER BY uf.time DESC LIMIT 1") or die(mysql_error());
            $query3 = mysql_query("SELECT * FROM skills WHERE playerName LIKE '".$friends."' LIMIT 1") or die(mysql_error());
        while($row3 = mysql_fetch_array($query3)){
         while($row2 = mysql_fetch_array($query2)){
        $date = $row2['time'];
        $skillRow = $row2['skill']+1;
        $skill = findType($skillRow)."xp";
        $skillName = findType($skillRow);
                echo'Friend: '.$friends.' Levelled Up '.$skillName.' Date: '.$date.'';
              }
            }
         }
       }
结果应该是:

1.)Friend: mark Levelled Up Attack date: 28-Aug-2012 09:48
2.)Friend: matt Levelled Up Strength date: 28-Aug-2012 09:47
3.)Friend: kevin Levelled Up Attack date: 28-Aug-2012 09:46
4.)Friend: mark Levelled Up Strength date: 28-Aug-2012 09:45
5.)Friend: april Levelled Up Magic date: 28-Aug-2012 09:44
我的结果是:

1.)Friend: mark Levelled Up Attack date: 28-Aug-2012 09:48
2.)Friend: mark Levelled Up Strength date: 28-Aug-2012 09:45
3.)Friend: matt Levelled Up Strength date: 28-Aug-2012 09:47
4.)Friend: kevin Levelled Up Attack date: 28-Aug-2012 09:46
5.)Friend: april Levelled Up Magic date: 28-Aug-2012 09:44
6.)Friend: april Levelled Up Strength date: 28-Aug-2012 09:45
SQL:

因此,注释$query2显示每个朋友的1个,但将显示5个以上,我想将其限制为仅显示5个最近的朋友活动。有什么帮助吗?

请使用。 基本用法如下:

SELECT * FROM table LIMIT 5
如果要返回记录6-10:

SELECT * FROM table LIMIT 5,5
给我一点时间看看你的代码,给我一个很好的例子。在您的代码中,您需要在哪里使用它并不明显


在仔细阅读代码之后,似乎不需要第一个查询。您应该能够做到:

SELECT u.*
FROM recentactivity uf
INNER JOIN friends u ON uf.user = u.friend
WHERE u.user = $user
ORDER BY uf.time DESC
LIMIT 5

您可能需要选择更多字段来获取所需的所有信息,但这应该可以获取给定用户的所有记录,按最新记录排序,并限制在前5位。

我注意到您自己也在熟练地翻译姓名,所以这应该足够了:

SELECT f.user AS username, a.time, a.skill
FROM
  friends f
  JOIN recentactivity a ON(a.user = f.user)
WHERE
 f.friend = $username
GROUP BY a.user -- only one event per friend
ORDER BY a.time DESC
LIMIT 5
请参见此处的演示:


编辑:您只需执行以下操作:

function recentActivityF($user){
  include "mysql.ws";
  $query = <<<EOD
SELECT f.user AS username, a.time, a.skill
FROM
  friends f
  JOIN recentactivity a ON(a.user = f.user)
WHERE
 f.friend = $user
GROUP BY a.user -- only one event per friend
ORDER BY a.time DESC
LIMIT 5
EOD;

  mysql_query($query);
  while($row = mysql_fetch_array($query)) {
    $friend_name = $row['username'];
    $date = $row['time'];
    $skillRow = $row['skill']+1;
    $skillName = findType($skillRow);
    echo'Friend: '.$friend_name.' Levelled Up '.$skillName.' Date: '.$date.'';
  }
函数recentActivityF($user){
包括“mysql.ws”;

$query=重新提问,这次只使用SQl并显示预期结果。注意:在不需要时不要使用LIKE(无通配符等)你只是在寻找平等我想我在我上一次编辑中找到了你需要的东西——包括具体的专栏。谢谢你的工作!:PAm I是唯一一个认为在这里提问之前绝对没有做过研究的人?不,我想他需要做一两次加入。是的,我想我需要加入一些东西,但不确定正确与否方法。谢谢你,伙计,你是最好的:DNo问题。总是很有趣。下次你有数据库相关的问题时看一看,K?:)事实上,现在它为每个用户显示相同的5。有分组方式:…没有分组方式:嗯,用户名似乎在某个地方丢失了。这就是我如何从用户名列中获得朋友姓名的原因。
function recentActivityF($user){
  include "mysql.ws";
  $query = <<<EOD
SELECT f.user AS username, a.time, a.skill
FROM
  friends f
  JOIN recentactivity a ON(a.user = f.user)
WHERE
 f.friend = $user
GROUP BY a.user -- only one event per friend
ORDER BY a.time DESC
LIMIT 5
EOD;

  mysql_query($query);
  while($row = mysql_fetch_array($query)) {
    $friend_name = $row['username'];
    $date = $row['time'];
    $skillRow = $row['skill']+1;
    $skillName = findType($skillRow);
    echo'Friend: '.$friend_name.' Levelled Up '.$skillName.' Date: '.$date.'';
  }