2012-02-27 60 views
1

我發現自己遇到以下問題:我的表單中包含隨機數字段。 (這樣用戶可以輸入他們的團隊成員的姓名 - 並且團隊沒有設定的大小。)我需要將輸入的數據格式化以準備存儲在數據庫中。正在爲數據庫準備的FORM字段的隨機數

數據庫結構很好,它只是得到一個隨機數$_POST s並將它們放入一個數組中,這就是問題所在。

到目前爲止,我已經得到了一些JavaScript,允許用戶創建/刪除領域的無限數量,以增加id S/name S(例如TeamMemberName1,TeamMemberEmail1,TeamMemberName2,TeamMemberEmail2等)。

現在我創建了一個醜陋的PHP語句系列,它將合理數量的POST ed數據放入多維數組中 - 我不明白爲什麼一個團隊應該超過50個 - 然後我在將數組傳遞到數據庫之前,將處理該數組以刪除所有空行。

例子:

$submittedTeamMembers = 
     array ("teamMember1" => 
      array ("name" => $_POST["teamMemberName1"], 
        "email" => $_POST["teamMemberEmail1"]) 
      ); 

,但我想有一個更好的辦法!

+0

你爲什麼不設置連接隊第二個數據庫表。即表(team_id,member_id,memberInforUniqueToTeam),你也可以有一個團隊表有團隊信息或有團隊成爲一個非唯一的列,所以如果在團隊3有兩個人,那麼你有w行(3,member_1)和(3,member_2)。 – Kyra 2012-02-27 18:07:09

+0

我已經有一個單獨的表。數據庫結構不是問題。 – 2012-02-27 18:10:11

回答

4

你輸入的名稱可以在陣列形式,PHP將完全理解。例如:

<input type="text" name="teamMembers[0]['name']" /> 
<input type="text" name="teamMembers[0]['email']" /> 

這PHP會後解釋後,如你所期望的:

//print_r($_POST['teamMembers']); 
Array 
(
    [0] => Array 
     (
      [name] => foo 
      [email] => bar 
     ) 

) 
+0

太棒了!這看起來非常有前途!謝謝 – 2012-02-27 18:14:16

+0

你的回答比我的回答好:-) – Travesty3 2012-02-27 18:17:47

+0

謝謝。它需要很少的工作來實現這個,這就是爲什麼它很好,並且很容易使用javascript正確命名字段。這使得我的數據在不需要複雜解決方案的情況下結構化,從而使我的生活更輕鬆多次。 – Crashspeeder 2012-02-27 18:23:55

0

只需給所有的字段命名'TeamMemberName []'或'TeamMemberEmail []'。無論價值是否存在,都應該發佈,因此應始終匹配。

這將它們傳遞作爲數組服務器端PHP腳本,這樣你就可以像這樣訪問他們:

$teamMemberNames = $_POST["teamMemberName"]; 
$teamMemberEmails = $_POST["teamMemberEmail"]; 

for ($i = 0; $i < count($teamMemberNames); $i++) 
    echo "name = {$teamMemberNames[$i]}, email = {$teamMemberEmails[$i]}\n"; 
+1

我更喜歡@ Crashspeeder的回答。 – Travesty3 2012-02-27 18:17:29