添加输入字段表单php时更改了dom

时间:2014-07-09 10:04:56

标签: php html html-table html-tableextract

order.html.php的代码:

<body>
<p> Place order</p>

<table>
    <thead>
        <tr>
            <th>Item No.</th>
            <th>Name</th>
            <!--<th>Mrp</th>-->
            <th>Price</th>
            <th>Quantity</th>
        </tr>
    </thead>
    <form id="form1" action="" method="post" >
        <tbody>
            <?php $id = 0 ;foreach ($dataProduct as $productData): ?>
            <tr>
                <td><?php echo ++$id ; ?></td>
                <td><?php echo $productData['productName']; ?></td>
                <td><?php echo $productData['productPrice'];?></td>
                <td><input type="number" name="<?php echo $productData['productId']; ?>"/></td>
            </tr>
        <?php endforeach; ?>
        <div><input type="hidden" name="add" value="placeorder"/>
            <input type="submit"  value="Place Order"/>
            <div>
            </tbody>
        </form>
    </table>
</body>
开发者工具中提供的

和dom是:

<body>
<p> Place order</p>

<div><input type="hidden" name="add" value="placeorder">
            <input type="submit" value="Place Order">
            <div>
            </div></div>
 <table>
    <thead>
        <tr>
            <th>Item No.</th>
            <th>Name</th>
            <!--<th>Mrp</th>-->
            <th>Price</th>
            <th>Quantity</th>
        </tr>
    </thead>
    <form id="form1" action="" method="post" ></form>
        <tbody>
                            <tr>
                <td>1</td>
                <td>hp keyboard old</td>
                <td>400</td>
                <td><input type="number" name="1"></td>
            </tr>
                        <tr>
                <td>2</td>
                <td>lenovo keyboard old</td>
                <td>450</td>
                <td><input type="number" name="2"></td>
            </tr>
                        <tr>
                <td>3</td>
                <td>kaspersky antivirus</td>
                <td>430</td>
                <td><input type="number" name="9"></td>
            </tr>
                    </tbody>

    </table>

   </body>    

查看提交的位置以及order.html.php和结果dom。 因为这个dom结构order.html.php无法提交驻留在输入字段中的值。

这里是相关问题的帖子,但不完全代表这里的内容, Retrieve data from HTML table to PHP

2 个答案:

答案 0 :(得分:0)

尝试正确的html结构:

     <body>
        <p> Place order</p>
        <form id="form1" action="" method="post" >
        <table>
            <thead>
                <tr>
                    <th>Item No.</th>
                    <th>Name</th>
                    <!--<th>Mrp</th>-->
                    <th>Price</th>
                    <th>Quantity</th>
                </tr>
            </thead>

                <tbody>
                    <?php $id = 0 ;foreach ($dataProduct as $productData): ?>
                    <tr>
                        <td><?php echo ++$id ; ?></td>
                        <td><?php echo $productData['productName']; ?></td>
                        <!--<td><?php echo $productData['mrp']; ?></td>-->
                        <td><?php echo $productData['productPrice'];?></td>
                        <td><input type="number" name="<?php echo $productData['productId']; ?>"/></td>
                    </tr>
                <?php endforeach; ?>
                <tr>
                <td colspan="4">
                    <input type="hidden" name="add" value="placeorder"/>
                    <input type="submit"  value="Place Order"/>
                </td></tr>                
            </tbody>

           </table>
        </form>
</body>

答案 1 :(得分:0)

  • 首先,只需使用<form>标记打包表格。
  • 其次,使用productId作为name="$productId"并不是很好,而是使用name="products[$productId]"这样的内容,以便在表单提交后,将它们分组到与数组相同的变量。

示例代码:Sample Demo

$dataProduct = array(
    array('productId' => 1, 'productName' =>'hp keyboard old',  'productPrice' => 400),
    array('productId' => 2, 'productName' =>'lenovo keyboard old', 'productPrice' => 430),
    array('productId' => 9, 'productName' => 'kaspersky antivirus', 'productPrice' => 430),
);

if(isset($_POST['submit'])) {
    $values = $_POST['products']; // get all the grouped values
    $total = array();
    foreach($values as $productId => $quantity) { // loop values
        foreach($dataProduct as $productData) {
            if($productData['productId'] == $productId) {
                // simple multiplication, quantitiy times price for each item
                $total[$productId] = $productData['productPrice'] * $quantity;
            }   
        }
    }

    echo '<pre>';
    print_r($total);
    echo '</pre>';
}

?>

<form method="POST">
<table cellpadding="10">
    <thead>
        <tr>
            <th>Item No.</th>
            <th>Name</th>
            <!--<th>Mrp</th>-->
            <th>Price</th>
            <th>Quantity</th>
        </tr>
    </thead>
    <tbody>
        <?php $id = 0 ; foreach($dataProduct as $productData): ?>
        <tr>
            <td><?php echo ++$id ; ?></td>
            <td><?php echo $productData['productName']; ?></td>
            <td><?php echo $productData['productPrice'];?></td>
            <td><input type="number" name="products[<?php echo $productData['productId']; ?>]"/></td>
        </tr>
        <?php endforeach; ?>
        <tr>
            <td><input type="submit" name="submit" /></td>
        </tr>
    </tbody>
</table>
</form>

例如,在表单中,我输入了所有文本框,数量为2. print_r()应该像这样产生:

Array
(
    [1] => 800
    [2] => 860
    [9] => 860
)
  

指数作为键,值是每个数量乘以价格的总数