2017-04-11 91 views
0

不知道這是否可能:從一個數據庫中檢索字段分隔數字

我有一個複選框列表如下:

<input type='checkbox' name="item" value="<%=rs("ID")%>" /> <%= rs("Item Name") %> 

我再服用選擇的值:

item_id = request.form("item") 

它寫入一個名爲item_selected的數據庫字段,它是varchar(50),並在數據庫中如下記錄:

31,32,45

也不知道如何工作,因爲它不是一個數組(我的知識),我沒有明確逗號分隔值。

但我想要做的是檢索值並遍歷每個ID並使該選項「選中」(僅檢查它們所選的項目),這是更新訂單頁面。

我試圖讓所有物品的ID,並試圖比較ID,他們選擇的使用要做到這一點「檢查」,檢查該選項

任何幫助,將不勝感激。

+0

您只顯示一個複選框,但我懷疑它們都具有相同的名稱。這就是他們最終成爲一個陣列的方式。 –

+0

是的,這是我的第一個傾向,但不確定。它遍歷所有ID,用戶可以選擇他們想要的項目。所有這個'name ='item'' – rem

+0

如果我理解正確,你想知道如何將複選框標記爲基於該字段中的內容進行檢查。您可以將字段值轉換爲數組,並在創建每個複選框時,在數組中搜索特定複選框的值。如果找到,請將checked ='checked'添加到標籤。 –

回答

0

首先,您需要使用所選項目(逗號分隔的ID字符串)來獲取字段值。類似這樣的:

Set rs = conn.execute("SELECT item_selected FROM tblTable WHERE iID = intSomeID") 'remember to handle SQL Injection 
If Not rs.EOF Then 
    strItemSelected = rs("item_selected") & "," 
End If 
rs.Close() : Set rs = Nothing 

我不知道你的複選框來自哪裏。但是,假設他們來自數據庫。然後,它會是這個樣子:

Set rs = conn.execute("SELECT ID, ItemName FROM tblCheckboxes") 
If Not rs.EOF Then 
    While Not rs.EOF 
     strChecked = "" 
     If InStr(strItemSelected, CStr(rs("ID")) & ",") > 0 Then 
      strChecked = " checked=""checked""" 
     End If 
     Response.Write("<input type=""checkbox"" name=""item"" value=""" & rs("ID") & """" & strChecked & " /> " & rs("ItemName") & "<br/>") 
     rs.Movenext 
    Wend 
End If 
rs.Close() : Set rs = Nothing 

我沒有測試代碼,但應該工作,但你可能需要調整它一點適合您的方案。

你也可以拆分所選擇的項目上逗號像這樣:

arrItemSelected = Split(rs("item_selected"),",") 

然後在該循​​環並寫出複選框,你可以檢查,如果該值在數組中,而不是做InStr函數的代碼()。但是你需要爲它寫一個函數,或者從Internet上獲取一些函數,因爲VBScript沒有內置函數,就我所知。

+0

感謝你的迴應。最初當用戶選擇了項目時,它會像這樣保存到數據庫中(在varchar(50)中):31,22,33。我需要的是,當我再次檢索該字段時,將每個ID與商品ID進行比較,並檢查用戶選擇的所有商品 – rem

+0

我有一些想法(可能是錯誤的),即獲取該字段,將所有逗號和空格,所以你會得到313233,然後在一個while循環,直到變量爲空是採取前2個字符/數字這將是31,然後將其與每個項目進行比較,當匹配使該複選框檢查但只有問題是ID字段是自動增量,顯然它從1開始,這是一個字符/數字。不知道你的解決方案是如何工作的,我對這種編程語言很陌生,所以這可能只是我缺乏知識。 – rem

+0

可以在數據庫中更改此字段以保存爲'01,02,03'等 – rem

相關問題