|
分類:[Java]
こんにちは。DBから取得 JSPに表示を勉強しています。 条件が 列指定 前方指定 昇順降順などあり 列ごとに取得 表示といった形で表示することができました ただこれだと 横に表示されるのですが、どうすれば縦に表示できるように 組みなおせますか?それかこの組み方だとHTMLでがんばったほうが良いのでしょうか?アドバイスお願いします
JSP(検索、表示) <table border> <tr> <td> 検索内容 TESTNO <input type="checkbox" name="TESTNO" value="TESTNO" </td> <td> NAME <input type="checkbox" name="NAME" value="NAME" > </td> <td> KANA <input type="checkbox" name="KANA" value="KANA" > </td> </tr> </table border> <table border> <tr> <td> 検索条件 <input type="text" name="name" >(NAME前方一致) </td> </table>
<table border> <tr><td> ソート <select name="menu"> <option value=TESTNO>TESTNO</option> <option value=NAME>NAME</option> <option value=KANA>KANA</option> </select>
<input type="radio" name="narabi" value="ASC" /> 昇順 <input type="radio" name="narabi" value="DESC"/> 降順 </td></tr> </table>
<br><input type="submit" value="検索"> </from> </body> </form>
<Hr>
<% if(request.getAttribute("list")!=null || request.getAttribute("list1")!=null || request.getAttribute("list2")!=null){
if(request.getAttribute("list")!=null){ List list=(List)request.getAttribute("list"); for(int i=0; i<list.size(); i++){ out.print(list.get(i)+" "); } } %><br> <%
if(request.getAttribute("list1")!=null){ List list1=(List)request.getAttribute("list1"); for(int i=0; i<list1.size(); i++){ out.print(list1.get(i)+" "); } } %><br> <% if(request.getAttribute("list2")!=null){ List list2=(List)request.getAttribute("list2"); for(int i=0; i<list2.size(); i++){ out.print(list2.get(i)+" "); } } %><br>
サーブレット(取得、フォワードで転送)
String name=request.getParameter("name"); //NAMEの前方一致条件取得 String narabi=request.getParameter("narabi"); //降順、昇順、の値取得 String menu=request.getParameter("menu"); //昇順、降順するところの列 name取得
db.updateExec("insert into TESTTABLE1(TESTNO,NAME,KANA) values("+1+",'山田', 'ヤマダ')"); db.updateExec("insert into TESTTABLE1(TESTNO,NAME,KANA) values("+2+",'佐藤', 'サトウ')"); ・・・・・・ //課題のため10行入力
db.commit(); //コミットして 確定
ArrayList list; ArrayList list1; ArrayList list2; //リスト作成
if(narabi!=null){//昇順 降順にチェックがあるか判断 String[][]hai4=db.selectExec("SELECT * FROM TESTTABLE1 WHERE NAME LIKE'"+name+"%' order by "+menu+" "+narabi+" ;"); //nameで前方一致 menuで昇順降順場所 narabiで降順昇順
list = new ArrayList(Arrays.asList(hai4[0])); list1 = new ArrayList(Arrays.asList(hai4[1])); list2= new ArrayList(Arrays.asList(hai4[2]));
}else{//昇順降順なければこっち
String[][]hai3=db.selectExec("SELECT * FROM TESTTABLE1 WHERE NAME LIKE'"+name+"%';"); //nameで前方一致
list = new ArrayList(Arrays.asList(hai3[0])); list1 = new ArrayList(Arrays.asList(hai3[1])); list2 = new ArrayList(Arrays.asList(hai3[2]));
}
if (request.getParameter("TESTNO") != null){ request.setAttribute("list", list); }
if (request.getParameter("NAME") != null){ request.setAttribute("list1", list1); }
if (request.getParameter("KANA") != null){ request.setAttribute("list2", list2); }
結果
1 2 3 4 5 6 7 8 9 10 山田 佐藤 山本 伊藤 武田 鈴木 小野 松井 田中 高橋 ヤマダ サトウ ヤマモト イトウ タケダ スズキ オノ マツイ タナカ タカハシ
1 山田 ヤマダ 2 佐藤 サトウ ・・・・・・ といった表示にしたいです 行ごとに取得して繰り返すのがいいのかなと思って最初やていたのですが 列指定したときに エラー(指定listがない)といったようになるので この組み方にしました。 アドバイスお願いします
ひとつ前に作成したのものせます
if(request.getAttribute("list")!=null || request.getAttribute("list1")!=null || request.getAttribute("list2")!=null){ for(int i=0; i<10; i++){ if(request.getAttribute("list")!=null){ List list=(List)request.getAttribute("list"); out.print(list.get(i)+" "); } if(request.getAttribute("list1")!=null){ List list1=(List)request.getAttribute("list1"); out.print(list1.get(i)+" "); } if(request.getAttribute("list2")!=null){ List list2=(List)request.getAttribute("list2"); out.println(list2.get(i)); }
↑は リストのどれかが空だとエラーがでろのと、list.sizeで長さが取れないなとおもい、あきらめました・・・ list.sizeっで指定したリストが空の場合があるので><
|