• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DB検索結果のテーブルにリンクが貼れません)

DB検索結果のテーブルにリンクが貼れません

このQ&Aのポイント
  • 検索結果のテーブルにおいて、任意の行をダブルクリックすると、その行が持つファイルを開く処理を考えています。しかし、試した結果、記述した<tr>の行で文法エラーが発生してしまいました。方法を教えていただけますでしょうか。
  • 質問者は、データベースの検索結果を表示するテーブルにおいて、任意の行をダブルクリックすると、その行が持つファイルを開く処理を実装したいと考えています。しかし、試した結果、記述した<tr>の行で文法エラーが発生してしまいました。
  • データベースの検索結果を表示するテーブルにおいて、任意の行をダブルクリックすると、その行が持つファイルを開く処理を実装しようとしています。しかし、試した結果、記述した<tr>の行で文法エラーが発生してしまいました。どのような方法があるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • k17s
  • ベストアンサー率47% (9/19)
回答No.2

返事が遅れてしまいすみません。 >おそらく、filepathの"c:\a-san.pdf"は読み込めているような気がします。ファイルパスの書き方に問題あるのでしょうか? その通りだと思います。 ondblclickで実行されるwindow.openはJavascriptなのでクライアント側で実行されます。 つまりクライアントPC内にあると思われる「c:\a-san.pdf」を開こうとしますが、Javascriptにはそういった権限がないのでエラーになってるんだと思います。(※個人的推測です) よってサーバー側でのパスを指定してあげればいいと思います。 例: http://hoge.com/pdf/a-san.pdf //フルパス /pdf/a-san.pdf //絶対パス ../pdf/a-san.pdf //相対パス 等など。 最初の時点で私が気づくべきでしたね○r2 説明下手でわかりにくいとは思いますが、たぶんこれが原因だと思います。 頑張ってください。

foot-peng
質問者

お礼

>k17s様 ご回答有難う御座います。 まさしくその通りでした^^; filepathを以下の通り変更したところ、開くことができました('-'*) × c:\a-san.pdf ○ \\\\public\\a-san.pdf ( = \\public\a-san.pdf) DBの制約なのか、\ -> \\ とする必要がありました。 教えて頂き有難う御座いました☆

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • k17s
  • ベストアンサー率47% (9/19)
回答No.1

jspのソースではなく、HTMLとして表示した時のソースを出して頂けると回答しやすくなると思います。 <tr ondblclick="hoge.pdf"> NG:ダブルクリックされたらhoge.pdf (hoge.pdfをどうすればいいのかわかってくれない) <tr ondblclick="window.open('hoge.pdf');"> OK:ダブルクリックされたらhoge.pdfを新しいウィンドウで開く <tr ondblclick="window.open('hoge.pdf','_self');"> OK:ダブルクリックされたらhoge.pdfをこのウィンドウで開く <tr ondblclick="window.open('<%= rs.getString("filepath")%>');"> みたいな感じにすれば求めている動作をするのではないでしょうか? window.open:http://amenti.usamimi.info/windowopen.html

foot-peng
質問者

お礼

失礼しました。 > で試してみましたが、ダメでした。<%= ... %>のJSP部分がやはり認識されていないようです。 どうやら、認識されているようです^^; IEではうんともすんとも言わなかったのですが、FireFoxで開いてみると新規ウィンドウが起動し、 ============================================================ c というプロトコルはどのプログラムにも関連づけられておらず、Firefox でこのアドレスを開く方法が分かりません。 ============================================================ と表示されました。 おそらく、filepathの"c:\a-san.pdf"は読み込めているような気がします。ファイルパスの書き方に問題あるのでしょうか? 試しに、 <tr ondblclick="window.open('c:\a-san.pdf');"> と直接記述してみましたが、上記と同じ結果になりました。 なぜ、IEでは新規ウィンドウが開きもしないのが少し謎ですが・・・。 <tr ondblclick="window.open('http://localhost');"> と記述すると、IEでも新規ウィンドウが立ちあがります。

foot-peng
質問者

補足

