【问题标题】:Submit button in HTML table not showingHTML表格中的提交按钮未显示
【发布时间】:2025-12-31 22:45:01
【问题描述】:

我正在尝试将一个按钮添加到从数据库动态填充的表格的末尾,但是当我尝试添加那个简单的按钮时,我只会在表格 td 中得到如下所示的打印文本,而不是实际的按钮。

<button type="submit" class="btn btn-primary" ><i class="far fa-eye"></i><?php echo $field7name ?></button>

我知道我做错了什么,但我真的不知道是什么。

我能做什么?

这就是我现在所拥有的。

<?php 
$query1 = "SELECT * FROM ff_ppomoc WHERE idupor != 0 ORDER BY id ASC";

echo '<table 
       id="table1" 
     data-toggle="table"
             data-search="false"
             data-filter-control="true" 
             data-show-export="false"
             data-click-to-select="false"
             data-toolbar="#toolbar"
       data-show-columns="false"
       data-checkbox-header="false"
       data-pagination="true"
       data-show-pagination-switch="false"
                    
       data-show-refresh="false"
       data-show-toggle="false"
       data-sort-name="name"
       data-sort-order="desc"
       
       data-actions="edit,remove"
       data-url="index.php"
       >
      
    <thead>
        <tr>
      <th data-field="id"></th>
            <th data-field="dst" data-filter-control="input" data-sortable="true">Davčna št.</th>
            <th data-field="davcna" data-filter-control="input" data-sortable="true">Ime in priimek</th>
            <th data-field="imepriimek" data-filter-control="select" data-sortable="true">Vloga v postopku</th>
            <th data-field="vloga" data-filter-control="select" data-sortable="true">Oblika pomoči</th>
            <th data-field="oblikapomoci" data-filter-control="select" data-sortable="true">Leto uvedbe postopka</th>
      <th data-field="vsebina" data-filter-control="input" data-sortable="false">Vsebina</th>
      <th data-field="moznosti"></th>
      </tr>
    </thead>';

        if ($result1 = $mysqli->query($query1)) {
    while ($row = $result1->fetch_assoc()) {
        $field1name = $row["ime"];
        $field2name = $row["priimek"];
        $field3name = $row["ravenpomoci"];
        $field4name = $row["dst"];
        $field5name = $row["idupor"]; 
        $field6name = $row["vlogavpostopku"]; 
        $field7name = $row["id"]; 
        $field8name = $row["oblikapomoci"]; 
        $field9name = $row["letouvedbepostopka"]; 
        $field10name = $row["povzetek"]; 
       
      ?>
        
        <tr>
           <form action="index.php?id=<?php echo $id;?>" method="post">
                <input type="hidden" name="td_1" value="'.$field7name.'">
                <td><?php echo $field7name ?></td> 
                <td><?php echo $field4name ?></td> 
                <td><?php echo $field1name ?>  <?php echo $field2name ?></td> 
                <td><?php echo $field6name ?></td> 
                <td><?php echo $field8name ?></td> 
                <td><?php echo $field9name ?></td> 
                <td><?php echo $field10name ?></td> 
                <?php $td1 = $_POST['td_1'] ?>
                <td><button type="submit" class="btn btn-primary" ><i class="far fa-eye"></i><?php echo $field7name ?></button></td>
           </form>
          </tr>
  
      <?php
  
    }
    $result->free();
} 




?>  

【问题讨论】:

  • 表单不能是 tr 元素的子元素。它必须包含整个表格,或者放在单个 td 中。
  • 感谢您的回答。我知道我在做很多错误的事情。如何在表格行的最后一个 td 中正确添加一个按钮,该按钮在另一个 php 文件中发布该行的 ID?

标签: php button html-table


【解决方案1】:

根据@El_Vanja 的评论,试试这个

此解决方案将表单元素移动到表格之外

额外清理:

  • 关闭表格标签
  • 首先将隐藏字段移到内部td
<?php 
$query1 = "SELECT * FROM ff_ppomoc WHERE idupor != 0 ORDER BY id ASC";

echo '
           <form action="index.php?id=<?php echo $id;?>" method="post"><table 
       id="table1" 
     data-toggle="table"
             data-search="false"
             data-filter-control="true" 
             data-show-export="false"
             data-click-to-select="false"
             data-toolbar="#toolbar"
       data-show-columns="false"
       data-checkbox-header="false"
       data-pagination="true"
       data-show-pagination-switch="false"
                    
       data-show-refresh="false"
       data-show-toggle="false"
       data-sort-name="name"
       data-sort-order="desc"
       
       data-actions="edit,remove"
       data-url="index.php"
       >
      
    <thead>
        <tr>
      <th data-field="id"></th>
            <th data-field="dst" data-filter-control="input" data-sortable="true">Davčna št.</th>
            <th data-field="davcna" data-filter-control="input" data-sortable="true">Ime in priimek</th>
            <th data-field="imepriimek" data-filter-control="select" data-sortable="true">Vloga v postopku</th>
            <th data-field="vloga" data-filter-control="select" data-sortable="true">Oblika pomoči</th>
            <th data-field="oblikapomoci" data-filter-control="select" data-sortable="true">Leto uvedbe postopka</th>
      <th data-field="vsebina" data-filter-control="input" data-sortable="false">Vsebina</th>
      <th data-field="moznosti"></th>
      </tr>
    </thead>';


        if ($result1 = $mysqli->query($query1)) {
    while ($row = $result1->fetch_assoc()) {
        $field1name = $row["ime"];
        $field2name = $row["priimek"];
        $field3name = $row["ravenpomoci"];
        $field4name = $row["dst"];
        $field5name = $row["idupor"]; 
        $field6name = $row["vlogavpostopku"]; 
        $field7name = $row["id"]; 
        $field8name = $row["oblikapomoci"]; 
        $field9name = $row["letouvedbepostopka"]; 
        $field10name = $row["povzetek"]; 
       
      ?>
        
        <tr>
                <td><input type="hidden" name="td_1" value="'.$field7name.'">
<?php echo $field7name ?></td> 
                <td><?php echo $field4name ?></td> 
                <td><?php echo $field1name ?>  <?php echo $field2name ?></td> 
                <td><?php echo $field6name ?></td> 
                <td><?php echo $field8name ?></td> 
                <td><?php echo $field9name ?></td> 
                <td><?php echo $field10name ?></td> 
                <?php $td1 = $_POST['td_1'] ?>
                <td><button type="submit" class="btn btn-primary" ><i class="far fa-eye"></i><?php echo $field7name ?></button></td>
          </tr>
  
      <?php
  
    }
    $result->free();
} ?>

