$tr_list = array();
$query="select * from member where fenlei in (1,2,3,4)  order by id desc  Limit 0,10";
$result=mysql_query($query,$db);
while ($arr=mysql_fetch_array($result))
{
$tr_list[$arr['fenlei']] .="$arr[name]";
} echo "$tr_list[1]";
 echo "$tr_list[2]";
 echo "$tr_list[3]";
 echo "$tr_list[4]";//如果每组数据小于10,那么四组输出都正常,如果大于10,就只有一组输出了,不知道为什么?//也就是说不限定  Limit 0,10就正确,限定了每组只输出10条,如果每组数据大于10条的话,就只有最后一组 $tr_list[4]有输出,前三组就没有内容了,不知道什么原因?怎么才能四组各输出10条?

解决方案 »

  1.   

    原因可能是:四组各输出10条,就有40条记录。limit 0,10一共才10条 所以请高手指教:4组要各取10条,怎么做?写成limit 0,40又不对,不是每组10条了,直接到第一组去了
      

  2.   

    参考下贴中的多种方法http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
    [征集]分组取最大N条记录方法征集,及散分....
      

  3.   

    关键的问题是select 语句得到的数据,你需要进行测试,才知道显示的是什么数据。
    用echo或者print_r都可以。select * from member where fenlei in (1,2,3,4) order by id desc Limit 0,10
    这样的select语句得到的数据是,字段fenlei的内容要么是1,2,3,4其中一个都符合,
    limit 10只是输入前面10条内容。如果前面的十条内容,都是条件fenlei=4
      

  4.   

    不是前三组没数据,而是while循环出错了。这样的循环$arr['fenlei']的值都是4。所以循环外看到的数据只有$tr_list[4];
    你可以在while循环里print_r($tr_list)数组,看看其它三组有没有数据,这样再调整循环语句。我估计这样做可以的。