2010-12-16 110 views
1

我正在處理允許用戶複製表單輸入組的表單(請參見此處:http://jsfiddle.net/Sd9Ag/5/)。 「問題」(包含列:「QID」,「文本」)和「答案」(包含列:「AID」​​,「QID」,「文本」)。PHP表單到mySql數據庫中。數組格式化問題

當我提交表單,該信息發佈像這樣(在這個例子中,表單有2個問題,既具有3個答案):


問題:

Array ([0] => question 1 [1] => question 2) 

答案:

Array ([0] => q1 answer 1 [1] => q1 answer 2 [2] => q1 answer 3 [3] => q2 answer 1 [4] => q2 answer 2 [5] => q2 answer 3) 

我的問題是:什麼是最好的方式來保持這些問題鏈接到他們的答案時循環後變量插入到數據庫中?

我是否應該爲每個表單輸入組的name腳本編寫腳本的方式不同?

有沒有辦法將這些輸入「集」中的每一個分組到數組中?

回答

2

我已經做了,在過去類似的東西與允許你添加天調度部件到一個時間表,就像你有問題的答案一樣。我處理它的方式是通過javascript添加額外的行,增加計數器來命名字段。

事情是這樣的:

<input type="text" name="question[1]"> 
<input type="text" name="answer[1][1]"> 

現在你保留一個計數器中有多少答案有問題的JavaScript,所以當你添加一個新的答案,你只是增加該計數器。舉例來說,如果你開始用1個回答默認:

var count = 1 
//creating new answer field logic 
count++; 
answer_name = 'answer[' + question + '][' + count + ']'; 

當然,比這更復雜一些,但希望你我本要去的地方的想法。

然後當你提交時,你抓住你的問題數組,然後只是查詢答案數組來獲得所有問題的答案。問題1的答案將以$ answers [1]作爲數組。

+0

謝謝詹姆斯,那麼什麼是'問題'var設置爲? – superUntitled 2010-12-16 22:46:18

+0

在我的例子中,我把它分成$ questions和$ answers數組。所以你會說例如$ questions = $ _POST ['question']。 – 2010-12-22 18:33:44

2

我想有這樣一個最後的陣列,在單個陣列一切,所以,很容易遍歷同時處理: -

array([0] => array([0] => question 1, 
        [1] =>array([0] => q1 answer 1, [1] => q1 answer 2)), 
     [1] => array([0] => question 2, 
        [1] => array([0])), 
     ... 

檢查以這種格式具有輸入名稱產生以上帖子數據陣列: -

//Question 1 
<input type="input" name="question[0][0]"> 

//Answers to 1 
<input type="input" name="question[0][1][]"> 
<input type="input" name="question[0][1][]"> 

//Question 2 
<input type="input" name="question[1][0]"> 

//Answer to 2 
<input type="input" name="question[1][1][]"> 

我不知道這是否會按照上面給出的格式發佈值。如果它可以工作,而且你更喜歡這種格式,那麼在你的代碼中這樣生成。

爲了保持它的可讀性,您可以分配這樣

//Question 1 
<input type="input" name="qa[0][question]"> 

//Answers to 1 
<input type="input" name="qa[0][answer][]"> 
<input type="input" name="qa[0][answer][]"> 

//Question 2 
<input type="input" name="qa[1][question]"> 

//Answer to 2 
<input type="input" name="qa[1][answer][]"> 

希望這有助於