2013-03-26 117 views
0

我是PHP新手,在從POST獲取數據時遇到問題。 我有一個SQL查詢,從表中選擇3列,我以表格形式回顯。 注意,只有第三列應該是輸入類型。 儘管表格顯示正常(來自mySQL的所有值),但當我打印第$_POST列的第三列變量時, 只顯示最後一個值。 下面是代碼:只使用POST使用PHP獲取最後一行使用PHP

$result = mysql_query("SELECT `id`, `component`,`percentage` FROM `waste_percentage` ")or die(mysql_error()); 
$row = mysql_fetch_array($result); 

echo "<table border='1' cellspacing='0'> 
<tr> 
<th>α/α</th> 
<th>Ρεύμα</th> 
<th>Ποσοστό</th> 
</tr>"; 
while($row = mysql_fetch_array($result)) 
    { 
    $num = mysql_numrows($result); 
    $i=0; 
     while ($i < $num) 
     { 
      $field1 = $i +1; 
      $field2=mysql_result($result,$i,"component"); 
      $field3=mysql_result($result,$i,"percentage"); 
      $i++; 
      echo "<form action=\"\" method=\"post\">"; 
      echo "<tr>"; 
      echo "<td> $field1 </td>"; 
      echo "<td> $field2 </td>"; 
      echo "<td>" . "<input type=\"text\" name=\"percentage\" value=" . $field3 . " </td>"; 
      echo "<td>" . "<input type=\"hidden\" name=\"hidden\" value=" . $row['id'] . " </td>"; 
      echo "</tr>"; 
     } 

    } 
echo "</table>"; 
echo "<input name=\"Submitpercent\" type=\"submit\" value=\"Συνέχεια\" />"; 
echo "</form>"; 

    //When I try to output 

    if(isset($_POST['Submitpercent'])) 
    { 
    $user_percentage [] = $_POST['percentage']; 
    print_r ($user_percentage); 
    } 

輸出是: '陣列([0] => 13.60)'。 我將不勝感激任何幫助!提前致謝。

+1

請**不要使用新代碼'mysql_ *'功能**([爲什麼?](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql ),它們[已棄用](https://wiki.php.net/rfc/mysql_deprecation)。使用[PDO或MySQLi](http://php.net/manual/en/mysqlinfo.api.choosing.php) – kero 2013-03-26 21:51:15

回答

0

你忘了正確結束你的<input>標籤,就像這樣:

echo "<td>" . "<input type=\"text\" name=\"percentage\" value=\"" . $field3 . "\"> </td>"; 
echo "<td>" . "<input type=\"hidden\" name=\"hidden\" value=\"" . $row['id'] . "\"> </td>"; 
0

你的代碼有多種缺陷。如上所述,您忘記關閉標籤。

此外,您還在內部打開<form>,但是您只關閉一次(在提交按鈕之後)。

另一個問題是,您有不同的字段具有相同的名稱:percentage,這可以通過用name="percentage[]"替換name="percentage"來解決。如果您在PHP訪問它,你將有百分比的數組,而不僅僅是一個字段

0

首先,你在這裏跳過第一行:

$row = mysql_fetch_array($result); 

// ... 

while($row = mysql_fetch_array($result)) 

刪除$row = ...,你必須立即下查詢。其次,你遍歷行,同時迭代奇怪的行。您while循環更改爲(和關閉<inputs>):

$i=0; 

while($row = mysql_fetch_array($result)) 
{ 

     $field1 = ++$i; 
     $field2 = $row['component']; 
     $field3 = $row['percentage']; 

     echo "<tr>"; 
     echo "<td> $field1 </td>"; 
     echo "<td> $field2 </td>"; 
     echo "<td>" . "<input type=\"text\" name=\"percentage\" value=\"" . $field3 . "\"> </td>"; 
     echo "<td>" . "<input type=\"hidden\" name=\"hidden\" value=\"" . $row['id'] . "\"> </td>"; 
     echo "</tr>"; 
    } 

} 

最後,打開<form>打開<table>之前。

0

您需要爲表單輸入使用特殊的「數組」表示法,以便可以在頁面上多次包含相同的字段;

percentage更改爲percentage[];您還遺漏了代碼中輸入標記的結束標記

echo '<td><input type="text" name="percentage[]" value="' . $field3 . '" /></td>"; 

然後,顯示值;

if (!empty($_POST['percentage'])) { 
    print_r($POST['percentage']); 
}