2009年4月4日 星期六

利用html+JSP傳陣列

傳陣列的問題困擾了我好幾天,主要是因為checkbox傳的名稱都只是單一的變數,沒有辦法寫成陣列,後來發現了request.getParameterValues語法,不過我以為是將a[1].a[2]...這樣的名稱用a來做為抓資料的媒介,想不到是光用a一個名稱就可以抓到多個資料,所以這部分我花了很久時間.
以下是詳細的用法:
while(rs.next())
{
id=rs.getString("article_id");



...
<*input name="delete" type="checkbox" value="<% out.print(id);%>" />


}
先抓取選擇到的id存到delete裡(我原本以為是存成delete[0]、delete[1]、...delete[n],當request.getParameterValues抓值會以delete當參考,不過這樣是錯誤的),

String delete[] = request.getParameterValues("delete");
把delete的值抓到delete陣列裡(會依照打勾的checkbox存值,都沒有的話會是NULL),

int size=java.lang.reflect.Array.getLength(delete);
抓delete陣列的大小(不知道為什麼如果用其他的整數變數似乎會錯誤),

for(int x=0;x<*size;x++)
{
out.println(delete[x]);
}
輸出delete陣列.

2009年3月31日 星期二

getString()問題

當一個變數儲存用getString抓取的資料庫的數值之後,無法直接在其他地方利用
以下是在抓取商品ID的最大值後,要儲存在picture的商品ID時候發生的錯誤

String strSQL ;
String test;
String article_idSQL ="SELECT MAX(article_id) FROM article";
rs=stmt.executeQuery(article_idSQL);

while(rs.next()){
test = rs.getString(1);
out.print(test);
}
strSQL = "INSERT INTO picture(picture_name,avail,article_id) values ('"+picture[s]+"','o','"+test+"')";

在執行時會發生test內容雖然是正確的,卻無法順利存入的情況.
解決的辦法是要將test變數做初始化的動作,也就是改成String test="";
就可以順利存入資料庫中,但詳細的錯誤原因不明.

本週進度

本週主要的工作在設計搜尋和列表商品的網頁,順便與上傳商品的網頁做相關.