2011-08-22 49 views
1

我想製作關於食譜的程序。如果用戶希望並且在相同的情況下他也可以移除這些區域,則用戶必須能夠添加更多的配料。如何使用PHP從動態增加的表單字段中將信息保存到數據庫?

我在想什麼我會命名多個字段,我將如何能夠獲取值並將它們插入到數據庫中?

任何幫助表示讚賞。提前致謝。

+0

名稱表單字段'名稱=「成分[]」'作爲手動http://www.php.net/manual/en/faq.html.php#faq.html.arrays – mario

回答

0

使用方括號在HTML的字段名的結尾,他們將出現在PHP作爲數組:

<input type="text" name="ingredients[]" value="Chicken" /> 
<input type="text" name="ingredients[]" value="Mushroom" /> 
<input type="text" name="ingredients[]" value="Cream" /> 

這一操作將提供一個請求變量(假設你使用POST對於這種情況)所以該請求陣列(即$ _ POST)似乎PHP(也就是說,如果你撥打的var_dump)爲:

array(1) { 
    ["ingredients"]=> 
    array(3) { 
    [0]=> 
    string(7) "Chicken" 
    [1]=> 
    string(8) "Mushroom" 
    [2]=> 
    string(5) "Cream" 
    } 
} 
+0

中說明你好斯蒂芬,所以我只是循環輸入,以便我可以將它們插入數據庫呢? – Jag

+0

構建SQL的方式完全取決於數據庫的結構 - 您能否提供一些相關信息? – Stephen

+0

這裏是我的數據庫的結構http://stoccey.net/demo/images/db.png – Jag

0

我假設你有一個表,你的應用程序數據庫來存儲配方細節,如配方名稱,照片等等。此表中的每個條目也都有一個名爲RecipeId的主鍵。

由於配方可以有多種成分,因此這裏有一對多關係。所以你必須創建另一個表格來存儲配料詳細信息和外鍵RecipeId。

現在使用相應的RecipeId將配料詳細信息插入到此新表中。

如果您認爲食譜中可能有多個方向或烹飪說明,也適用於方向和烹飪說明。

希望這可以幫助你。

實現:

在您已經添加所需的HTML和JavaScript來添加多個條目的客戶端。

您可以將配料數組對象發送到您的php頁面。

E.g

$.ajax({ 
    url: "CreateRecipe.php", 
    data: { recipeName: "myRecipe", 
      ingredients: [ { name: "", amount: "", unit: "" }, 
          { name: "", amount: "", unit: "" } ], 
      directions: "", 
      cookingInstructions: "" } 
    success: function(){ } 
}); 
+0

這是我的db香卡http://stoccey.net/demo/images/db。png 我不是javascript和jquery的專家。但是我喜歡你的想法,也許如果它不打擾你,你可以一步一步地走過它嗎?因爲我覺得它太複雜了。 – Jag

0

你可以有至少五列(ID,名稱,配料,方向,指令)做這樣的任務。當你以一種明顯的方式保存id和name時,對於其餘三列,你需要將它保存爲序列化數組。所以,當你想爲那三列的每個部分,像這樣你可以有很多領域..

<input name="ingredients[]" ... /> 
<input name="ingredients[]" ... /> 
<input name="ingredients[]" ... /> 

和另外兩個字段,然後將其轉移到一個序列化的數據,你將它保存爲一個列值

// You can do this before save the value into your database 
$ingredients = serialize($_POST['ingredients']); 

// While you retrieve the value from your database, unserialize it to get your array back 
$ingredients = unserialize($row['ingredients']); 
+0

你好,我會檢查一下。 – Jag

相關問題