2013-02-22 23 views
0

我正在用PHP打開一個文件(格式爲行和列),循環遍歷文件中的行並將行回送到滿足特定條件的表中。在我回應的每一行上,我都將它包裝在表單標籤中。最終,如果我回顯20行,我會回顯20個表單,每個表單都有一個按鈕。我也在回覆帶有評論框的專欄。我希望最終用戶能夠訪問此頁面,在每行輸入註釋,然後點擊提交按鈕以將行結果存儲到數據庫中。我有兩個問題,我不知道如何克服。循環創建多個表單以提交數據

1.)將結果回顯到表中時,我不創建一個靜態變量來引用創建我的SQL插入語句時的引用。我如何標記每一條數據,以便日後可以調用它?

2.)將會有多種形式,並且用戶一次只能使用一種形式。我如何確保當用戶點擊提交時,它只提交來自同一行的數據字段?

希望這是有道理的。如果不是我很高興根據需要添加儘可能多的說明。當談到PHP時,我肯定是一個新手,所以我肯定這是一個糟糕的設計,但我在緊張的時間表上,我現在只需要一個工作產品。下週我可以回去,也許實現一個更好的解決辦法,我敢肯定,你一個善良的人會建議:)

<?php 

if (($handle = fopen("name of file to open here", "r")) !== FALSE) { 
while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) { 
    if ($data[4] == $login){ 
     $num = count($data); 
       echo "<form action='analyzer.php' method='post'>"; 
       echo "<tr>"; 
       echo "<td>"; 
       echo $data[1]; 
       echo "</td>"; 
       echo "<td>"; 
       echo $data[2]; 
       echo "</td>"; 
       echo "<td>"; 
       echo $data[3]; 
       echo "</td>"; 
       echo "<td>"; 
       echo $data[4]; 
       echo "</td>"; 
       echo "<td>"; 
       echo $data[5]; 
       echo "</td>"; 
       echo "<td>"; 
       echo $data[6]; 
       echo "</td>"; 
       echo "<td>"; 
       echo $data[7]; 
       echo "</td>"; 
       echo "<td>"; 
       echo $data[8]; 
       echo "</td>"; 
       echo "<td>";  
       echo "<input type='text' name='comments' />"; 
       echo "</td>"; 
       echo "<td>"; 
       echo "<input class='mybutton' type='submit'   name='#' value='Submit' />";  
       echo "</td>"; 
       echo "</tr>"; 
       echo "</form>"; 


} 
fclose($handle); 
} 
} 

?> 

回答

1

1)當呼應出來的結果表中,我不創建一個靜態當我去創建我的SQL插入語句時引用該變量。我如何標記每一條數據,以便日後可以調用它?

您需要某種方式來唯一標識這段數據。你可以使用隱藏的輸入變量來完成這個。

2.)將會有多種形式,用戶一次只能使用一種。我如何確保當用戶點擊提交時,它只提交來自同一行的數據字段?

您可以命名錶單或爲它們分配序列。例如:

<input type="submit" name="form[5]" /> 

您也可以通過這樣的循環簡化代碼:

foreach($data as $key=>$val) { 
    echo "<td>$val</td>"; 
} 
+0

謝謝,不能相信我沒有想到!這將完美運作。另外,謝謝你的小費! – stephenthedev 2013-02-22 03:13:39

0

我知道已經有一個公認的答案在這裏,但我覺得這表明這樣做的另一種方式。在一個頁面上有一堆表單,每個表單都有自己的提交按鈕,並且每次都需要加載一個頁面,這從UI角度來看是非常麻煩的。

我的建議是,你開始學習Ajax的漫長,痛苦和有益的過程。我一直在學習jQuery AJAX,並用它來做類似的事情。

實施例:

我有30行,每行代表一個過程的表。 每一行都有一個複選框。 我在底部有一個提交按鈕,用戶可以在其中提交帶有選中框的所有行。

但是,我也有每一行按鈕(實際上旁邊的複選框)。這些按鈕被簡單地標記爲「現在」,並且當您單擊它們時,該行將在後臺處理而無需重新加載頁面。

所以我允許用戶提交很多行,如果他們想要提交正常表單提交按鈕,或者提交任何單獨的行,而不必等待頁面重新加載。

我可以在這裏添加一些代碼,如果任何人有興趣。