从循环中读取最新数字


Read the latest number from loop

如何从以下代码中读取最新数字

<table  width="100" border="1" >
   <tr align="center" bgcolor="#999999" >
     <td  >NO</td>
     <td  >Name</td>
     <td  >PBSID</td>
   </tr>
$query ="select * from stock ";
$hasil = mysql_query($query); 
$no=0;
while ($row = mysql_fetch_array($hasil))
{ 
    $no++;
    if($x != $row[pbsid] )
    { 
        $no=1;
        echo "<tr bgcolor=#CCCCCC>
                  <td colspan=4 ><b> GROUP $row[pbsid]</b></td>
              </tr>";
    }
    $mo=count($no);
    echo "<tr><td>$no </td><td> $row[bnama]</td><td>$row[pbsid] </td></tr>";
    $x = $row["pbsid"];
}

结果:


===========
NO | NAME | GROUP
---------------------------------------
===========
GROUP 1
---------------------------------------
===========
1 | A | 1    
2 | B | 1    
3 | C | 1    
4 | D | 1
---------------------------------------
===========
GROUP 2
---------------------------------------
===========
1 | A | 2    
2 | B | 2    
3 | C | 2


我想显示最新的组号,组 1=4 和组 2=3,谁能帮我解决这个问题?

尝试以下查询:

SELECT s.*, c.count
FROM stock AS s
LEFT JOIN ( SELECT pbsid, COUNT(1) AS `count` FROM stock GROUP BY pbsid ) AS c
    ON s.pbsid = c.pbsid

现在,您将拥有每个组的计数,这似乎是您真正想要的。

如果你出于某种原因更喜欢在PHP中完成所有工作,你可以这样做:

<table  width="100" border="1" >
   <tr align="center" bgcolor="#999999" >
     <td  >NO</td>
     <td  >Name</td>
     <td  >PBSID</td>
   </tr>
$query ="select * from stock ";
$hasil = mysql_query($query); 
$no=0;
$counts = array();  // make an array of counts for each group, keyed by pbsid
$rows = array();  // put all the data from SQL into an array
while ($row = mysql_fetch_array($hasil))
{
    $rows[] = $row;
    if (!isset($counts[$row[pbsid]]))
    {
        $counts[$row[pbsid]] = 0; // initialize it to 0
    }
    $counts[$row[pbsid]]++; // increment for each occurrence of a pbsid 
}
foreach ($rows as $row)
{ 
    $no++;
    if($x != $row[pbsid] )
    { 
        $no=1;
        echo "<tr bgcolor=#CCCCCC>
                  <td colspan=4 ><b> GROUP $row[pbsid]</b> Count = " . $counts[$row[pbsid]] . " </td>
              </tr>";
    }
    $mo=count($no);
    echo "<tr><td>$no </td><td> $row[bnama]</td><td>$row[pbsid] </td></tr>";
    $x = $row["pbsid"];
}

虽然,我认为在您的查询中计算此信息要简单得多。

这将起作用

$query ="select * from stock ";
$hasil = mysql_query($query); 
$no=0;
$latest = array();
while ($row = mysql_fetch_array($hasil))
{ 
$no++;
if($x != $row[pbsid] ){ 
$no=1;
echo "<tr bgcolor=#CCCCCC>
  <td colspan=4 ><b> GROUP $row[pbsid]</b></td>
</tr>";
}
$mo=count($no);
echo "<tr><td>$no </td><td> $row[bnama]</td><td>$row[pbsid] </td></tr>";
$x = $row["pbsid"];
$key = 'Group'.$row['pbsid'];
$latest[$key] = $no;
}
print_r($latest);
<table  width="100" border="1" >
<tr align="center" bgcolor="#999999" >
<td  >NO</td>
<td  >Name</td>
<td  >PBSID</td>
</tr>
$last_no = array();
$query ="select * from stock ";
$hasil = mysql_query($query); 
$no=0;
while ($row = mysql_fetch_array($hasil))
{ 
$no++;
if($x != $row[pbsid] ){ 
$no=1;
echo "<tr bgcolor=#CCCCCC>
  <td colspan=4 ><b> GROUP $row[pbsid]</b></td>
</tr>";
}
$mo=count($no);
echo "<tr><td>$no </td><td> $row[bnama]</td><td>$row[pbsid] </td></tr>";
$x = $row["pbsid"];
$last_no[] = $no;
}
print_r($last_no);

更改查询$query ="select MAX(没有),bnama, pbsid from yourtablename GROUP BY pbsid ";