【问题标题】:HTML/SQL table formattingHTML/SQL 表格格式化
【发布时间】:2019-11-18 10:05:45
【问题描述】:

我有这个 SQL 查询,它可以提取我需要的所有数据,并按照我喜欢的方式对其进行格式化,但我缺少一列该数据不在数据库中的列。根据数据输出的内容,我想将结果分组到某个桶(第 1 列)中。我的查询提取了所有大于 48HRS 的 MIST、STATES 和 HRS。我怎样才能将输出数据链接到其相应的组?有人可以帮我弄这个吗?谢谢。

我正在尝试做的 Excel 示例。

这是我的代码:

print "             
<div id='wrapper'>
        <nav class='navbar navbar-inverse navbar-fixed-top' role='navigation'>
            <div class='navbar-header'>
                <button type='button' class='navbar-toggle' data-toggle='collapse' data-target=''.navbar-ex1-collapse'>
                    <span class='sr-only'>Toggle navigation</span>
                    <span class='icon-bar'></span>
                    <span class='icon-bar'></span>
                    <span class='icon-bar'></span>
                </button>
                <a class='logo' href='#'>
                    <img src='images/ti-logo.png' alt='CoolAdmin' />
                </a>
                </div>
            <div class='collapse navbar-collapse navbar-ex1-collapse'>
                <ul id='active' class='nav navbar-nav side-nav'>

                    <li><a href='CriticalToolsMet.html'><i class='fa fa-globe'></i> METROLOGY</a></li>
                    <li><a href='CriticalToolsCMPIMP.html'><i class='fa fa-globe'></i> CMP/IMP</a></li>
                    <li><a href='CriticalToolsDIFFWET.html'><i class='fa fa-globe'></i> DIFF/WET</a></li>
                    <li><a href='CriticalToolsPHOTO.html'><i class='fa fa-globe'></i> PHOTO</a></li>
                    <li><a href='CriticalToolsPLASMA.html'><i class='fa fa-globe'></i> PLASMA</a></li>
                    <li><a href='CriticalToolsTHINFILM.html'><i class='fa fa-globe'></i> THINFILM</a></li>
                </ul>
                <ul class='nav navbar-nav navbar-right navbar-user'>
                    <li class='divider-vertical'></li>
                    <li>
                        <form class='navbar-search'>
                            <input type='text' placeholder='Search' class='form-control'>
                        </form>
                    </li>
                </ul>
            </div>
        </nav>
        <div id='page-wrapper'>
            <div class='row'>
                <div class='col-lg-12'>
                    <h1>Critical Dashboard <small>THINFILM</small></h1>

                </div>
                </div>
            <div class='row'>
                <div class='col-lg-12'>
                    <div class='panel panel-primary'>
                        <div class='panel-heading'>
                            <h3 class='panel-title'><i class='fa fa-bar-chart-o'></i> Fab Dashboard - DMOS5 </h3>
                        </div>
                        <table class='table'>
                            <thead>

                            <tr>
                                    <th>TOOLGROUP</th>
                                    <th>MISTI</th>
                                    <th>STATE</th>
                                    <th>HRS</th>

                                </tr>
                            </thead>
                    </div>";

$sqlstr="Select 
       g.entity as MISTI,
       t.cur_state      as STATE,
       ROUND(((SYSDATE-t.cur_state_dttm)*24),2) AS HRS

From Entity_Grp_Lst g
left outer join trk_id_def t
on g.facility = t.facility
and g.grp_type = t.grp_type
and g.entity=t.entity
and g.grp_type = '720'
WHERE t.cur_state NOT IN ('PROD','NM','TERM','NULL','IDLE', 'YER', 'I05', 'I07')
and Entity_Grp_type = '041'
and g.ENTITY_GRP in ('THINFILM')
and (g.entity like 'CV403%' or
g.entity like 'CV406%' or
g.entity like 'CV405%' or
g.entity like 'CV132%' or
g.entity like 'MT105%' or
g.entity like 'MT106%' or
g.entity like 'MT117%' or
g.entity like 'MT118%' or
g.entity like 'MTA08%' or
g.entity like 'MTA13%'  )



AND ROUND(((SYSDATE-t.cur_state_dttm)*24),2) > 48  
order by t.cur_state_DTTM desc

