【问题标题】:php echo in html tablehtml表中的php回显
【发布时间】:2016-02-11 04:16:33
【问题描述】:

我对 html 和 php 还很陌生,我尝试了一些尝试来实现我想要的东西,但它从来没有奏效。

这是一个购物车,我正在尝试使用 php 在表格中显示来自 mysql 的数据,如果我没有其他要在表格中显示的元素($value 和 $ sub) 不存储在 mysql 中而是计算。

当我不尝试在表格中显示它时,它一切正常,当我添加表格时,我只能让“名称”显示在表格中,如果我尝试包含其他任何内容,它会失败。

下面的代码在表名列下显示'name',接下来要显示的将是数量下的'$value'等等(还没有添加更多列)

foreach($_SESSION as $name => $value) {
    if ($value>0) {
        if (substr($name, 0, 5)=='cart_') {
            $id = substr($name, 5, (strlen($name)-5));
            $get = mysql_query('SELECT id_product, name, price FROM elec_guit WHERE id_product='.($id));
            while ($get_row = mysql_fetch_assoc($get)) {
                $sub = $get_row['price']*$value;

?>

<div class="table">
<table>
    <tr>
        <td>Name</td>
        <td>Quantity</td>
    </tr>
    <tr>

<?php                   echo '<td>' .$get_row['name']. '</td>' .$value. ' @ &dollar;'.number_format($get_row['price'], 2). ' = &dollar;'.number_format($sub, 2).' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'" >[Delete]</a><br />';
            }
        }
        $total += $sub;

    }
}
?>


    </tr>
</table>

【问题讨论】:

  • 首先你的表格标签应该在循环之外,它会弄乱布局并且会一次又一次地创建表格。
  • 是的,开始表标签需要在循环开始之前出现。此外,表中的每条数据都应该在 &lt;td&gt;...&lt;/td&gt; 标签内,而这些标签本身也在 &lt;tr&gt;...&lt;/tr&gt; 标签内。如果您的表中有两列,那么每个表行 (&lt;tr&gt;...&lt;/tr&gt;) 应该正好包含两个 &lt;td&gt;...&lt;/td&gt; 元素。在您的 echo 语句中,您有一些不在 &lt;td&gt; 元素内的数据。表格中不能有不在&lt;td&gt; 元素内的文本。解决这个问题,你会没事的。请参阅w3schools.com/html/html_tables.asp 以尝试一些表格示例。
  • 查看实际情况的一种简单方法是在网络浏览器中打开您的页面并选择“查看源代码”以查看 html 代码。

标签: php html mysql


【解决方案1】:

正确呈现列和行的可能代码。

<div class="table">
<table>
    <tr>
        <td>Name</td>
        <td>Quantity</td>
    </tr>

foreach($_SESSION as $name => $value) {
    if ($value>0) {
        if (substr($name, 0, 5)=='cart_') {
            $id = substr($name, 5, (strlen($name)-5));
            $get = mysql_query('SELECT id_product, name, price FROM elec_guit WHERE id_product='.($id));
            while ($get_row = mysql_fetch_assoc($get)) {
                $sub = $get_row['price']*$value;

?>


    <tr>

<?php                   echo '<td>' .$get_row['name']. '</td>' .$value. ' @ &dollar;'.number_format($get_row['price'], 2). ' = &dollar;'.number_format($sub, 2).' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'" >[Delete]</a><br />';
            }
        }
        $total += $sub;

    }
}
?>
    </tr>
</table>

谢谢 阿米特

【讨论】:

  • 感谢您的提示,将其更改为您的建议并且仍然可以正常工作,尽管我仍然不确定如何在“名称”之后显示任何内容。
  • 如果你想在名字旁边显示任何东西,你需要用 标签创建新列,如果你想在名字之后显示任何东西而不是你需要插入它自己的名字列,我正在添加另一个答案来证明这一点。
【解决方案2】:

我想告诉你的第一件事是mysql_*PHP 5.5 开始正式弃用。并从PHP 7.0 完全删除。所以请不要使用它。

参考:http://php.net/manual/en/migration55.deprecated.php

对于mysqli_*http://php.net/manual/en/book.mysqli.php

现在关于你的代码:

您在循环中使用table 标记。这将生成多个表。试试这段代码:

<div class="table">
<table>
    <tr>
        <td>Name</td>
        <td>Quantity</td>
    </tr>
