2015-08-31 38 views
0

我試圖將生成的表單發佈到第二個文件進行進一步處理,但只有最後一個條目發送到第二個文件。如何將循環中的所有信息發送到第二頁?此外,$_POST['STAMP']條目未被髮布。我是否需要一種不同的方法來檢索DB數據?如何提交一個php中的所有字段,而標籤

<!DOCTYPE html> 
<html> 
<body> 

<form action="payc.php" method="post"> 
Pay Range 
    <input type="date" name="start"> 
<input type="date" name="stop"> 
    <input type="submit"> 
</form> 

</body> 
</html> 

<?php 
$servername = "localhost"; 
$username = "user"; 
$password = "Pass"; 
$dbname = "DB"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM TIME WHERE STAMP BETWEEN '". $_POST['start']."' AND '".$_POST['stop']."'"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 

echo "<form action=\"test.php\" method=\"post\">"; 
    while($row = $result->fetch_assoc()){ 
$duration=(($row['T_OUT']-$row['T_IN'])/60)/60; 


     echo "<fieldset><input type=\"hidden\" name=\"date\" value=\"".$_POST['STAMP']."\"><input name=\"EMP\" type=\"text\" value=\"". $row['EMP']. "\"><input name=\"time\" type=\"text\" value=\"" . $duration. "\"><input name=\"ITEM\" type=\"text\" value=\"" . $row['ITEM']. "\"><input name=\"NOTE\" type=\"text\" value=\"" . $row['NOTE']. "\"></fieldset>"; 

     } 
echo "<input type=\"submit\">"; 
echo "</form>"; 
} else { 
    echo "0 results"; 
} 
foreach($_POST as $results){ 
var_dump($results); 
} 

$conn->close(); 
?> 
+0

所有的「行」在你的嘗試中相互覆蓋。你必須使用類似的東西:' arkascha

+0

我該如何解決這個問題? – Elegance

+0

@arkascha我不理解。你能爲我詳細說明嗎? :) – Elegance

回答

0

的問題是,所有的領域,在每個循環

該解決方案由兩個部分組成具有相同的名稱:

<input name="date[]"> 
<input name="EMP[]"> 
<input name="time[]"> 
<input name="ITEM[]"> 
<input name="NOTE[]"> 

這將確定它作爲數組而不是一個輸入

test.php文件的第二部分 而不是使用$ _POST ['date']獲取一個輸入 它會返回一個數組,因此你必須循環它們

$info = array(); 
for ($index = 0 ; $index < count($_POST['date']) ; $index++) 
{ 
    $record = array(); 
    $record['date'] = $_POST['date'][$index]; 
    $record['EMP'] = $_POST['EMP'][$index]; 
    $record['time'] = $_POST['time'][$index]; 
    $record['ITEM'] = $_POST['ITEM'][$index]; 
    $record['NOTE'] = $_POST['NOTE'][$index]; 
    $info[] = $record 
} 
+0

它的唯一輸出'array(4){[0] => string(0)「」[1] => string(0)「」[2 ] => string(0)「」[3] => string(0)「」}' – Elegance

+0

有4個提交。所以這是正確的,但它缺少所有其他信息。 – Elegance

+0

是的,你必須循環所有這些只是樣品 我會更新答案與所有​​這些工作 –

-2

1)你很容易受到sql injection attacks

2)如果窗體是在所有提交的你從來不檢查 - 你的PHP代碼運行不管如何加載頁面的。至少,你應該有類似

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    ... db stuf ... 
} 
+1

這是怎麼回事呢?也許這應該是評論。 – arkascha

+0

'$ _POST ['STAMP']條目未被張貼' –

相關問題