横向垂直数据表php mysql

时间:2014-12-05 07:42:09

标签: php html

我有代码显示表格水平。

我希望能像这样显示表格。

                12/15/2014 || 12/16/2014
     

Rumah ATM ............ YA .................. || YA ..............等

</tr>
 <?php 
$nip= $_REQUEST["txtcar"];
include ("../connect.php");
$query1 = "SELECT ambilmk.tgl,ambilmk.nim,ambilmk.kodeMK,ambilmk.nilai,list.kom,list.id_check 
FROM ambilmk 
LEFT JOIN list
ON ambilmk.kodemk=list.id_check
where nim='1'
 ";
$hasil1 = mysql_query($query1);
$no = 1;
while ($row1 = mysql_fetch_array($hasil1))
{?>
  <tr align="center">
    <td><?php echo $row1["tgl"]; ?></td>
    <td><?php echo $row1["kom"]; ?></td>
    <td><?php echo $row1["nilai"]; ?></td>
  </tr>
<?php } ?>

</table>
你能帮忙提供代码吗?显示表垂直水平

1 个答案:

答案 0 :(得分:0)

在HTML-Table中你需要先编写一个ROW然后编写第二行并且你有一个ROW但想要显示在不同的行中垂直...所以你需要将行存储在变量中。

让我告诉你如何。假设你有MySQL列有3列(如你的代码),那么:

 $row_1='<tr align="center">';
 $row_2='<tr align="center">';
 $row_3='<tr align="center">';
 while ($row1 = mysql_fetch_array($hasil1))
 {
     $row_1.="<td>".$row1["tgl"]."</td>";
     $row_2.="<td>".$row1["kom"]."</td>";
     $row_3.="<td>".$row1["nilai"]."</td>";
 }
 echo $row_1."</tr>";
 echo $row_1."</tr>";
 echo $row_1."</tr>";

编辑:AS OP需要Pivot

[以上答案不正确的原因:]如果需要group by,则上述代码无法实现(我将其留给未来的用户使用)&amp;免费的MySQL不支持PIVOT ......

通过静态查询,您无法执行tgl的任何非静态/固定值。因此,您需要使用动态查询,第二个选项是创建存储过程

在这个问题中解释了这两种方法:Pivot table in MySQL - convert to pivot table with values in varchar format


编辑2:在分析上述链接后,通过PHP完成了这个工作:

 $result = mysql_query("SELECT DISTINCT tgl FROM ambilmk WHERE nim='1';");
 $tgls_col="";
 while($row = mysql_fetch_array($result)){
      $tgls_col.=",MAX(CASE WHEN ambilmk.tgl = '".$row[0]."' THEN ambilmk.nilai END) `".$row[0]."`";
 }

 $query1 = "SELECT list.kom as Kom ".$tgls_col." FROM ambilmk LEFT JOIN list 
      ON ambilmk.kodemk=list.id_check where nim='1' GROUP BY ambilmk.tgl,list.kom;";
 $hasil1 = mysql_query($query1);

 $fields=mysql_fetch_fields($hasil1);
 echo '<tr>';
 foreach ($fields as $col) {
     echo '<th>'.$col->name.'</th>';
 }
 echo '</tr>';
 $fields=count($fields);
 while($row=mysql_fetch_array($hasil1)){
      echo '<tr>';
      for($I=0;$I<$fields;I++){
           echo "<td>".$row[$I].'</td>';
      }
      echo '</tr>';
 }

HERE 您可以在list.komambilmk.nilai之间切换,并且可以将聚合函数MAX更改为您想要的任何其他COUNT等等。切换GROUP BY caluse中列的顺序以获得所需结果。 由于您的列名称使用不同的语言,这就是为什么无法理解其中的内容,因此您需要执行这些建议的变体。并且也无法测试,因为它不具有您的表格结构。