";
$sth = $dbh->prepare($sqlstr);
$sth->execute();
$sth->bind_columns(undef, \$TOOL_GROUP, \$MISTI, \$STATE, \$HRS);
my %tool_groups = (
  CV403 => 'ARC_SOUTH',
  CV405 => 'ARC_SOUTH',
  CV406 => 'ARC_SOUTH',
  CV132 => 'BPSG',
  MT105 => 'COBALT',
  MT106 => 'COBALT'
);
while($sth->fetch()) {
    while($sth->fetch()) {
    my $TOOL_GROUP;
if (exists $tool_groups{$MISTI}) {
  $TOOL_GROUP = $tool_groups{$MISTI};
} else {
  warn "Unknown tool group for MIST: $MISTI";
  next;
}

   print "

                            <tbody>
                                <tr class='row100 body'>
                                 <td class='cell100 column3'>$TOOL_GROUP</td>
                                    <td class='cell100 column1'><FORM ACTION='http://d5lxgenwebapp01z.dal.make.ti.com/get_de1_de2_misti_comments.pl' METHOD='POST' target='_blank' NAME='userInput2'>
        <INPUT TYPE='hidden' NAME='eq' MAXLENGTH='8' VALUE='$MISTI'>
              <INPUT TYPE='hidden' NAME='pages' SIZE='3' MAXLENGTH='2' VALUE='50'>
        <INPUT TYPE='submit' NAME='submit' VALUE='$MISTI'></form></td>
                                    <td class='cell100 column2 $STATE'>$STATE</td>
                                    <td class='cell100 column3'>$HRS</td>

                                </tr>

   </tr>";
}

print "</tbody>
                        </table>
                    </div>
                    <p >Email: <a href='mailto:?subject=CRITICAL TOOLS DASHBOARD WEBPAGE'>Ru
                                Med</a></p>
                </div>

                </div>
            </div>
        </div>
    </div>";
$sth->finish();
$dbh->disconnect();

print "


</body></html>";

【问题讨论】:

  • 您将不得不解释您“希望如何将结果分组到某个桶中”的规则。没有更多细节,很难看出我们能提供多大帮助(好吧,除了重复the suggestions from your last question)。
  • 嗨@Dave所以如果sql查询输出CV403我希望第一列标记为ARC_SOUTH或者如果它输出MTA13我希望第一列显示COBALT。抱歉,如果我在尝试解释时有点困惑。

标签: html sql perl


【解决方案1】:

目前还不是很清楚,但我认为解决这个问题的方法是一个简单的哈希。如果你的代码中有这个:

my %tool_groups = (
  CV403 => 'ARC_SOUTH',
  CV405 => 'ARC_SOUTH',
  CV406 => 'ARC_SOUTH',
  CV132 => 'BPSG',
  MT105 => 'COBALT',
  MT106 => 'COBALT',
  # etc...
);

然后在你的循环中,你可以这样做:

my $tool_group;
if (exists $tool_groups{$MISTI}) {
  $tool_group = $tool_groups{$MISTI};
} else {
  warn "Unknown tool group for MIST: $MISTI";
  next;
}

然后在你的输出中使用$tool_group

但是注意the advice I gave you in response to your last question。你让你的生活变得比需要的更艰难。

更新:但老实说,我认为这样的信息应该在数据库表中。只需添加一个包含 Mist 到 Tool Group 映射的表,然后您只需将连接添加到 SQL 即可获取数据。

【讨论】:

  • 很抱歉,这仍然是全新的,但我究竟应该把这个循环放在哪里?我从上一篇文章中查看了您的建议,我目前正在重做这个应用程序,但一切对我来说仍然是一个学习过程,所以我正在一步一步地完成。
  • @Dc5nipe:您不需要将循环放在任何地方。您已经有一个循环 - 您的 while 循环迭代从数据库中拉回的结果。您将哈希初始化放在此循环之外,并将设置$tool_group 的位放在while 循环中,在print() 语句之前。然后,您可以在 print() 语句中添加类似 &lt;td&gt;$tool_group&lt;/td&gt; 的内容。
  • 所以我对原始帖子进行了建议的更改,但它没有提取任何数据。你能指出我搞砸的地方吗?谢谢!
  • 我知道你可能很忙,但只要有机会,你能忽略上面的代码吗?这是该项目的最后一步。谢谢!
  • @Dc5nipe 您仍然(正确,我相信)只从数据库中提取三列。所以我不确定你为什么在对bind_params() 的调用中添加了undef$TOOL_GROUP(那时你甚至还没有声明$TOOL_GROUP)。如果您将对 bind_params() 的呼叫重置为原来的状态,那么我认为它会起作用。
猜你喜欢
  • 1970-01-01
  • 2017-02-07
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 2016-08-14
  • 2012-03-09
相关资源
最近更新 更多