2014-07-09 28 views
1

代码order.html.php:在显影工具呈现改变DOM当加入输入字段形式的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>  

看到的位置提交并为了。 html.php和导致的dom。 由于这种dom结构,order.html.php无法提交驻留在输入字段中的值。

这里是后与相关的问题,但没有什么是代表在这里, Retrieve data from HTML table to PHP

+1

您的HTML无效,这就是原因。 –

+0

html有效。现在看@think – devprashant

+0

不,它不是@devprashant。看看你的HTML *** >>> ***你不能把表格标签放在thead后面,你不能在关闭tr –

回答

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> 
+0

它不起作用 – devprashant

+0

现在生成的代码是什么? –

+0

与之前相同。看到上面有人给出了它背后的原因。 – devprashant

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 
) 

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