掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
隨著互聯(lián)網技術的不斷發(fā)展,越來越多的企業(yè)開始采用網站進行業(yè)務操作,而在網站中,多選表單一般是一個很常見的組件,可以用于實現(xiàn)多個選項的同時選擇,從而方便用戶進行選擇操作。而在多選表單數(shù)據的處理中,將其自動寫入數(shù)據庫中則是一項非常重要的功能,本文將從實現(xiàn)多選表單數(shù)據自動寫入數(shù)據庫的角度來進行詳細的解析。

一、多選表單常見的結構類型
在進行多選表單的編寫之前,需要對多選表單常見的結構類型有所了解,一般來說,多選表單的結構類型有兩種,分別為checkbox類型和select類型。
1、checkbox類型
checkbox類型的多選表單一般由多個checkbox組成,每個checkbox都對應著一個選項,選中的checkbox則代表著被選中的選項,這種方式通常適用于選項個數(shù)比較少的情況,如圖1所示。
2、select類型
select類型的多選表單一般由一個下拉列表和多個選項組成,用戶可以通過下拉列表選擇需要的選項,并通過多選方式進行選擇,這種方式通常適用于選項比較多的情況,如圖2所示。
二、多選表單如何將數(shù)據自動寫入數(shù)據庫
在多選表單中將數(shù)據自動寫入數(shù)據庫是非常重要的一個功能,一般來說通過服務器端腳本語言(如:PHP、ASP、P等)進行處理。
1、通過checkbox將數(shù)據自動寫入數(shù)據庫
checkbox類型的多選表單可以采用以下的方式將數(shù)據自動寫入數(shù)據庫:
“`php
//連接數(shù)據庫
include(“conn.php”);
//獲取提交的數(shù)據
$choice=$_POST[‘choice’];
//將數(shù)據插入數(shù)據庫中
$sql=”INSERT INTO choices(choice) VALUES(‘$choice’)”;
mysql_query($sql);
?>
“`
在上述代碼中,我們首先通過$_POST[‘choice’]獲取多選表單的數(shù)據值,然后將其插入到數(shù)據庫choices表中。
2、通過select將數(shù)據自動寫入數(shù)據庫
select類型的多選表單可以采用以下的方式將數(shù)據自動寫入數(shù)據庫:
“`php
//連接數(shù)據庫
include(“conn.php”);
//獲取提交的數(shù)據
$choice=$_POST[‘choice’];
//將數(shù)據插入數(shù)據庫中
foreach($choice as $v){
$sql=”INSERT INTO choices(choice) VALUES(‘$v’)”;
mysql_query($sql);
}
?>
“`
在上述代碼中,我們首先通過$_POST[‘choice’]獲取多選表單的數(shù)據值,然后通過循環(huán)將每個選項的值插入到數(shù)據庫choices表中。
三、多選表單數(shù)據重復性處理
在進行多選表單數(shù)據寫入數(shù)據庫的時候,存在一個非常重要的問題,即數(shù)據的重復性問題。假如多個用戶選擇的選項是一樣的,那么在寫入數(shù)據庫的時候就會出現(xiàn)重復數(shù)據,因此需要進行一定的處理。
1、通過刪除重復選項的方式
首先我們可以通過刪除重復選項的方式來處理多選表單寫入數(shù)據的重復性問題。
“`php
//連接數(shù)據庫
include(“conn.php”);
//獲取提交的數(shù)據
$choice=$_POST[‘choice’];
//去除重復數(shù)據
$choice=array_unique($choice);
//將數(shù)據插入數(shù)據庫中
foreach($choice as $v){
$sql=”INSERT INTO choices(choice) VALUES(‘$v’)”;
mysql_query($sql);
}
?>
“`
在上述代碼中,我們首先通過array_unique($choice)函數(shù)將數(shù)組中的重復數(shù)據去除,然后將非重復的選項數(shù)據插入到數(shù)據庫中,從而防止了重復數(shù)據的出現(xiàn)。
2、通過判斷是否存在的方式
還可以通過判斷選項數(shù)據是否已經存在于數(shù)據庫中的方式來解決多選表單寫入數(shù)據的重復性問題。
“`php
//連接數(shù)據庫
include(“conn.php”);
//獲取提交的數(shù)據
$choice=$_POST[‘choice’];
//將數(shù)據插入數(shù)據庫中
foreach($choice as $v){
$sql=”SELECT * FROM choices WHERE choice=’$v'”;
$result=mysql_query($sql);
if(mysql_num_rows($result)==0){
$sql=”INSERT INTO choices(choice) VALUES(‘$v’)”;
mysql_query($sql);
}
}
?>
“`
在上述代碼中,我們首先通過SELECT語句查詢數(shù)據庫中是否已存在該選項,如果數(shù)據庫中不存在該選項,則將其插入到數(shù)據庫中,否則跳過該選項的插入操作。
四、結論
在進行多選表單數(shù)據自動寫入數(shù)據庫的時候,我們需要對多選表單的結構類型有所認識,并通過服務器端腳本語言實現(xiàn)數(shù)據的自動寫入操作。同時,在進行數(shù)據寫入的時候,我們需要注意數(shù)據的重復性問題,可以采用刪除重復選項和判斷選項是否已存在的方式來解決數(shù)據重復性的問題,從而保證數(shù)據的完整性和正確性。
相關問題拓展閱讀:
權限問題?不要瞎說好吧。那怎么又時能傳,睜眼說瞎話!
應該是上傳表單的大小的問題。。太大的話就不行。一般程序都做限制的
比如網站后臺要上傳一張圖片,你要傳10M的張片能成功么?一般不可能!所以樓主的問題很大原因是上傳表單大小引起的。。。
權限問題,設置一下文件夾的權限
1、工具-文件夾選項-查看(選項卡) 將選項“使用簡單文件共享”的勾去掉
2、右擊數(shù)據庫所在文件夾,屬性-安全,分配Everyone讀寫權限
你提交的數(shù)據大于數(shù)據庫字段的大小,就會出錯,內容寫不進數(shù)據庫??匆幌履隳莻€表的字段的類型是不是對的
jsp(表橋纖兄單)把值傳到servlet然后servlet調用插入語句.搞定!
//***************insertdao (數(shù)據訪問層)****************//
public class Examedao{
private static Logger logger=Logger.getLogger(Examedao.class);
private Examedto dto;
public Examedao(){
}
public void execute()throws SQLException{
DBConn dBConn=new DBConn();
try{
java.sql.Connection conn=dBConn.getConn();
Examedao dao=new Examedao();
String str=”insert into vehicle values(?,?,?,?)”;
logger.debug(“語句”+str);
java.sql.preparedStatement ps=new preparedStatement(str);
ps.setString (1,dto.getvecode());
……
ps.setString (4,dto.gettype());
ps.execute();
logger.debug(“”);
}finally{
dBConn.close();
}
}
}
//***************servlet ****************//
try{
String code=request.getparameter(“txtid”)//得到jsp頁面txt的值
…….
String type=request.getparameter(“txttype”)//得到jsp頁面txt的值
Examedto dto=new Examedto();
dto.setcode(code);
dto.setType(type);
Examedao dao=new Examedao ();
dao.setdto(dto);
dao.execute();
logger.debug(“插入數(shù)據庫成功”);
response.sendRedirect(“sucess.jsp”);
}catch(Exception ex){
response.sendRedirect(“error.jsp”);
logger.debug(ex,ex);
}
/敏襲/****************dbconn數(shù)據連接*********************//
public class DBConn(){
private Connection conn;
private static Logger logger=Logger.getLoggde(DBConn.class);
public DBConn(){
}
public java.sql.connection getConn() throws SQLException{
//加載驅動
new com.microsoft.jdbc.sqlserver.sqlserverDriver();
//設置連接字符串
String address=””;//ip
String port=””;//端口
String databasename=””//數(shù)豎虧據庫
String username=””//用戶
String pwd=””//密碼
java.io.InputStream in=Thread.currentThread().getResourceAsStream(“db.properties”);
java.util.properties prop=new properties();
try{
prop.load(in);
prop.close();
}catch(IOException ex){
logger.debug(“連接數(shù)據庫失敗!!”);
}
address=prop.getProperty(“address”);
port=prop.getProperty(“port”);
databasename=prop.getProperty(“databasename”);
username=prop.getProperty(“username”);
pwd=prop.getProperty(“pwd”);
String sql=”jdbc:microsoft:
conn=java.sql.DriverManager.getConnection(sql,username,pwd);
logger.debug(sql+”語句”);
return conn;
}
}
public void closeConn(){
conn.close();
logger.debug(“關閉成功”);
}
和表單的TEXT操作一樣.
/*文本框*/
/*按鈕*/攜升戚
細節(jié)部分我不寫了!
p代碼中獲取表單中單選按鈕的值:(單選按鈕只能讓我們選擇一個,這里有一個“checked”屬性,這是用來默認選取的,我們每次刷新我們的頁面時就默認為這個值。)
例:
性別:
鋒讓男女
如果你選擇的是男,則出來的值就是“男”,要是你選擇的是女肆旁,則出來的值就是“女”。
舉例如下斗虛:
file1.php:
file2.php:
多選表單寫入數(shù)據庫的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于多選表單寫入數(shù)據庫,實現(xiàn)多選表單數(shù)據自動寫入數(shù)據庫的方法解析,為什么我在提交表單時,有時能寫入數(shù)據庫,有時又不能寫入?,驗證過表單之后如何將數(shù)據寫入SQL數(shù)據庫,急急急急急急急?。。?!,PHP中怎樣把表單單選按鈕的值寫入數(shù)據庫中的信息別忘了在本站進行查找喔。
香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網站系統(tǒng)開發(fā)經驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流