首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP爆炸数据并显示在表中

PHP爆炸数据并显示在表中
EN

Stack Overflow用户
提问于 2016-05-03 13:23:48
回答 2查看 944关注 0票数 0

在用PHP编写代码时,我遇到了问题。

我在mysql中有这样的数据:

代码语言:javascript
复制
$data_room = '2010,2011|Math-9,Informatic-8,History-6,Moresingle-5,Other-8
2011,2012|Math-6,Informatic-7,History-5,Moresingle-3,Other-7';
echo '<table><tbody>';
$data = explode("\n", $data_room);
foreach($data as $row){
    echo '<tr>';
    $row = explode('|',$row);
    echo '<td>';
    foreach($row as $cell){
        $row2 = explode(',',$cell);
        echo $row2[0].'->'.$row2[0].'</td></tr><tr>';
        foreach($row2 as $cell2){
            echo '<td>';
            echo $cell2;
            echo '</td>';
        }
        echo '</tr>';
    }
}
echo '</tbody></table>';

现在我想把它展示在这样的桌子上:

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-03 14:02:55

我认为首先您需要为每一行使用一个用于each.Then的表头,对每个行使用另一个。此外,您还需要为每个和nested ()做嵌套操作。请看下面的脚本。这可能对你有帮助。

代码语言:javascript
复制
<?php
$data_room = '2010,2011|Math-9,Informatic-8,History-6,Moresingle-5,Other-8
2011,2012|Math-6,Informatic-7,History-5,Moresingle-3,Other-7
2012,2013|Math-65,Informatic-17,History-15,Moresingle-13,Other-17';
echo '<table border="1" ><tbody>';
$data = explode("\n", $data_room);
$header = explode('|',$data[0]);
$header_row = explode(',',$header[1]);
/*Table header*/

 echo "<tr>";
 echo "<td>&nbsp;</td>";
 foreach($header_row as $subject_mark)
 {
    $subject = explode('-',$subject_mark);
    echo "<td>".$subject[0]."</td>";

 }
 echo "</tr>";

 foreach($data as $row){
 $head_contents = explode('|',$row);

 /*Table contents*/
 echo "<tr>";
 echo "<td>".str_replace(',','-',$head_contents[0])."</td>";
 $subject_marks = explode(',',$head_contents[1]);
 foreach($subject_marks as $subject_mark)
 {
    $mark = explode('-',$subject_mark);
    echo "<td>".$mark[1]."</td>";

 }
 echo "</tr>";

}
echo '</tbody></table>';
?>
票数 0
EN

Stack Overflow用户

发布于 2016-05-03 15:11:27

我建议你试试..。只需在下面复制整个代码并运行它,查看您得到了什么:下面是您将看到的内容:

代码语言:javascript
复制
    <?php
        $data_room  = '2010,2011|Math-9,Informatic-8,History-6,Moresingle-5,Other-8
        2011,2012|Math-6,Informatic-7,History-5,Moresingle-3,Other-7';


        $data       = array_map('trim', explode("\n", $data_room));

        //EXTRACT THE HEADER OUT OF THE FIRST DATA-ROW... DISCARDING THE DATE-RANGE PART
        $headerData = explode(",", preg_replace("&(\-\d{1,})|(^[0-9,]+\|)&", "", $data[0]));

        //CSS STYLES - JUST FOR TESTING
        $tblStyle       = "font-family: Helvetica, Arial, sans-serif;font-size: 13px;border-left:solid 1px #8A8A8A;";
        $thhStyle       = "";
        $trrStyle       = "background: #aeaeae; padding:10px; text-align:left;";
        $tr1Style       = "background: rgba(174, 174, 174, 0.70); padding:10px; text-align:left;";
        $tr2Style       = "background: rgba(174, 174, 174, 0.40); padding:10px; text-align:left;";
        $thStyle        = "padding:10px 20px; text-align:left; vertical-align:top;border:solid 1px #8A8A8A;border-left:none;";
        $tdStyle        = "padding:10px 20px; text-align:left; vertical-align:top;border-right:solid 1px #8A8A8A;border-bottom:solid 1px #8A8A8A;";

        //BUILD THE TABLE HEADER
        $htmlDisplay    = "<table  cellpadding='0' cellspacing='0' class='' id='' style='{$tblStyle}'>";
        $htmlDisplay   .= "<thead class='' id='' style='{$thhStyle}'>";
        $htmlDisplay   .= "<tr class='' id='' style='{$trrStyle}'>";
        $htmlDisplay   .= "<th class='' style='border:solid 1px #8A8A8A;border-left:none;'></th>";

        foreach($headerData as $key=>$val){
            $htmlDisplay   .= "<th class='' style='{$thStyle}'>{$val}</th>";
        }
        $htmlDisplay   .= "</tr>";
        $htmlDisplay   .= "</thead>";
        $htmlDisplay   .= "<tbody class='' id=''>";


        //BUILD THE CELLS (SLOTS FOR EACH UNIQUE DATA)... BUILDING THE TABLE BODY...
        foreach($data as $intKey=>$strVal){
            list($dateRange, $strData)      = explode("|", $strVal);
            $dateRangeVal                   = str_replace(",", " - ", $dateRange);
            $rowData                        = explode(",", preg_replace("&([^0-9,]*)&", "", $strData));
            $trCSS                          = ($intKey%2 == 0)? $tr1Style : $tr2Style;

            $htmlDisplay                   .= "<tr class='' id='' style='{$trCSS}'>";
            $htmlDisplay                   .= "<td class='' style='{$tdStyle}'>{$dateRangeVal}</td>";

            foreach($rowData as $intK=>$strV){
                $htmlDisplay               .= "<td class='' style='{$tdStyle}' >{$strV}</td>";
            }
            $htmlDisplay                   .= "</tr>";

        }
        $htmlDisplay   .= "</tbody>";
        $htmlDisplay   .= "</table>";

        // DISPLAY THE NICELY BUILT TABLE ;-) ... 
        // HMM! THE TABLE ALSO HAS A HEADER TOO: AIN'T THAT COOL?
        echo $htmlDisplay;

据我所见,您在代码中所做的事情并不像您正在切割的数据,而是直接来自数据库的数据。看起来更像是在处理一块数据(可能是从mysql命令行中复制的)。如果您正在直接访问数据库,那么这根本不是此场景的解决方案.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37005438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档