Из выпадающего списка - отобразить соответствующие ему данные из базы данных в текстовые поля, используя JSP - PullRequest
0 голосов
/ 04 марта 2012

Я пытаюсь выбрать данные из выпадающего списка, а также извлечь и отобразить соответствующие значения в текстовые поля. Данные, отображаемые в текстовые поля, взяты из базы данных (база данных mysql). Сценарии выполняются в JSPкоторый выглядит следующим образом:

issue_from.jsp

function showDataIssue(){ 
xmlHttp=GetXmlHttpObject()
var id=document.getElementById("part_no").value;
var url="issue_upd.jsp";// code for issue_upd.jsp is given down
url=url+"?part_no="+id;
xmlHttp.onreadystatechange=stateChanged 
xmlHttp.open("GET",url,true)
xmlHttp.send(null);
}

Здесь part_no - это ключ, значения которого находятся в раскрывающемся списке и при выборе любого значения part_no, соответствующих значений для part_desc,serial_no, mr_no rr_no и po_no должны отображаться в текстовых полях.Поля part_no, part_desc, serial_no, mr_no и rr_no находятся в одной таблице с именем mr_details.Поля part_no, po_no находятся в одной таблице с именем po_details.

issue_form.jsp

function stateChanged(){ 
if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){ 
var showdata = xmlHttp.responseText; 
var strar = showdata.split(":");
  if(strar.length>1){
    var strname = strar[1];
    document.getElementById("mr_no").value= strar[1];
    document.getElementById("rr_no").value= strar[2];
    document.getElementById("serial_no").value= strar[3];
    document.getElementById("part_desc").value= strar[4];
    document.getElementById("po_no").value= strar[5];
     }
   } 
 }

В приведенном выше коде я пытаюсь получить значения полей.Код для Issue_upd.jsp выглядит следующим образом:

Issue_upd.jsp

String pn = request.getParameter("part_no").toString();
System.out.println(pn);
String data ="";
try{
       Class.forName("com.mysql.jdbc.Driver");
       Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/");
       Statement st=con.createStatement();
       ResultSet rs=st.executeQuery("select mr_no,rr_no,serial_no,part_desc from  where         part_no='"+pn+"'");
       ResultSet rs1=st.executeQuery("select po_no from po_details where part_no='"+pn+"'");
while(rs.next())
{
 data = ":" + rs.getString("mr_no") + ": " + rs.getString("rr_no") + ": " +         rs.getString("serial_no")+ ": " + rs.getInt("part_desc")+ ": " + rs1.getInt("po_no");
}
out.println(data);
System.out.println(data);
}catch(Exception e) {
System.out.println(e);
}

Для выпадающего я написал код на Java, который выглядит следующим образом:

Issue_form.java

public class issue_details {
public ResultSet get_part_no() {
ResultSet rs;       
try{
       Class.forName("com.mysql.jdbc.Driver");
       Connection con =DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb");
       Statement st=con.createStatement();
      rs=st.executeQuery("select part_no from mr_details");


}
catch(Exception e) {
System.out.println(e);
rs=null;
}
return rs;
}

И выпадающий код JSP выглядит следующим образом:

issue_form.jsp

<select id="part_no" name="part_no" onchange="showDataIssue();"/>

<%  issue_details p=new issue_details();
ResultSet res = p.get_part_no();
while(res.next())
{

 %>
 <option value="<%=res.getString("part_no") %>"><%=res.getString("part_no")%>
 <%=res.getString("part_no") %></option>

 <%
 } %>

Проблема в том, что я не могу получитьзначения из базы данных.Ни значения сброса не отображаются.Кто-нибудь, пожалуйста, помогите мне найти ошибки в коде.Это было бы очень полезно для меня.Заранее спасибо.

1 Ответ

0 голосов
/ 07 марта 2012

Так как у вас здесь много движущихся частей, вам нужно медленно пройтись по каждой части и подтвердить, что данные верны.

Я бы начал с JavaScript и подтвердил с помощью alert (), что данные возвращаются из вашего запроса xmlHttp.

Затем пошагово переходите к следующим частям и делайте выводы и / или разрывы, чтобы убедиться, что данные отображаются в каждой части.

Я выполнил те же шаги, что и вы, используя JSP и JavaScript, а также базу данных, и когда я натолкнулся на препятствие, подобное тому, на котором вы застряли прямо сейчас, мне неизбежно придется медленно и методично проходить по каждой части, чтобы посмотри, что теряется по пути.

Обычно я просто использую alert () и out.println () в определенных местах, чтобы увидеть, где могут возникнуть проблемы.

...