さて、最初に、私はWebデザインにかなり慣れていません。しかし、私のプロジェクトでは、多数のデータベースのテーブルに基づいて複数のドロップダウンを設定するページを作成するように依頼されました。そして、私はこの部分が機能するようになったと信じています。これまでのコード(jspページ)を見てください。
CodeSelector.jsp
<%@page import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Codes Page</title>
</head>
<body>
<form name = "codes" method = "POST" action="....." target="_self">
<h1>Please select the applicable codes:</h1>
<select name='code1' onchange="showState(this.value)">
<option value="none">Code One: None</option>
<%
String debug = "ON";
if(debug.equals("ON"))
{
System.out.println("***DEBUGGING IS TURNED ON!!!***");
}
//Pulls the ids and descriptions from the first codes table and stores them in the first drop down
try
{
String caseId = request.getParameter("caseID");
//caseId = "30";
if (caseId == null)
{
//debug
System.out.println("The caseID is NULL!");
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@url:sid","username","password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select id, descr from case_codes");
String tempString;
while(rs.next())
{
//If the code description is more than 125 characters long, truncate the string and append "..." to the end of it.
if (rs.getString(2).length() > 125)
{
tempString = rs.getString(2).substring(0, 125);
%>
<option value="<%=rs.getString(1)%>"><%=rs.getString(1)%> <%=tempString%>...</option>
<%
}
//Else just insert the whole description into the option field.
else
{
%>
<option value="<%=rs.getString(1)%>"><%=rs.getString(1)%> <%=rs.getString(2)%></option>
<%
}
}
//Closes the database connection
stmt.close();
con.close();
}
else if (caseId != null)
{
if(debug.equals("ON"))
{
System.out.println("The caseID is NOT NULL!");
}
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@url:sid","username","password");
Statement stmt = con.createStatement();
//Returns a list of all the tables and views in the database
if(debug.equals("ON"))
{
DatabaseMetaData meta = con.getMetaData();
ResultSet res = meta.getTables(null, null, null, new String[] {"TABLE"});
while (res.next())
{
System.out.println(
" "+res.getString("TABLE_CAT")
+ ", "+res.getString("TABLE_SCHEM")
+ ", "+res.getString("TABLE_NAME")
+ ", "+res.getString("TABLE_TYPE")
+ ", "+res.getString("REMARKS"));
}
}
if(debug.equals("ON"))
{
System.out.println("BEFORE SQL Statement: select id from cases");
}
//Returns a result set of all the ids in the cases table
ResultSet rs = stmt.executeQuery("select id from cases");
if(debug.equals("ON"))
{
System.out.println("AFTER SQL Statement: select id from cases");
}
while(rs.next())
{
if(debug.equals("ON"))
{
System.out.println("The rs is: " + rs.getString(1));
}
if(rs.getString(1).equals(caseId))
{
if(debug.equals("ON"))
{
System.out.println("Case ID Found!");
}
ResultSet rs2 = stmt.executeQuery("select rlawcd_id, display_seq from cs_rlawcd where cs_id = " + caseId);
while(rs2.next())
{
if(debug.equals("ON"))
{
System.out.println("Inside rs2 while loop");
}
//If no values are returned in the rlawcd table, populate the drop down as you normally would
if (rs2 == null)
{
if(debug.equals("ON"))
{
System.out.println("Inside rs2 IF");
System.out.println("rs2 = null");
}
ResultSet rs3 = stmt.executeQuery("select id, descr from case_codes");
String tempString;
while(rs3.next())
{
//If the code description is more than 125 characters long, truncate the string and append "..." to the end of it.
if (rs3.getString(2).length() > 125)
{
tempString = rs3.getString(2).substring(0, 125);
%>
<option value="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=tempString%>...</option>
<%
}
//Else just insert the whole description into the option field.
else
{
%>
<option value="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=rs3.getString(2)%></option>
<%
}
}
}
//Else if the values are indeed returned and the display sequence equals 1
//populate the drop downs normally but with the returned values set as the selected/default items
else if(rs2.getString(2).equals("1"))
{
if(debug.equals("ON"))
{
System.out.println("Inside rs2 ELSE IF");
System.out.println("The rs2 is NOT NULL!");
}
String codeID = rs2.getString(1);
ResultSet rs3 = stmt.executeQuery("select id, descr from case_codes");
String tempString;
while(rs3.next())
{
if(debug.equals("ON"))
{
System.out.println("Inside rs3 while loop");
}
if (rs3.getString(1).equals(codeID))
{
if(debug.equals("ON"))
{
System.out.println("Inside rs3 IF");
System.out.println("A matching law code was found!");
}
//If the code description is more than 125 characters long, truncate the string and append "..." to the end of it.
if (rs3.getString(2).length() > 125)
{
tempString = rs3.getString(2).substring(0, 125);
%>
<option selected="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=tempString%>...</option>
<%
}
//Else just insert the whole description into the default/selected option field.
else
{
%>
<option selected="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=rs3.getString(2)%></option>
<%
}
}
else
{
//If the code description is more than 125 characters long, truncate the string and append "..." to the end of it.
if (rs3.getString(2).length() > 125)
{
tempString = rs3.getString(2).substring(0, 125);
%>
<option value="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=tempString%>...</option>
<%
}
//Else just insert the whole description into the option field.
else
{
%>
<option value="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=rs3.getString(2)%></option>
<%
}
}
}
}
else
{
if(debug.equals("ON"))
{
System.out.println("Inside the rs2 ELSE");
System.out.println("Something must have gone wrong.");
}
}
}
}
else
{
//do nothing...
}
}
//Closes the database connection
stmt.close();
con.close();
}
else
{
//debug
System.out.println("Something weird happened.");
}
}
catch (ClassNotFoundException e)
{
System.err.println("ClassNotFoundException: " + e.getMessage());
}
catch (SQLException e)
{
System.err.println("SQLException: " + e.getMessage());
}
catch (Exception e)
{
System.err.println("Generic Exception: " + e.getMessage());
}
%>
</select>
<br>
<br>
<input type="submit" value="Submit">
</form>
</body>
</html>
ただし、ここで、ユーザーが上からドロップダウンボックスで選択した内容に基づいて、updateステートメントとinsertステートメントを使用してデータベースを更新する機能を追加する必要があります。繰り返しになりますが、これはかなり新しいので、これを行うための最善の方法がわかりません。私がグーグルで見つけたものの多くは、この機能が主にコードのこの部分に関係していることを示唆しています:
<form name = "codes" method = "POST" action="...." target="_self">
そして、オンラインの例の多くは、別のphpページを使用することを示唆しているようですか?しかし、2つがどのように相互にリンクされているのか、1つのページのコンテンツが他のページと更新するデータベースとの間でどのように転送されるのかをよく理解していませんでした。submit
この経験のある人は、ここでアドバイスを提供したり、ボタンがクリックされたときにデータベースに書き込むことができるようにするために次に何をしたいのかについて正しい方向に向けてくれますか?