0

次のコードから最新の番号を読み取るにはどうすればよいですか

<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


最新の GROUP 番号、Group 1=4 および Group 2=3 を表示したいのですが、これを手伝ってくれる人はいますか?

4

4 に答える 4

0

クエリ$query ="select MAX(番号を変更してください),bnama, pbsid from yourtablename GROUP BY pbsid ";

于 2012-05-22T08:31:06.237 に答える
0

これはうまくいくでしょう

$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);
于 2012-05-22T06:41:58.807 に答える
0
<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);
于 2012-05-22T06:43:17.833 に答える
0

このクエリを試してください:

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"];
}

ただし、この情報をクエリで計算する方がはるかに簡単だと思います。

于 2012-05-22T06:50:20.620 に答える