2016-05-08 3 views
1

DBから生成されたデータをサーブレットとDISPLAY ITの複数のテーブルに分割したいと思います。表はプレゼンテーションIDを使用して構成されています。たとえば、私には10人の人がいます。監督者と審査官に同じavailableIDを割り当てる必要があります。私のシステムは、類似しているかどうかを確認しますavailableID結果をdbにサブミットする前にサーブレットの列に基づいて複数のテーブルに配置します

管理者がSAVEボタンをクリックしてdbに挿入する前に、サーブレットを使用して表示したいと考えています。

Sevletは:

  for (int i=0; i<studentID.length ; i++) { 
      FreeBean free = new FreeBean(); 
      free = GenerateScheduleDAO.getFree(supervisorID[i],examinerID[i]); 

      String SVavailableID = free.getAvailableID(); 
      String EXavailableID = free.getAvailableID(); 
      Date FreeDate = free.getFreeDate(); 

      System.out.println("sv: "+ supervisorID[i] + SVavailableID + " ev: "+ examinerID[i] + EXavailableID); 

      if (SVavailableID.equals(EXavailableID)) 
      { 
       if(SVavailableID.equals("2")&& EXavailableID.equals("2")){ 
        out.println("<br><center><table><tr>" 
            + "<th>Name</th>" 
            + "<th>Title</th>" 
            + "<th>Supervisor</th>" 
            + "<th>Examiner Name</th>" 
            + "<th>availableID</th>" 
            + "<th>Time </th>" 
            + "</tr>"); 
        out.println("<tr>"); 

        out.println("<tr>"); 
        out.println("<td>"+ studentID[i]+"</td>"); 
        out.println("<td> Hello </td>"); 
        out.println("<td>"+ supervisorID[i] +"</td>"); 
        out.println("<td>"+ examinerID[i] +"</td>"); 
        out.println("<td>"+ SVavailableID+"</td>"); 
        out.println("<td>"+ FreeDate+"</td>"); 
        out.println("</tr><br>"); 
        out.println("</center></table>"); 
       }//2 
       if(SVavailableID.equals("7")&& EXavailableID.equals("7")){ 
        out.println("<br><center><table><tr>" 
            + "<th>Name</th>" 
            + "<th>Title</th>" 
            + "<th>Supervisor</th>" 
            + "<th>Examiner</th>" 
            + "<th>availableID </th>" 
            + "<th>Time</th>" 
            + "</tr>"); 
        out.println("<tr>"); 

        out.println("<tr>"); 
        out.println("<td>"+ studentID[i]+"</td>"); 
        out.println("<td> Hello </td>"); 
        out.println("<td>"+ supervisorID[i] +"</td>"); 
        out.println("<td>"+ SVavailableID+"</td>"); 
        out.println("<td>"+ FreeDate+"</td>"); 
        out.println("</tr><br>"); 
        out.println("</center></table>"); 
       }//7 
        if(SVavailableID.equals("10")&& EXavailableID.equals("10")){ 
        out.println("<br><center><table><tr>" 
            + "<th> Name</th>" 
            + "<th> Title</th>" 
            + "<th>Supervisor</th>" 
            + "<th>Examiner</th>" 
            + "<th>availableID </th>" 
            + "<th>Time </th>" 
            + "</tr>"); 
        out.println("<tr>"); 

        out.println("<tr>"); 
        out.println("<td>"+ studentID[i]+"</td>"); 
        out.println("<td> Hello </td>"); 
        out.println("<td>"+ supervisorID[i] +"</td>"); 
        out.println("<td>"+ examinerID[i] +"</td>"); 
        out.println("<td>"+ SVavailableID+"</td>"); 
        out.println("<td>"+ FreeDate+"</td>"); 
        out.println("</tr><br>"); 
        out.println("</center></table>"); 
       } 
        if(SVavailableID.equals("16")&& EXavailableID.equals("16")){ 
        out.println("<br><center><table><tr>" 
            + "<th>Name</th>" 
            + "<th>Title</th>" 
            + "<th>Supervisor</th>" 
            + "<th>Examiner</th>" 
            + "<th>availableID </th>" 
            + "<th>Time </th>" 
            + "</tr>"); 
        out.println("<tr>"); 

        out.println("<tr>"); 
        out.println("<td>"+ studentID[i]+"</td>"); 
        out.println("<td> Hello </td>"); 
        out.println("<td>"+ supervisorID[i] +"</td>"); 
        out.println("<td>"+ examinerID[i] +"</td>"); 
        out.println("<td>"+ SVavailableID+"</td>"); 
        out.println("<td>"+ FreeDate+"</td>"); 
        out.println("</tr><br>"); 
        out.println("</center></table>"); 
       } 

      } 

はしかし、私はこの結果を取得しています:

Name  Title Supervisor Examiner availableID  Time 
    abc   Hello  1024  1001   7  null 
    Name  Title Supervisor Examiner availableID  Time 
    abc   Hello  1024  1001   7  null 
    Name  Title Supervisor Examiner availableID  Time 
    abc   Hello  1024  1001   7  null 
    Name  Title Supervisor Examiner availableID  Time 
    abc   Hello  1024  1001   7  null (so on..) 

期待される成果は次のようになります。

availableID = 7

Name  Title Supervisor Examiner availableID  Time 
abc   Hello  1024  1001   7  null 
def   Hi  1024  1001   7  null 
ghi   Hey  1002  1004   7  null 
jkl   hhh  1027  1011   7  null 
mno   123  1014  1034   7  null 

availableID = 10

Name  Title Supervisor Examiner availableID Time 
    pqr   3333  1026  1021   10  null 
    stu   4444  1023  1001   10  null 
    vwx   5555  1002  1002   10  null 
    yz1   6666  1027  1031   10  null 
    234   7777  1034  1004   10  null 

これをどのように並べ替えることができますか?

+0

あなたの質問は何ですか? – Perdomoff

+0

私は 'availableID'に基づいて結果を分割したいと思います。私の期待される結果を見てください。しかし、私のコードは、最後の結果を生成します。 – Elly

答えて

0

まず、コードを何度も繰り返しているようです。どのIDを取得しても、同じ正確な(または同様の)タスクを実行しています。 グループ化できる条件をグループ化し、可能であれば1つのコードブロックを書くことをお勧めします。

だから、この

if (SVavailableID.equals(EXavailableID)){ 
    if (SVavailableID.equals("7") || SVavailableID.equals("2") || // and so on...) { 
     // print students data 
    } 
} 

ようなものになるだろう第二に、私は直感的には、各学生のためテーブルヘッダを印刷したくないと言うでしょう。 あらかじめ印刷しておき、学生のarrayをループして詳細を印刷したいとします。だから、次のコードの断片は、最後にあなたの出力に基づいてfor loop

// outside the for loop 
out.println("<br><center><table><tr>" 
    + "<th>Name</th>" 
    + "<th>Title</th>" 
    + "<th>Supervisor</th>" 
    + "<th>Examiner</th>" 
    + "<th>availableID </th>" 
    + "<th>Time</th>" 
    + "</tr>"); 

// now loop through students array and print details here... 

外に行くと、あなたが同じ値を得続けるために、私は何かが、次のいずれかが間違っていると思うだろう:

  1. あなたがループしているデータ
  2. studentID配列をループしていますが、テーブルに表示されるデータを含むデータ構造をループしているようには見えません(もし、freeそれを表すヘルプ)
  3. あなたのfor loopの中に次の声明があります。

    // most likely they'll have the same value!! 
    String SVavailableID = free.getAvailableID(); 
    String EXavailableID = free.getAvailableID(); 
    

htmlを印刷する前に、あなたはそれらの値を比較しているが、これらのステートメントは、これらのIDの'Sに同じ値を代入しています。あなたが可能にするgetAvailableID()メソッドを使って何らかのロジックを実装していない限り、彼らは異なる結果を返すことはまずありません。

EDIT:あなたはあなたが使用可能な各ID

のための別々のテーブルを持つようにしたいどのように説明したところ、私はちょうど私が

// loop through each available ID 
for(String ID : availableIdCollection){ 

    // print table headers here 

    // loop through students array 
    for(Student s : studentCollection){ 

     // print students data here 
    } 
} 

ことを行うために擬似コードアルゴリズムを試してみて、スケッチますあなたの答えにあなたのコメントを読みます

基本的に2つのネストされたforループがあります。利用できるID'S

  • あなたはをループするためにあなたが望むテーブルヘッダを印刷した後、テーブルのヘッダーに

  • を印刷し、内部ループの前をループ思い外側のループあなたに

    1. 学生の配列と各学生のデータを印刷

  • +1

    ありがとうございました。私はそれを見て、後であなたに知らせます:) @AngeloOparah – Elly

    関連する問題