2009-11-30 56 views
0

請有人可以給我幫助。如何在提交後檢查表格單元格中獲取數據

這裏是我的基本的HTML

<form action="addSomething.php" method="POST"> 
<table> 
<tr> 
    <th>Add Data</th> 
    <th>Description</th> 
    <th>Quantity</th> 
</tr> 

<tr> 
    <td><input type="checkbox" name="data[]" value="sample1" /> </td> 
    <td class="desc">Newbie</td> 
    <td>2</td> 
</tr> 

<tr> 
<td><input type="checkbox" name="data[]" value="sample1" /> </td> 
<td class="desc">Pro</td> 
<td>1</td> 
</tr> 

<tr> 
<td><input type="checkbox" name="data[]" value="sample1"/> </td> 
<td class="desc" > Master </td> 
<td>1</td> 
</tr> 

<br/> 
    <input type="submit" name="add" value="SUBMIT"/> 
..... 

我怎樣才能得到一個與類「遞減」和被提交表單

因爲後檢查數量列只有當我在mysql中查詢時可以添加複選框的值,但我也想要在「說明」列和「數量」列中的數據值

在我addSomething.php我的代碼是

if(isset($_POST['add'])) 
     { 

      foreach($_POST['data'] as $value) 
      { 

      $sql = "INSERT INTO tablename (column1) VALUES('$value');" 

       //query stuff 
      } 

     } 

我會做什麼,任何提示的傢伙?

回答

0

你可以做的是寫JavaScript,觸發一個AJAX請求到你的服務器。

否則,您將無法在提交前獲取值。

0

這是迄今爲止,效率非常低。爲表中的每個字段執行查詢。

+1

+1,這不是做你想做的最好的方式。一點也不。 – Gausie 2009-11-30 10:48:54

+0

感謝您的建議。 – arnold 2009-11-30 10:51:02

0

您將不得不將描述放在隱藏字段中或從數據庫讀取描述。 我建議以後的選項。

0

你需要在一個隱藏的輸入,包括這些值的任何" value="什麼>"

爲例

0

我覺得你的代碼的最佳方式是創建一個javascript

<input type="hidden" name="功能並在表單提交時調用它:

<form action="addSomething.php" method="POST" onsubmit="return postVars()"> 

當您提交形式,這個函數會被調用。創建一個2種隱藏的形式是這樣的:

<input type="hidden" name="description" id="description"> 
<input type="hidden" name="quantity" id="quantity"> 

給一個唯一的ID給您的TD S和ID傳遞給你的js函數。在你的js功能中填入這些輸入:

document.getElementById('description').value = document.getElementById('td_' + id + '_description').innerHTML; 
document.getElementById('quantity').value = document.getElementById('td_' + id + '_quantity').innerHTML; 

並且在你的服務器端從$ _POST獲取描述和數量。 希望它有所幫助;)

1

你可以給你的複選框不同的值

<input type="checkbox" name="data[]" value="newbie" /> 
<input type="checkbox" name="data[]" value="pro" /> 
<input type="checkbox" name="data[]" value="master" /> 

,然後在addSomething。PHP定義數組

$names = array('newbie'=>'Newbie', 'pro'=>'Pro', 'master'=>'Master'); 

,並用它在你的SQL

if(isset($_POST['add'])) 
    { 
     foreach($_POST['data'] as $value) 
     { 
      $sql = "INSERT INTO tablename (column1) VALUES ('".$names[$value]."');"; 
     } 
    } 

這隻適用,如果你不希望用戶編輯在前端的能解密和數量。如果你這樣做,你需要把輸入放在那裏,給他們獨特的名字。

1

我會沿着線提醒了一句:

<form action="addSomething.php" method="POST"> 
<table> 
<tr> 
    <th>Add Data</th> 
    <th>Description</th> 
    <th>Quantity</th> 
</tr> 

<tr> 
    <td><input type="checkbox" name="data[0]" value="sample1" /> </td> 
    <td class="desc">Newbie<input type="checkbox" name="desc[0]" value="Newbie" /></td> 
    <td>2<input type="checkbox" name="quan[0]" value="2" /></td> 
</tr> 

<tr> 
<td><input type="checkbox" name="data[1]" value="sample1" /> </td> 
<td class="desc">Pro<input type="checkbox" name="desc[1]" value="Pro" /></td> 
<td>1<input type="checkbox" name="quan[1]" value="1" /></td> 
</tr> 

<tr> 
<td><input type="checkbox" name="data[2]" value="sample1"/> </td> 
<td class="desc" > Master <input type="checkbox" name="desc[2]" value="Master" /></td> 
<td>1<input type="checkbox" name="quan[2]" value="1" /></td> 
</tr> 

<br/> 
    <input type="submit" name="add" value="SUBMIT"/> 
... 

用PHP

if(isset($_POST['add'])) 
     { 

      foreach($_POST['data'] as $i => $value) { 
       $desc = mysql_real_escape_string($_POST['desc'][$i]); 
       $quan = mysql_real_escape_string($_POST['quan'][$i]); 
       $sql = "INSERT INTO tablename (desc,quan) VALUES('$desc','$quan');" 

       //query stuff 
      } 

     } 

你必須明確地編號在HTML您的領域,以保持與複選框數據associacion。

相關問題