2011-03-03 47 views
0

所以我有一個腳本,使動態形式的內容和每個輸入有一個名稱爲「字段1」,「字段2」等,直到最後的輸入是由腳本創建的。如何將動態表單數據從JavaScript保存到數據庫與查詢

如何將表單保存到數據庫中?

我只知道如何以傳統的方式做到這一點,你像5靜態輸入,並給他們靜態名稱和ID,然後使用任何帖子或得到去制定mysql_query。

但在我的情況下,輸入範圍可以從3 - 200個輸入。並且均具有 「現場+ NUM ++」 的類似名稱/ ID

我的HTML代碼:

<form id="myForm"> 

我的JS代碼,將附加到我的HTML表單:

var $int = $('div.int'); 
$int.html(function(i, html) { 
    return html.replace(/(\d+)(.+)/,function(str,s1,s2){ 
     var text = s2.split('.'); 
     var text2 = text[1].split('-'); 
     var text3 = text2[1].split(' '); 
     return '<input class="r" name="scene-"' + s1 + ' value="'+ s1.replace(/^\s*/, '').replace(/\s*$/, '') +'" />' + 
     '<input class="r" name="int_ext-"' + s1 + ' value="'+ text[0].replace(/^\s*/, '').replace(/\s*$/, '') +'" />' + 
     '<input class="r" name="scene_desct-"' + s1 + ' value="'+ text2[0].replace(/^\s*/, '').replace(/\s*$/, '') +'" />' + 
     '<input class="r" name="day_night-"' + s1 + ' value="'+ text3[1].replace(/^\s*/, '').replace(/\s*$/, '') +'" />'; 
    }); 
}); 

我的HTML代碼:

<input type="submit" value="Submit" /> 
</form> 

一個樣本輸出是:

<input type="text" class="r" name="scene-1" value="1" /> 
<input type="text" class="r" name="int_ext-1" value="INT" /> 
<input type="text" class="r" name="scene_desct-1" value="Bedroom" /> 
<input type="text" class="r" name="day_night-1" value="DAY" /> 

<input type="text" class="r" name="scene-2" value="2" /> 
<input type="text" class="r" name="int_ext-2" value="EXT" /> 
<input type="text" class="r" name="scene_desct-2" value="Outside" /> 
<input type="text" class="r" name="day_night-2" value="DAY" /> 

<input type="text" class="r" name="scene-3" value="3" /> 
<input type="text" class="r" name="int_ext-3" value="INT" /> 
<input type="text" class="r" name="scene_desct-3" value="Bedroom" /> 
<input type="text" class="r" name="day_night-3" value="DAY" /> 

<input type="text" class="r" name="scene-4" value="4" /> 
<input type="text" class="r" name="int_ext-4" value="EXT" /> 
<input type="text" class="r" name="scene_desct-4" value="Bedroom" /> 
<input type="text" class="r" name="day_night-4" value="NIGHT" /> 

... 

more are created on the fly with the script, this can make like 300 sets of these 4 inputs 

話,我想這樣做

mysql_query("INSERT INTO `table` (`scene_num`, `int_ext`, `scene_desct`, `day_night`) VALUES ('{$scene}', '{$int_ext}', '{$scene_desct}', '{$day_night}')"); 

回答

0

我的理解是,你必須與名稱創建輸入字段的腳本,並要發佈到服務器的所有領域。你可以使用jQuery的ajax post方法。檢查代碼。

 
$.ajax({ 
    type: 'POST', // we will post something 
    dataType: 'json', // and we want to catch the server response as json 
    url: 'yourPostUrl', // write your post url here 
    data: $('#myForm').serialize(), // give an id to your form and serialize it. this will prepeare the form fields to post like &field1=lol&field2=lollol ... 
    success: function(data) { // data will give you server request as json 
     // do your stuff in here, for an example show an alert, says everyting is OK 
     alert(data.message); // consider your reply has a message 
    }, 
    failure: function (data) { 
     // handle your Ajax request's failure in here 
     alert('Please try again'); 
    } 
}) 

我想,這將用於你。

1

這是一個很酷的技巧,你可以使用HTML。將投入像這樣:

<input name="dynamic[]" value="fish" /> 
<input name="dynamic[]" value="cat" /> 
<input name="dynamic[]" value="dog" /> 
<input name="dynamic[]" value="moose" /> 

而在PHP中,你可以像這樣訪問他們:

<?php 
foreach($_POST['dynamic'] AS $key => $value) { 
    doSomethingWith($value); # fish, cat, dog, moose 
} 
?> 
+0

哦,嗯,是的......搖鈴笑。更新我的帖子,以顯示更完整的說明 – Eli 2011-03-04 00:46:50

+0

做我提到的foreach,所有的輸入將在最後使用[]。迭代四種類型的數據之一(例如場景),並在每個foreach中執行一個mysql。 – 2011-03-04 01:03:36

+0

會不會比它需要更多的INSERT INTO?我想它會爲每個輸入生成一個mysql_query,爲每個輸入生成一個查詢。 – Eli 2011-03-04 01:41:51

相關問題