【问题标题】:Apply Table Style in Dynamic Table Creation with PHP使用 PHP 在动态表格创建中应用表格样式
【发布时间】:2013-03-22 15:19:05
【问题描述】:

我无法将 CSS 样式应用到我的动态表格。我正在连接到数据库,并且我知道数据已正确填充并显示。我的问题是有 900 条记录,我想限制表大小,使用滚动条。我已经阅读了其他软件,完成此操作的正确 CSS 样式节点是:How to specify table's height such that a vertical scroll bar appears?

溢出:自动;

高度:700px;

显示:块;

溢出-y:滚动;

起初我尝试使用内联样式进行此操作(不可以......我意识到),但它没有用。我已经阅读了有关向表和/或单个行添加“类”的信息,然后将其反映在我的 CSS 样式表中,但我似乎无法弄清楚如何实现这一点。当我在 PHP 中添加“span”或“class”标签指示符时出现语法错误(我想象使用“ECHO”——它们都需要双引号)。

我正在努力完成的好例子:http://www.timrivera.com/tests/csstables.html#markupIE

下面的 PHP 代码 sn-p 语法很好,但我不知道在哪里适当地添加类或跨度指示符。需要注意的一件事 - 我需要为不同的表格设置不同的样式,因此更改全局“表格”CSS 是行不通的。

//Function that gets the SQL recordset. 
$result2 = Get_Package_Info_EXT($conn, $var_PartNumber);
//do the table edits here.
   echo "<table border='1' >
  <tr>
  <th>Facility</th>
  <th>Process Flow</th>
  <th>Operation</th>
  <th>Device</th>
  <th>Item</th>
  <th>Value</th>
  <th>Database Source</th>

  </tr>";

  while($row2 = oci_fetch_array($result2)){
  echo "<tr>";
  echo "<td>" . $row2['FACILITY_AT'] . "</td>";
  echo "<td>" . $row2['SUB_FLOW_TYPE'] . "</td>";
  echo "<td>" . $row2['OPN_NAME'] . "</td>";
  echo "<td>" . $row2['SPEC_DEVICE'] . "</td>";
  echo "<td>" . $row2['COMPONENT_NAME'] . "</td>";
  echo "<td>" . $row2['COMPONENT_VALUE'] . "</td>";
  echo "<td>" . $row2['SOURCE'] . "</td>";
  echo "</tr>";
  }
  echo "</table>";