</table>
</form>

【讨论】:

  • 感谢您的帮助。但仍然只得到文本而不是按钮
  • 我已经编辑了好几次,所以用我最新的草稿再试一次。此外,这是在无法正确测试的情况下发布的,只是确保语法 appears 正确。我看到的主要问题是您试图将元素放在不允许的位置(即在trtd 之间,而不是在td 内。很可能您的问题与语法有关。
  • 我也想到了,虽然没有列出,但如果你使用某种形式的 CMS,例如 WordPress 或 Laravel,它实际上可能是通过清理“可怕”的 HTML 标签来“帮助”保护从注射...
  • 现在我得到这个文本: 在第一个字段中。我不明白为什么要打印文本而不是执行代码...
  • 这是主要问题。当我在 td 中放入代码时,它会像文本一样显示,而不像在我的情况下执行的代码是按钮
【解决方案2】:

发现问题

这在 th 中丢失了:

data-field="action" data-formatter="actionFormatter" data-events="actionEvents" data-footer-formatter="footerFormatter"

感谢大家的努力,祝您假期愉快健康:)

【讨论】:

    【解决方案3】:

    我所做的更改:

    • 标签&lt;form&gt;封装了整个&lt;table&gt;
    • $id 移出表单的 action 并将其作为隐藏输入之一
    • echo中提取了&lt;table&gt;,全部都是html
    • 创建缺少&lt;tbody&gt;
    • 将所有hidden 输入移至最后一个表数据现在包含所有hidden 输入,即$id
    • 更多的是我在行的开头和分号;和php语句的结尾处使用了代码缩进

    注意:$id 未在您的代码中定义 注意2:您可能必须使用提交行的唯一标识符

    <form action="index.php" method="post">
    <table 
        id="table1" 
        data-toggle="table"
        data-search="false"
        data-filter-control="true" 
        data-show-export="false"
        data-click-to-select="false"
        data-toolbar="#toolbar"
        data-show-columns="false"
        data-checkbox-header="false"
        data-pagination="true"
        data-show-pagination-switch="false"
            
        data-show-refresh="false"
        data-show-toggle="false"
        data-sort-name="name"
        data-sort-order="desc"
    
        data-actions="edit,remove"
        data-url="index.php"
    >  
        <thead>
            <tr>
                <th data-field="id"></th>
                <th data-field="dst" data-filter-control="input" data-sortable="true">Davčna št.</th>
                <th data-field="davcna" data-filter-control="input" data-sortable="true">Ime in priimek</th>
                <th data-field="imepriimek" data-filter-control="select" data-sortable="true">Vloga v postopku</th>
                <th data-field="vloga" data-filter-control="select" data-sortable="true">Oblika pomoči</th>
                <th data-field="oblikapomoci" data-filter-control="select" data-sortable="true">Leto uvedbe postopka</th>
                <th data-field="vsebina" data-filter-control="input" data-sortable="false">Vsebina</th>
                <th data-field="moznosti"></th>
            </tr>
        </thead>
        <tbody>
    <?php 
    $query1 = "SELECT * FROM ff_ppomoc WHERE idupor != 0 ORDER BY id ASC";
    
    if ($result1 = $mysqli->query($query1)) {
        while ($row = $result1->fetch_assoc()) {
            $field1name = $row["ime"];
            $field2name = $row["priimek"];
            $field3name = $row["ravenpomoci"];
            $field4name = $row["dst"];
            $field5name = $row["idupor"]; 
            $field6name = $row["vlogavpostopku"]; 
            $field7name = $row["id"]; 
            $field8name = $row["oblikapomoci"]; 
            $field9name = $row["letouvedbepostopka"]; 
            $field10name = $row["povzetek"]; 
            ?>
            <tr>
                <td><?php echo $field7name; ?></td> 
                <td><?php echo $field4name; ?></td> 
                <td><?php echo $field1name; ?>  <?php echo $field2name; ?></td> 
                <td><?php echo $field6name; ?></td> 
                <td><?php echo $field8name; ?></td> 
                <td><?php echo $field9name; ?></td> 
                <td><?php echo $field10name; ?></td>
                <td>
                    <?php $td1 = $_POST['td_1']; ?>
                    <input type="hidden" name="id" value="<?php echo $id; ?>">
                    <input type="hidden" name="td_1" value="<?php echo $field7name; ?>">
                    <button type="submit" class="btn btn-primary" ><i class="far fa-eye"></i><?php echo $field7name; ?></button>
                </td>
            </tr>
          <?php
      
        }
        $result->free();
    }
    ?>
        </tbody>
    </table>
    </form>
    

    【讨论】: