2015-12-02 17 views
1

我正在使用數據表jQuery作爲表插件來顯示來自mysql的數據列表。它的一切都很好,劇本運行良好。但是,當iam嘗試從每一行提交數據表單時,該頁面不會加載任何內容。數據表Jquery無法從表中提交POST

這是我的源頁面。

<div id="product-grid" class="col-lg-6"> 
     <div class="txt-heading"><h3> Services </h3></div> 
     <table class="table table-striped table-bordered table-hover " id="dataTables-example"> 
     <thead> 
       <tr> 
        <th><strong>Name</strong></th> 
        <th><strong>Price</strong></th> 
        <th name="kategori"><strong>Kategori</strong></th> 
        <th><strong>Quantity</strong></th> 
        <th><strong>Action</strong></th> 
       </tr> 
     </thead> 
     <?php 
     $product_array = runQuery("SELECT * FROM menu ORDER BY id ASC"); 
     if (!empty($product_array)) { 
      foreach($product_array as $key=>$value){ 
     ?> 
     <form class="form-group" method="post" action="?action=add&code=<?php echo $product_array[$key]["code"]; ?>"> 
<tbody> 
      <tr> 
       <td><strong><?php echo $product_array[$key]["name"]; ?></strong></td> 
       <td class="product-price"><?php echo $format->angka($product_array[$key]["price"]); ?></td> 
       <td> <?php echo $product_array[$key]["kategori"]; ?> </td> 
       <td> <input type="text" name="quantity" value="1" size="2" /> </td> 
       <td> 
        <input type="submit" value="Submit" class="btn btn-primary" /> 
       </td> 
      </tr> 
     </form> 
     <?php } 
     }?> 
</tbody> 
     </table> 
    </div> 

這些代碼,我從通過index.php頁面加載admin.php的..

<link href="<?php echo ASSETS.'bootstrap/dataTables/dataTables.bootstrap.css';?>" rel="stylesheet"> 
<script src="<?php echo ASSETS.'bootstrap/js/bootstrap.min.js';?>"></script> 
<script src="<?php echo ASSETS.'bootstrap/dataTables/jquery.dataTables.js';?>"></script> 
<script src="<?php echo ASSETS.'bootstrap/dataTables/dataTables.bootstrap.js';?>"></script> 

我想要的是,當用戶點擊提交,形式郵寄到action.php的處理腳本。

三江源..

+0

任何相關的代碼,你可以發佈? – RFLdev

+0

@RFL代碼我上面的代碼是我現在的代碼。我只是卡在那個問題,我有。 –

回答

0

甲形式不允許是表,TBODY或TR的子元素。

您可以在表單中放置整個表格。你可以在表格單元格中有一個表單。你不能在表格中放置一部分表格。

在整個表格周圍使用一種形式。然後使用點擊提交按鈕來確定哪一行要處理(快速)或處理每一行(允許批量更新)。

一切都很好。把你的<form> & </form>外表。

<table></table>應該是內部<form></form>

例如:(正確的方法)

<form method="POST"> 
    <table id="mytable"> 
     <tr> 
      <td> 
      <input name="s1" type="text" /> 
      </td> 
      <td> 
      <input name="s2" type="text" /> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2"> 
      <input type="submit" name="submit" value="insert" /> 
      </td> 
     </tr> 
    </table> 
</form> 

而且,這是錯誤的做法。

<table id="mytable"> 
    <form method="POST"> 
     <tr> 
      <td> 
       <input name="s1" type="text" /> 
      </td> 
      <td> 
       <input name="s2" type="text" /> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2"> 
       <input type="submit" name="submit" value="insert" /> 
      </td> 
     </tr> 
    </form> 
</table> 

欲瞭解更多信息,請Can't put PHP form in a table & Form doesn't accept all inputs rows in my form

由於OP要求做的方式。

我的意見是,使用<table></table>只顯示數據。因爲<table></table>以內不能使用<form></form>。製作一列動作,您可以在其中使用該行ID將值傳遞給其他頁面。並且,在該頁面(我寫的其他頁面)中,顯示該產品的數據(如果需要),包括Quantity以提交。這只是一個建議。希望你能理解。

<div id="product-grid" class="col-lg-6"> 
    <div class="txt-heading"><h3> Services </h3></div> 
     <table class="table table-striped table-bordered table-hover " id="dataTables-example"> 
      <thead> 
       <tr> 
       <th><strong>Name</strong></th> 
       <th><strong>Price</strong></th> 
       <th name="kategori"><strong>Kategori</strong></th> 
       <th><strong>Action</strong></th> 
       </tr> 
      </thead> 
      <tbody> 
      <?php 
      $product_array = runQuery("SELECT * FROM menu ORDER BY id ASC"); 
      if (!empty($product_array)) { 
       foreach($product_array as $key=>$value) { 
       ?> 
        <tr> 
         <td><strong><?php echo $product_array[$key]["name"]; ?></strong></td> 
         <td class="product-price"><?php echo $format->angka($product_array[$key]["price"]); ?></td> 
         <td><?php echo $product_array[$key]["kategori"]; ?> </td> 
         <td> 
          <a href="Edit-Somepage.php?id=<?php echo $product_array[$key]["id"]; ?>">Edit</a> 
         </td> 
        </tr> 
       <?php } 
      }?> 
      </tbody> 
     </table> 
    </div> 
</div> 

編輯-Somepage.php

<? 
$id=$_GET['id']; 
$product_array = runQuery("SELECT * FROM menu WHERE id='$id'"); 
foreach($product_array as $key=>$value) { 
    $product_name=$product_array[$key]["name"]; 
    $product_price=$format->angka($product_array[$key]["price"]); 
} 
?> 
<form class="form-group" method="post" action="submit-SomePage.php"> 
    <?echo $product_name;?><br> 
    <?echo $product_price;?><br> 
    <input type='hidden' value="<?echo $id;?>" name='ProductId'> 
    <input type="text" name="quantity" value="1" size="2" /> <br> 
    <input type="submit" value="Submit" class="btn btn-primary" /> 
</form> 

提交 - SomePage的。PHP

<? 
$product_id=$_POST['ProductId']; 

using this $product_id save/update/submit product. 
//Update Query. 
?> 
+0

謝謝你的答案,但另一個問題是。我需要使用dataTables jQuery插件作爲我的表格腳本。這些腳本幫助我縮短表格的數據。例如,要使用數據表,我必須使用

......表格的內容.....
。 如果我像上面的答案分開表格,每行的結果將顯示在不同的表格中... –

+0

Hi @pitokeraf:是的,使用它。但是,只是爲了顯示數據。製作一列「行動」。其中您將該行的Id傳遞給其他頁面以提交數據。因爲,不可能在'

'的任何子元素內使用'
'。希望你能理解。 –

+0

對不起,你的意思是我必須做另一頁來處理數據?我擁有它。我已將此頁面包含在表單操作中。或者你可以用一個示例代碼向我解釋?請幫助我.... –

0
try this code 

<form action="" method ="POST"> 
    <table border="1"> 
     <tr> 
     <td> 
      <input type="text" name="usrname" /> 
     </td> 
     </tr> 
     <tr> 
     <td> 
      <input type="text" name="email" /> 
     </td> 
     </tr> 
     <tr> 
     <td> 
      <input type="password" name="password" /> 
     </td> 
     </tr> 
     <tr> 
     <td colspan="3"> 
      <input type="submit" name="submit_btn" value="login" > 
     </td> 
     </tr> 
    </table> 
</form> 
+0

感謝您的回答.. 是的,那是正確的,如果只有一兩行。來自數據庫的結果如何?我們必須使用foreach或while ... 我的意思是,每一行都有一個提交帖子。 –

0

獲得幫助的形式@nana答案,你可以這樣做

形式是無效的孩子,但在

<tr> 
<td> some field 
<td> some other field 
<td> **<form method="post">**somefield, some hidden field**</form>** 
</td> 

有效這種方式你表單元素是有效的。您可以包含您需要的隱藏元素,因此可以從jQuery DataTable中提交表單。