2012-04-27 65 views
0

我試圖從單選按鈕插入值到數據庫。下面是我的js代碼:從單選按鈕插入到MS訪問數據庫由Coldfusion

for (i = 0; i < document.form.repnumber.value; i++) 
    { 
      newInnerHTML = newInnerHTML +'Name: <input type=\"text\" name=\"rep' +(i+1) +'\" value=\"\" size=\"50\">*<br> '; 
      newInnerHTML = newInnerHTML +'Email:<input type=\"text\" name=\"rep' +(i+1) +'\email" value=\"\" size=\"60\"><br> '; 
      newInnerHTML = newInnerHTML +'UI Alum? <input type=\"checkbox\" name=\"rep' +(i+1) +'\alumn" value=\"alumn\" ><br> '; 
      newInnerHTML = newInnerHTML +'<b>Break-Out Sessions</b>: *<br>'; 
      newInnerHTML = newInnerHTML +'New Recruiters <input type=\"radio\" name=\"rep' +(i+1) +'\sessions" value=\"1\" checked=\"checked\"><br>'; 
      newInnerHTML = newInnerHTML +'Seasoned Recruiters <input type=\"radio\" name=\"rep' +(i+1) +'\sessions" value=\"2\"><br>'; 
      newInnerHTML = newInnerHTML +'Community Partners <input type=\"radio\" name=\"rep' +(i+1) +'\sessions" value=\"3\"><br><br>'; 
    } 

而對於動作頁,代碼就像

insert into tablename(rep1sessions ...) values (#rep1sessions#...) 

但現在,我的數據庫中的會話「欄只顯示0或-1對於號碼/文字,選中/取消選中是/否。 我的目標只是在列中顯示1,2,3三個不同的值。有任何想法嗎?

+2

「顯示」你的意思是直接查詢的結果,即'SELECT rep1sessions FROM tableName'返回0和1而不是「1,2,3」?如果是這樣,請在操作頁面上轉儲FORM範圍以驗證表單域是否包含「1,2或3」。另外,轉儲查詢以查看生成的sql。 – Leigh 2012-04-27 18:44:37

回答

1

我建議你需要考慮一下你的數據庫結構。

您肯定不希望在任何數據庫的列中存儲逗號分隔列表。您也不希望以「mycolumnx」形式存在列名,其中x是數字。

就你如何處理這樣的動態表單字段而言,它非常簡單。所有變量都在結構中。這包括範圍,如表單和網址。

結構及其鍵可作爲關聯數組訪問。這意味着form.rep1session可以作爲表單[「rep1session」] 進行訪問。推斷出來,你可以在一個循環中訪問你的表單變量,用一個變量替換數字,例如。形式[「rep」& i &「會話」]

之後,您只需將您的值存儲在適當的關係數據庫結構中。

+0

我可能是錯的,但由於每個字段名稱都包含一個計數器變量,我不認爲他們正在存儲列表(或者我當然不希望:)。但同意避免表的'columnX'命名約定。在行中而不是列中存儲相似的屬性通常是更好的方法。 @Zhecheng - 你能澄清一下嗎? – Leigh 2012-04-27 19:35:09