>k17s様 ご回答有難う御座います。 <tr ondblclick="window.open('<%= rs.getString("filepath")%>');"> で試してみましたが、ダメでした。<%= ... %>のJSP部分がやはり認識されていないようです。 やりたい事としては、上記のwindow.openはイメージ通りなのですが・・・; ソースを、該当部分だけ絞って載せさせて頂きます。 index.html ///////////////////////////////////////////////////////////////////// <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <title>test</title> </head> <form name="search" method="post" action="/test/display.jsp" target="display"> <p>ID</p><input name="id" type="text"> <p>患者名</p><input name="name" type="text"> <br /> <input type="submit" name="btn" value="検索"> </form> <br /><br /> <hr color="#FF6666" size="6"> <p>検索結果</p> <iframe src="/test/display.jsp" name="display"></iframe> <hr color="#FF6666" size="6"> </body> </html> ///////////////////////////////////////////////////////////////////// display.jsp ///////////////////////////////////////////////////////////////////// <%@ page contentType="text/html; charset=Shift_JIS" import="java.sql.*, java.io.*"%> <jsp:useBean id="db" scope="session" class="report.atom.DatabaseAccess" /> <% try { // データベースに接続 db.open(); // クエリーを実行して結果セットを取得 ResultSet rs = db.executeQuery("select * from db_table;"); %> <html> <head> <meta http-equiv="Content-Style-Type" content="text/css" /> <title>検索結果</title> </head> <body> <table align="center" border="1"> <tr> <th width="100">ID</th> <th width="150">名前</th> </tr> <%-- JSP部分 --%> <% // パラメータも文字コード:Shift_JIS request.setCharacterEncoding("Shift_JIS"); // 入力データを格納 String qid = request.getParameter("id"); String qname = request.getParameter("name"); // パラメータが"null(初期状態)"か"空(空欄)"であった場合に、"%(0文字以上の任意の文字列)"を格納する。 if(qid == null || qid == "")qid = "%"; if(qname == null || qname == "")qname = "%"; // クエリ格納 String sql = "select * from db_table where id like '" + qid + "%' and name like '" + qname + "%'"; // 患者名 rs = db.executeQuery(sql); // 検索された行数分ループ while(rs.next()){ %> <tr ondblclick="window.open('<%= rs.getString("filepath")%>');"> <td><%=rs.getString("id") %></td> <td><%=rs.getString("name") %></td> </tr> <% } // end while %> </table> </body> </html> <% } catch (Exception e) { out.println("<font color=red><h3>エラー!</h3></font>" + e); e.printStackTrace(); } finally { // データベースへの接続をクローズします try { db.close(); } catch (Exception e) { e.printStackTrace(); } } %> /////////////////////////////////////////////////////////////////////

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 検索結果受け渡し

    今、MVCで、検索ページを作っています。 そこで、検索結果のデータをうまくjsp に渡せなくて困っています。 検索結果が、1件の場合は、 /*SampleBean.java*/ while(resulteset.next()){ String name = resulteset.getString("name"); String sei = resulteset.getString("last"); } public String getName(){return(name)}; public String getSei(){return(sei)}; などとした時に、 jsp では、 <table border="1"> <tr><td>名前</td>   <td>姓</td> </tr> <tr><td><jsp:getProperty name="SampleBean" property="Name"/> </td> <td>jsp:getProperty name="SampleBean" property="Sei"/> </td> </tr> とすると、jsp で結果取得できますが、 では、 *SampleBean.java*/ while(resulteset.next()){ String name = resulteset.getString("name"); String sei = resulteset.getString("last"); } での結果が複数ある場合には、どうのような処理を施したら 良いのでしょうか? 何分、略したコードですが、ご教授よろしくお願いします。  

    • ベストアンサー
    • Java
  • JSPでDBからデータ読み込みブラウザーで10件ずつ表示させたい。

    JSPでDBからデータを表示させる事ができました、これをブラウザーで10件ずつ表示させ、次へ→、←戻る又はページ数表示で移動させたいのですが、PHPとかでは あったのですがJAVA初心者にはわかりません。 誰か教えてください、お願いします。 <%@page import="java.sql.*,MyDatabase.MyDBAccess" contentType="text/html;charset=Shift_JIS"%> <% String sel=request.getParameter("sel"); sel=new String(sel.getBytes("8859_1"),"Shift_JIS");//selectしたカテゴリーname MyDBAccess db =new MyDBAccess(); db.open(); //String str; //str=sel; ResultSet rs = db.getResultSet("select * from "+sel+""); String tableHTML ="<table border=1>"; tableHTML +="<tr bgcolor=\"#ff9933\">" +"<td><font color=\"white\">商品ID</font></td>" +"<td><font color=\"white\">画像</font></td>" +"<td><font color=\"white\">商品名</font></td>" +"<td><font color=\"white\">数量</font></td>" +"<td><font color=\"white\">タイトル</font></td>" +"<td><font color=\"white\">価格</font></td>" +"<td><font color=\"white\">説明</font></td>"; int n=0; while(rs.next()){ //int id=rs.getInt("id"); String id=rs.getString("id"); String name=rs.getString("name"); String sum=rs.getString("sum"); String price=rs.getString("price"); String title=rs.getString("title"); String detail=rs.getString("detail"); String ima=rs.getString("imagelink"); //ima=new String(ima.getBytes("8859_1"),"Shift_JIS"); String imag=("../image/"+ima); tableHTML +="<tr><td align=\"right\">"+id+"</td>" +"<td><img src="+imag+" whdth=\"120\" height=\"60\"></td>" +"<td>"+name+"</td>" +"<td>"+sum+"</td>" +"<td>"+title+"</td>" +"<td>"+price+"</td>" +"<td>"+detail+"</td></tr>"; n++; } tableHTML +="</table>"; db.close(); %> <html> <head> <title>商品在庫情報</title> </head> <body> <h1><%= sel %>の在庫一覧</h1> <%=tableHTML %> </body> </html>

  • JSPで複数テーブルのSQL実行後に値を送る方法を教えて下さい!

    いつもお世話になっております。 JSPにてUNION ALLを使用してSQLを実行します。 (ソースは必要部分のみ記載致します) SQL実行後にテーブルのカラムにある「番号」と「テーブル名」を <FORM method="post" action="Next_View.jsp?table=????"> <input type="hidden" name="num" value="<%= rs.getString("番号")%>"> の部分で送りたいのですがどの様に記述すればいいのか調べてみましたが 分かりませんでした。 説明が分かりにくいかもしれませんがどうかご教示下さいませ。 ちなみに番号はT_2005・T_2006・T_2007 共に1から順にオートナンバーで振られています。 String str = request.getParameter("Num"); rs = stmt.executeQuery ("SELECT * FROM T_2005 where ID='"+ str +"' union all SELECT * FROM T_2006 where ID='"+ str +"' union all SELECT * FROM T_2007 where ID='"+ str +"'"); while (rs.next()){ String year = rs.getString("年齢"); String number = rs.getString("電話番号"); String add = rs.getString("住所"); %> <TR> <FORM method="post" action="Next_View.jsp?table=????"> <input type="hidden" name="num" value="<%= rs.getString("番号")%>"> <TD><%= year %></TD> <TD><%= number %></TD> <TD><%= add %></TD> <%-- 詳細ボタンを表示 --%> <input type="submit" value="詳細"> </form> </TD> </TR>

    • ベストアンサー
    • Java
  • PHP テーブル内容にリンク付をつけて検索したい

    以下のような2つのPHPを作成しました。 PHPにおいて、検索ボタンが押されると、 SQLで記述したデータベースから値を持ってきてtable表示させているのですが、 その際に取得した値にリンクを付けて、再検索をする方法がわかりません。 POST変数で渡してやれば、というところはなんとなくわかるのですが、 具体的な方法をご教示いただきたいです。 どうかよろしくお願いいたします。 ------------------------------------------------------------------------ HTML側(データを検索・表示させるため)のtable.php <?php $nengetu = isset($_POST['nengetu']) ? $_POST['nengetu'] : ""; ?> HTML表示箇所 <?php <form method="post" action="tables.php"> <button type="submit" name="search">検索</button>←ボタンを押されたら表示 <thead>  <tr>   <th>年月</th>   <th>名前</th>   <th>金額</th>  </tr> </thead> <tbody> if(isset($_POST['search'])) $query.= "SELECT * FROM AAA"; if (!empty($nengetu)) { $query.=" WHERE nengetu = '$nengetu"; $dataview($query); ?> ------------------------------------------------------------------------ ------------------------------------------------------------------------ PDOで取得したテーブル内容を表示 class.table.php public function dataview($query) { クエリーを実行 ループ <tr> <td><?php print($row['name']); ?></td>←リンク付きで表示、table.phpで検索 <td><?php print($row['kingaku']); ?></td> <td><?php print($row['nengetu']); ?></td> </tr> } ------------------------------------------------------------------------

    • ベストアンサー
    • PHP
  • HTMLでテーブルの並び替え

    HTMLでテーブルの並び替えで質問です。 以下テーブルの1行目各項目名をクリックすると対象列の昇順、さらにクリックで降順、再度クリックで昇順が行いたいと思っております。 <form name="nForm"> <table> <thead> <tr><th>項目A</th><th>項目B</th><th>項目C</th></tr> </thead> <tbody> <tr><td>20</td><td>い</td><td><input type="text" id="TX[0]" name="TX[0]" value="20"></td></tr> <tr><td>30</td><td>あ</td><td><input type="text" id="TX[1]" name="TX[1]" value="50"></td></tr> <tr><td>10</td><td>お</td><td><input type="text" id="TX[2]" name="TX[2]" value="30"></td></tr> <tr><td>55</td><td>え</td><td><input type="text" id="TX[3]" name="TX[3]" value="10"></td></tr> <tr><td>90</td><td>う</td><td><input type="text" id="TX[4]" name="TX[4]" value="15"></td></tr> </tbody> </table> </form> いくつかの方法を試してみたのですが思った結果が出ない為お知恵をお借りできないでしょうか? http://jsajax.com/Articles/jQueryTableSorter/1120 の方法は試行してみましたがテキストフィールドの並び替えがnameの値で並び替えが掛ります。 value(変動値)での並び替えを行うことが必要です。

    • ベストアンサー
    • HTML
  • データベースの中身をテーブルで表示したいです

    mysqlデーターベースの中身をテーブルで表示したいのですがわからない事があるので書き込みしました。 テーブルAのデーターを <TABLE> <TR><TD>mysql1行目</TD><TD>mysql2行目</TD></TR> <TR><TD>mysql2行目</TD><TD>mysql4行目</TD></TR> </TABLE> <TD></TD>の間にレコード一つ分のデータを入れて2列で表示したいです。 whileを使ってデーターを取り出すと1行にレコード一つ分のデーターを表示するのはそのままできるんですが1行にレコード二つ分のデーターを出す場合<TR>と</TR>をどういう仕組みで表示させれば良いかわかりません。 誰か教えてもらえないでしょうか?

    • 締切済み
    • PHP
  • データベースからのキーワード検索

    いつもお世話になっております。 PHP初心者です。 あるデータベースから条件を指定して検索するPHPがあります。 セレクトボックスの選択項目とキーワード検索があったものを、キーワード検索だけ使いたくてセレクトボックスを削除するとキーワード検索が動かなくなりました。 元はこういうものです <table border="0" cellpadding="0" cellspacing="0" class="seachbox"> <tr> <form name="form1" method="get" action="list.php"> <td align="right"><table border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="middle">&nbsp;</td> <td>キーワード</td> <td>&nbsp;</td> </tr> <tr> <td valign="middle"><select name="munic" class="style_12px_BL" id="serch01" onChange="AreaList(this.options[selectedIndex].value)"> <option value ="9999" selected>指定しない</option> <?php $sql = "select Mu_id,Mu_name from Munic_table order by Mu_order"; $rs = mysql_query($sql); while($row=mysql_fetch_array($rs)){ print("<OPTION value=". $row["Mu_id"] . ">". $row["Mu_name"] . "</OPTION>?n"); } ?> </select></td> <td><input name="key" type="text" value="" size="20" maxlength="30"> </td> <td><table border="0" cellspacing="0" cellpadding="0"> <tr> <td><input type="image" src="image/serch_but.gif" alt="検索" id="serch01" width="65" height="20" border="0"></td> </tr> </table></td> </tr> </table> <input name="fn" type="hidden" id="fn" value="sr"></td> </form> </tr> </table> この状態だとキーワード検索が動くのですが、select部分を削除すると検索結果のページにエラーが出てキーワードが反映されません。 中程にあるPHPに何らかの指定が必要なのだと思うのですが、どう書けばよいかわからない状態です。 宜しくお願い致します。

    • 締切済み
    • PHP
  • HTMLでテーブルを作成した際、テーブル間にスペースが空いてしまいます

    HTMLでテーブルを作成した際、テーブル間にスペースが空いてしまいます。 スタイルシートを使用/使用せず、いずれの場合も変わりません。 会社のPCで表示した時になり、家ですると自動的に詰めて表示されるみたいです。 コードはいたってシンプルで・・・ <html><head><title>aaa</title> </head> <body> aaa <hr> <table border=1> <tr><td>名前</td><td><input type="text" name="name"></td></tr> </table> <table border=1> <tr><td>名前</td><td><input type="text" name="name"></td></tr> <tr><td>名前</td><td><input type="text" name="name"></td></tr></table> <table border=1> <tr><td>名前</td><td><input type="text" name="name"></td></tr> <tr><td>名前</td><td><input type="text" name="name"></td></tr> <tr><td>名前</td><td><input type="text" name="name"></td></tr> <tr><td>名前</td><td><input type="text" name="name"></td></tr> </table> </body> </html> 守秘義務があるので、今は中身を適当に書いてますが、書き方はこんな感じです。 スタイルシートやHTMLコードなど色々調べましたが、テーブルの中の文字などを 詰めたりする方法は載ってましたが、今の私の知識ではテーブル自体は左右にしか動けません。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • jsp、サーブレットの質問です。

    Tomcatを使用してjspとサーブレットを使い掲示板のような投稿サイトもどきを作成していますが解決できない部分があります。 ↓は表示用のjspです♪ <html> <head> <title>Insert title here</title> </head> <body> <% String lsts = (String)request.getAttribute("lst"); %> <table border="4"> <tr> <td>日時</td> <td>タイトル</td> <td>スレッド主</td> <td></td> </tr> <tr> <td><%for(int i = 0; i<lsts.length(); i++){ out.println(lsts); } %> </td> <td><%out.println(); %></td> <td><%out.println("");%></td> <td> </td> </tr> </table> </form> </body> </html> こちらがサーブレットです otected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*DB接続処理は省略します*/ try{ ps = (PreparedStatement) con.prepareStatement(sql); String sql = "select * from thred"; ResultSet rs = ps.executeQuery(); //テーブル内一覧取得 while(rs.next()){ rs.getString("time"); rs.getString("title"); rs.getString("id"); rs.getString("thredid"); String s = (rs.getString("time")+","+ rs.getString("title")+","+rs.getString("id")); String[] lsts = s.split(","); List<String> thlists = Arrays.asList(lsts); String ss = (thlists.get(0)); request.setAttribute("thlst",ss); RequestDispatcher dispatcher= request.getRequestDispatcher("/list.jsp"); dispatcher.forward(request,response); } }catch(SQLException e){ e.printStackTrace(); } catch(ClassNotFoundException e){ e.printStackTrace(); }finally{ try { con.close(); } } } jspの方にサーブレットでthredDBから抜き取ったtimeとtitleとidを全て表示させたいのですが 現状だと 2014-06-03 06:45:02  aaaa 1 の行だけがたくさん表示されてしまいます 恐らくスコープを取得した時点でこの↑の1行のものしかとれてこれていないのだと思います... どのように処理を行ったらよいのでしょうか? DBの中身は画像添付いたしますっ

  • HTMLの質問なのかJAVAサーブレットの質問なのか微妙なのですがテー

    HTMLの質問なのかJAVAサーブレットの質問なのか微妙なのですがテーブルを一行に二つ表示したいのですが表示はできるんですが表示位置を中央にすることができなくて困ってます どうすれば中央にすることができますか? while(rs2.next()){ String name = rs2.getString("st.staff_name"); String kana = rs2.getString("st.staff_kana"); String birthday = rs2.getString("st.birthday"); String sex = rs2.getString("sm.sex"); String blood = rs2.getString("bm.blood_type"); String hight = rs2.getString("st.hight"); String weight = rs2.getString("st.weight"); String reration = rs2.getString("st.reration"); String mobile = rs2.getString("st.mobile_tel"); String tel = rs2.getString("st.tel"); out.println("<br></br><TABLE border=0 align=\"center\"><table border=1 align=\"left\"><tr><th width=150>氏名</th>"); out.println("<td width=200>"+name+"</td></tr><tr>"); out.println("<th>ヨミガナ</th>"); out.println("<td>"+kana+"</td></tr><tr>"); out.println("<th>生年月日</th>"); out.println("<td>"+birthday.replace("-", "/")+"</td></tr><tr>"); out.println("<th>性別</th>"); out.println("<td>"+sex+"</td></tr><tr>"); out.println("<tr><th>身長</th>"); out.println("<td>"+hight+"</td></tr>"); out.println("<tr><th>体重</th>"); out.println("<td>"+weight+"</td></tr>"); out.println("<tr><th>血液型</th>"); out.println("<td>"+blood+"</td></tr>"); out.println("<tr><th>携帯電話番号</th>"); String mtel=""; if(mobile!=null&&mobile.length()>0){ for (int i = 0; i < mobile.length(); i++) { char ch = mobile.charAt(i); if(i==3){ mtel+="-"; } if(i==7){ mtel+="-"; } mtel+=ch; if(mobile.length()==0){ mtel="-"; } } }else{ mtel="不所持"; } out.println("<td>"+mtel+"</td></tr>"); out.println("<tr><th>自宅電話番号</th>"); String ttel=""; for (int i = 0; i < tel.length(); i++) { char ch = tel.charAt(i); if(i==4){ ttel+="-"; } if(i==6){ ttel+="-"; } ttel+=ch; } out.println("<td>"+ttel+"</td></tr>"); out.println("<tr><th>続柄</th>"); out.println("<td>"+reration+"</td>"); out.println("</tr></table>");