<?php
foreach($_SESSION as $name => $value) {
    if ($value>0) {
        if (substr($name, 0, 5)=='cart_') {
            $id = substr($name, 5, (strlen($name)-5));
            $get = mysql_query("SELECT id_product, name, price FROM elec_guit WHERE id_product='$id'");
            while ($get_row = mysql_fetch_assoc($get)) {
                $sub = $get_row['price']*$value;


echo '<tr><td>' . $get_row['name']. '</td>' .
'<td>' . $value. ' @ &dollar;'.number_format($get_row['price'], 2). 
' = &dollar;'.number_format($sub, 2).' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a>'
 '<a href="cart.php?delete='.$id.'" >[Delete]</a></td></tr>';
            }
        }
        $total += $sub;

    }
}
?>

</table>

【讨论】:

  • 感谢您提供的信息,我一定会阅读并更新 :)
  • 你的问题呢?
【解决方案3】:

根据您的评论添加了新代码。

    <div class="table">
<table>
    <tr>
        <td>Name</td>
        <td>Quantity</td>
    </tr>

foreach($_SESSION as $name => $value) {
    if ($value>0) {
        if (substr($name, 0, 5)=='cart_') {
            $id = substr($name, 5, (strlen($name)-5));
            $get = mysql_query('SELECT id_product, name, price FROM elec_guit WHERE id_product='.($id));
            while ($get_row = mysql_fetch_assoc($get)) {
                $sub = $get_row['price']*$value;

?>


    <tr>

<?php                   echo '<td>' .$get_row['name']. $value. ' @ &dollar;'.number_format($get_row['price'], 2). ' = &dollar;'.number_format($sub, 2).' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'" >[Delete]</a><br /></td> </tr>';
            }
        }
        $total += $sub;

    }
}
?>



</table>

【讨论】:

    【解决方案4】:

    我将表格移到您的循环之外,这将解决您的大部分问题。另一个问题是您只有一个 &lt;td&gt; 将 name 列包装在 while 循环中,但您没有 &lt;td&gt; 将其他信息包装在该行中,因此我将其包装了。

    <div class="table">
        <table>
            <tr>
                <td>Name</td>
                <td>Quantity</td>
            </tr>
    
                <?php
                foreach($_SESSION as $name => $value) {
                    if ($value>0) {
                        if (substr($name, 0, 5)=='cart_') {
                            $id = substr($name, 5, (strlen($name)-5));
                            $get = mysql_query('SELECT id_product, name, price FROM elec_guit WHERE id_product='.($id));
                            while ($get_row = mysql_fetch_assoc($get)) {
                                $sub = $get_row['price']*$value;
                                echo '<tr><td>' . $get_row['name']. '</td>' .
                                     '<td>' . $value. ' @ &dollar;'.number_format($get_row['price'], 2). 
                                     ' = &dollar;'.number_format($sub, 2).' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a>'
                                     '<a href="cart.php?delete='.$id.'" >[Delete]</a></td></tr>';
                            }
                        }
                    }
                }
                ?>
        </table>    
    </div>
    

    【讨论】:

    • 太棒了!我知道我只在我的 while 循环中添加了一个 ,我没有再添加任何内容,因为它不能与第一个相比,它是每个 之后的句号,我失踪了,最终解决了它。谢谢! @杰西
    【解决方案5】:

    使用下面的代码:

    <div class="table">
        <table>
        <tr>
            <td>Name</td>
            <td>Quantity</td>
        </tr>
    
    <?php   
            foreach($_SESSION as $name => $value) {
            if ($value>0) {
            if (substr($name, 0, 5)=='cart_') {
                $id = substr($name, 5, (strlen($name)-5));
                $get = mysql_query('SELECT id_product, name, price FROM elec_guit WHERE id_product='.($id));
                while ($get_row = mysql_fetch_assoc($get)) {
                    $sub = $get_row['price']*$value;
                    
    ?>
        <tr>
            <td><?php echo $get_row['name']; ?></td>
            <td><?php echo $value;?> @ &dollar;<?php echo number_format($get_row['price'], 2); ?> = &dollar;<?php echo number_format($sub, 2); ?> <a href="cart.php?remove=<?php echo $id; ?>">[-]</a> <a href="cart.php?add=<?php echo $id; ?>">[+]</a> <a href="cart.php?delete=<?php echo $id; ?>" >[Delete]</a><br /></td>
        </tr>
            <?php   }
            }
            $total += $sub;
            
        }
    }
    ?>
        </table>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      相关资源
      最近更新 更多