Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何摆脱<;t车身>;及</t车身>;HTML表标记,但不删除标记内的内容?_Php_Html_Html Table_Html Tbody - Fatal编程技术网

Php 如何摆脱<;t车身>;及</t车身>;HTML表标记,但不删除标记内的内容?

Php 如何摆脱<;t车身>;及</t车身>;HTML表标记,但不删除标记内的内容?,php,html,html-table,html-tbody,Php,Html,Html Table,Html Tbody,我已经看了一些关于删除table-tbody标记的其他问题(见下文),但仍然遇到了一个问题 执行SQL查询后,我想生成一个包含结果的HTML表,然后通过将类似行包装在tbody/tbody标记中来对它们进行分组,以便使用CSS奇偶表示法对这些组进行颜色编码 我的javascript函数可以很好地实现这一点,但问题是,当第一次生成行时,Chrome浏览器将它们包装在tbody/tbody标记中。因此,最后我只剩下下面的HTML和一组额外的外部tbody标记(这会弄乱表中的列对齐方式,并且无法

我已经看了一些关于删除table-tbody标记的其他问题(见下文),但仍然遇到了一个问题

执行SQL查询后,我想生成一个包含结果的HTML表,然后通过将类似行包装在tbody/tbody标记中来对它们进行分组,以便使用CSS奇偶表示法对这些组进行颜色编码

我的javascript函数可以很好地实现这一点,但问题是,当第一次生成行时,Chrome浏览器将它们包装在tbody/tbody标记中。因此,最后我只剩下下面的HTML和一组额外的外部tbody标记(这会弄乱表中的列对齐方式,并且无法正确显示)

(*我想去掉外部的tbody标记集*)


我意识到我可以在用来显示表行的php中加入一些逻辑,并尝试以这种方式插入开始和结束tbody标记,这样就永远不会生成外部集,但只显示所有行,然后再对它们进行分组会更干净一些

是否可以在不移除外部t车身标签之间的内容的情况下移除外部t车身标签?谢谢

html文件


ng
氢火焰离子化检测器
盖子
wrapRows();
js文件

function wrapRows(){
    $('#all_funds_table tr.gpRep').each(function(){
        $(this).nextUntil('.gpRep').add(this).wrapAll('<tbody />');
    });
} 
函数wrapRows(){
$(“#所有_基金_表tr.gpRep”)。每个(函数(){
$(this.nextUntil('.gpRep').add(this.wrapAll('');
});
} 
使用Javascript 接受所需的
,并在迭代时将行移到其外部。完成后,移除原始的

请注意,在每种情况下,都需要在调用
nextUntil
后重新添加第一行

$('#all_funds_table tr.gpRep').each(function(){
    $(this).nextUntil('.gpRep').addBack().wrapAll('<tbody />')
        .parent().appendTo($('#all_funds_table'));
});
$('#all_funds_table tbody:first').remove();
$('all#funds_table tr.gpRep')。每个(函数(){
$(this).nextUntil('.gpRep').addBack().wrapAll('')
.parent().appendTo($(“#所有_基金_表”);
});
$(“#所有_基金_表主体:第一个”).remove();
使用PHP 没有任何理由不首先输出
标记。这将节省浏览器中的处理时间

    <?php                
        if ($result = $connection->query($sql)) {
            $first = true;
            while ($row = $result->fetch_assoc()) {
                // only display rows with ng = 1
                if ($row['ng'] == 1) {
                    if (!$first) { echo '</tbody>'; }
                    $first = false;
    ?>
                    <tbody>
                    <tr class="gpRep">
                        <td style = "text-align: center"><?= $row['ng'] ?></td>
                        <td style = "text-align: center"><a href="group.php?FID=<?php echo $row['FID']; ?>"><?= $row['FID'] ?></a></td>
                        <td style = "text-align: center"><a href="fund.php?lid=<?php echo $row['lid']; ?>"><?= $row['lid'] ?></a></td>
                    </tr>                  

    <?php
                // collapse rows with ng != 1
                } else {
    ?>

                    <tr class="collapse">
                        <td style = "text-align: center"><?= $row['ng'] ?></td>
                        <td style = "text-align: center"><a href="group.php?FID=<?php echo $row['FID']; ?>"><?= $row['FID'] ?></a></td>
                        <td style = "text-align: center"><a href="fund.php?lid=<?php echo $row['lid']; ?>"><?= $row['lid'] ?></a></td>
                    </tr>  
    
    <?php

                } // end if ($row['ng'] == 1)

            } // end while
            $result->free();
        } // end if
    
        if ($mysqli->connect_error) {
            die("Connection failed: " . $mysqli->connect_error);
        }
        
        $connection->close();
    ?>
    <!-- close connection  -->
    <!-- </tbody> -->
    <script type="text/javascript">
        wrapRows();
    </script>
</tbody>
</table>

wrapRows();

这种HTML和PHP的混合并不特别容易阅读。根据需要输出的数据量,您可能会发现,首先以所需格式将信息加载到数组中,然后将数组转换为HTML输出会更整洁。

Chrome会尝试修复格式不正确的标记。如果您在浏览器中看到的标记不是您想要的,则说明您的html中存在错误。请在PHP中添加正确的
tbody
标记。非常感谢。我在想,如果tbody标记本身不能被删除,那么我可以将行移到它们之外,然后只删除原始的tbody元素,但我不知道该怎么做。您的javascript解决方案工作得非常好。我同意你的观点,html和php的混合有点难读。我将首先考虑将期望的输出加载到数组中。再次感谢。最终使用此解决方案来显示、隐藏行并对行进行颜色编码,从而消除了多组正文标记。但再次感谢你的帮助,马特$奇数=假;while($row=$result->fetch_assoc()){if($row['ng']==1){$odd=!$odd;}//end if($row['ng']==1)?>
    <?php                
        if ($result = $connection->query($sql)) {
            $first = true;
            while ($row = $result->fetch_assoc()) {
                // only display rows with ng = 1
                if ($row['ng'] == 1) {
                    if (!$first) { echo '</tbody>'; }
                    $first = false;
    ?>
                    <tbody>
                    <tr class="gpRep">
                        <td style = "text-align: center"><?= $row['ng'] ?></td>
                        <td style = "text-align: center"><a href="group.php?FID=<?php echo $row['FID']; ?>"><?= $row['FID'] ?></a></td>
                        <td style = "text-align: center"><a href="fund.php?lid=<?php echo $row['lid']; ?>"><?= $row['lid'] ?></a></td>
                    </tr>                  

    <?php
                // collapse rows with ng != 1
                } else {
    ?>

                    <tr class="collapse">
                        <td style = "text-align: center"><?= $row['ng'] ?></td>
                        <td style = "text-align: center"><a href="group.php?FID=<?php echo $row['FID']; ?>"><?= $row['FID'] ?></a></td>
                        <td style = "text-align: center"><a href="fund.php?lid=<?php echo $row['lid']; ?>"><?= $row['lid'] ?></a></td>
                    </tr>  
    
    <?php

                } // end if ($row['ng'] == 1)

            } // end while
            $result->free();
        } // end if
    
        if ($mysqli->connect_error) {
            die("Connection failed: " . $mysqli->connect_error);
        }
        
        $connection->close();
    ?>
    <!-- close connection  -->
    <!-- </tbody> -->
    <script type="text/javascript">
        wrapRows();
    </script>
</tbody>
</table>