【问题讨论】:

    标签: php html css forms


    【解决方案1】:

    我认为最好的方法是在桌子周围包裹一个 div 并给 div 一个高度。

    http://phpfiddle.org/main/code/i7h-9b1

    <style type="text/css">
        #scroll {
            height: 100px; /* Max height of table */
            overflow-y: scroll;
            width: 340px;
        }
    </style>
    
    <div id="scroll">
        table
    </div>
    

    使用您的代码:

    echo '
    <style type="text/css">
         #scroll {
             height: 100px; /* Max height of table */
             overflow-y: scroll;
             width: 340px;
        }
    </style>';
    
    //Function that gets the SQL recordset. 
    $result2 = Get_Package_Info_EXT($conn, $var_PartNumber);
    //do the table edits here.
       echo "<div id='scroll'><table border='1' >
      <tr>
      <th>Facility</th>
      <th>Process Flow</th>
      <th>Operation</th>
      <th>Device</th>
      <th>Item</th>
      <th>Value</th>
      <th>Database Source</th>
    
      </tr>";
    
      while($row2 = oci_fetch_array($result2)){
      echo "<tr>";
      echo "<td>" . $row2['FACILITY_AT'] . "</td>";
      echo "<td>" . $row2['SUB_FLOW_TYPE'] . "</td>";
      echo "<td>" . $row2['OPN_NAME'] . "</td>";
      echo "<td>" . $row2['SPEC_DEVICE'] . "</td>";
      echo "<td>" . $row2['COMPONENT_NAME'] . "</td>";
      echo "<td>" . $row2['COMPONENT_VALUE'] . "</td>";
      echo "<td>" . $row2['SOURCE'] . "</td>";
      echo "</tr>";
      }
      echo "</table></div>";
    

    【讨论】:

    • -非常感谢您的回复。添加格式后,我没有看到任何样式更改为带有滚动框的固定大小的框。我在 PHP 部分添加了以下文本: - echo "
      "; - 在 SQL 查询之后 - 回显“
      ”; - 在桌子之后。然后,我从您在 .CSS 文件的“正文”部分上方给我的链接中复制了代码——dreamweaver 似乎找到了 #scroll 变量并识别了它....
    • 这听起来像是您正在使用 Dreamweavers 设计视图在本地进行测试?您应该将其上传到某处并在实际服务器上进行测试... Dreamweaver 在本地加载内容的方式与浏览器实际加载方式的主要区别。我敢打赌,以前的方法很好用,只是你不知道而已。
    • 放在 之前你不需要链接中的所有 css。您只需要我的答案中的 css。
    • 哈!显然我不得不离开几个小时然后回来。我没有意识到除了 CSS 信息之外,您还必须添加
    【解决方案2】:

    将您的 PHP 代码编辑为...

    //Function that gets the SQL recordset. 
    $result2 = Get_Package_Info_EXT($conn, $var_PartNumber);
    //do the table edits here.
      echo "<div class=\"table-container\">";
      echo "<table border='1' >
      <tr>
      <th>Facility</th>
      <th>Process Flow</th>
      <th>Operation</th>
      <th>Device</th>
      <th>Item</th>
      <th>Value</th>
      <th>Database Source</th>
    
      </tr>";
    
      while($row2 = oci_fetch_array($result2)){
      echo "<tr>";
      echo "<td>" . $row2['FACILITY_AT'] . "</td>";
      echo "<td>" . $row2['SUB_FLOW_TYPE'] . "</td>";
      echo "<td>" . $row2['OPN_NAME'] . "</td>";
      echo "<td>" . $row2['SPEC_DEVICE'] . "</td>";
      echo "<td>" . $row2['COMPONENT_NAME'] . "</td>";
      echo "<td>" . $row2['COMPONENT_VALUE'] . "</td>";
      echo "<td>" . $row2['SOURCE'] . "</td>";
      echo "</tr>";
      }
      echo "</table>";
      echo "</div>";
    

    然后只需使用样式

    div.table-container table {}
    

    【讨论】:

    • 感谢您的帮助,但我不确定您提交的内容中
      标记从哪里开始...您能澄清一下吗?
    • 哎呀,抱歉,当我添加它时代码格式变得很时髦,我没有注意到。开始 div 标记位于开始 标记的 edgo 上方。基本上这只是用一个类将你的整个表包装在一个 div 中,然后你可以像我在答案底部提到的那样从类中设置样式。
    • 让我知道它是否有效,如果不是问题是什么,也许我可以提供进一步的帮助。
    【解决方案3】:

    使用 Calum 的样式格式,您可以这样做:

    //Function that gets the SQL recordset. 
    $result2 = Get_Package_Info_EXT($conn, $var_PartNumber);
    //do the table edits here.
    echo "<style>#size{height:100px;width:340px;overflow-y:scroll;}</style>";
    echo "<table id='size' border='1'>
    <tr>
    <th>Facility</th>
    <th>Process Flow</th>
    <th>Operation</th>
    <th>Device</th>
    <th>Item</th>
    <th>Value</th>
    <th>Database Source</th>
    
    </tr>";
    
    while($row2 = oci_fetch_array($result2)){
    echo "<tr>";
    echo "<td>" . $row2['FACILITY_AT'] . "</td>";
    echo "<td>" . $row2['SUB_FLOW_TYPE'] . "</td>";
    echo "<td>" . $row2['OPN_NAME'] . "</td>";
    echo "<td>" . $row2['SPEC_DEVICE'] . "</td>";
    echo "<td>" . $row2['COMPONENT_NAME'] . "</td>";
    echo "<td>" . $row2['COMPONENT_VALUE'] . "</td>";
    echo "<td>" . $row2['SOURCE'] . "</td>";
    echo "</tr>";
    }
    echo "</table>";
    

    我测试了它并且工作正常。对于不同的表格样式,您可以:

    <style>
    #table1
    {
    style code here
    }
    
    #table2
    {
    style code here
    }
    </style>
    

    等等...然后你可以将它们应用到表格中:

    <table id="table1">
    ...
    </table>
    <table id="table2">
    ...
    </table>
    

    【讨论】:

    • 是的!这正是我打算做的。感谢大家的帮助。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签