พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
ASP programming / การแบ่งหน้า
aln
aln
Mon 18 Sep 2006 14:52:30

พี่ครับขอรบกวนอีกครั้งนะครับ...พี่ลองช่วยไล่ดูโค้ดที่ผมทำไว้ให้หน่อยครับ.มีปัญหาตรงที่ ตอนแรกผมได้ทำการ search โดย Request.form ไป ตัวนี้ค้นหาได้แล้วแต่พอเลือกหน้าอีกหน้าหนึ่งข้อมูลทั้งหมดในฐานข้อมูลได้ขึ้นหาครับทั้งๆ ที่ค้นหาไปแล้ว ซึ่งผมคิดว่าคงเกี่ยวกับการแบ่งหน้าซึ่งเวลาผมเรียกอีกหน้าหนึ่งผมได้ Request.Querysting ไว้ครับ..อยากให้พี่ลองช่วยดูหน่อยนะครับ

****************************************************************

<!--#include file="header.asp" -->
<!--#include file="Database/connectDB.asp" -->
<!--#include file="Database/connectDB1.asp" -->
         <script language="JavaScript" type="text/JavaScript">
<!--
function Confout(object) {
  if (confirm(" คุณแน่ใจ  หรือไม่ ?  ที่จะลบรายการนี้ ") == true) {
   return true;
   }
   return false;
   }
   
//-->
</script>               
<% 
strAction=Request.Form("action")
If strAction="" Then strAction=Request.QueryString("action")
Select Case strAction
Case "delete"  '------- Block Delete ลบข้อมูล
 strAsDetailID=Request.QueryString("id")   '  รับค่าจาก link Delete
 ' ตรวจเช็คข้อมูลในตาราง Tblcircletype_ID ก่อน
 SQL="SELECT * FROM TblScholarship_Detail WHERE AsDetailID='"&strAsDetailID&"'"
 Set RSchkDel=Conndel.Execute(SQL)
  If RSchkDel.EOF Then
   SQL="DELETE  FROM TblScholarship WHERE AsDetailID='"&strAsDetailID&"'"
   Set RS1=Conndel.Execute(SQL)
   Set RS1=Nothing
  Else ' มีค่าที่ตาราง tblCircleType_ID เชื่อมโยงมา%>
  <SCRIPT language=JavaScript>
  <!--
  var answer = confirm ("การดำเนินการลบมีผลกระทบกับรายการผู้ได้รับทุน !! คุณต้องการดำเนินการกับรายการผู้ได้รับทุนหรือไม่ ?? ")
  if (answer)
  window.location='Del_Scholarship.asp?id=<%=strAsDetailID%>'
  // -->
  </SCRIPT>
                    <%
 End If
 Set RSchkDel=Nothing
 Conndel.Close
 Set Conndel=Nothing
Case Else  '---- เขียน เหตุการณ์นอกเหนือ ที่เราควบคุม
End Select
'-------End Block Operation
%>

                      <%
       select_manu=Request.form("select")
       keyword=Request.form("txt_Search")
       select_year=Request.form("YearSch")
        if keyword = "" then
         keyword=Request.QueryString("keyword")
       end if
       if select_manu="" then
        'select_manu=Request.QueryString("select_manu")
        select_manu="ประเภททุน"
       end if
       if keyword = "" And select_manu = "ทั้งหมด" And select_year<> "--[เลือกปีการศึกษา]--" then
          sql ="Select * From QrScholarship WHERE  YearsSch Like '%"&select_year&"%'  ORDER BY AsLakhID"
       elseif select_manu = ""  And select_year<> "--[เลือกปีการศึกษา]--" then
           sql ="Select * From QrScholarship WHERE  YearsSch Like '%"&select_year&"%'  ORDER BY AsLakhID"
      ' elseif keyword = "" And select_manu = "ทั้งหมด"  then
          ' sql ="Select * From QrScholarship WhereYearsSch '"&select_year&"' " 
       else
         select case select_manu
         case "ประเภททุน"      sql ="Select * From QrScholarship WHERE Als_Name Like '%" & keyword & "%'  And  YearsSch Like '%"&select_year&"%' ORDER BY AsLakhID"
         case "ชื่อทุน"       sql ="Select * From QrScholarship WHERE Asd_name Like '%" & keyword & "%' And  YearsSch Like '%"&select_year&"%'  ORDER BY AsLakhID"
         case "ทั้งหมด"       sql ="Select * From QrScholarship ORDER BY AsLakhID"
         end select
       end if
       Set rs=Server.CreateObject("ADODB.Recordset")
        rs.Open Sql, conn, 1, 3   
         rs.PageSize=10         ' default=10
       If Request.QueryString("Page")="" Then
           CurrentPage=1
       Else
           CurrentPage=CInt(Request.QueryString("Page"))   ' ไม่แปลงจะเปรียบเทียบค่าไม่ได้
       End If
       with response
          .Write "<script language='JavaScript'>"
           .Write "function newtopic() { window.open('searchScholarship.asp','','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=400,height=300'); }"
          .Write "function toPage(select) {"
          .Write "parent.location='searchScholarship.asp?select="& select_manu & "&txt_Search="&keyword&"&YearSch="&select_year&"&Page=' + select.options[select.selectedIndex].value }"
         .Write "</script>"       
       end with
      %>

           <form name="form1" method="post" action="searchScholarship.asp">
              <table width="612" height="191" border="0" align="center" cellpadding="0" cellspacing="0">
                <tr>
                  <td width="1" height="20">&nbsp;</td>
                  <td colspan="3"><table width="367" border="0" cellspacing="0" cellpadding="1">
                      <tr>
                        <td width="5">&nbsp;</td>
                        <td width="81"><font color="#CC3300">ค้นหาจาก</font></td>
                        <td width="172">&nbsp;</td>
                        <td width="101"><font color="#CC3300">ปีการศึกษา</font></td>
                      </tr>
                    </table></td>
                  <td width="2">&nbsp;</td>
                </tr>
                <tr>
                  <td height="24">&nbsp;</td>
                  <td width="7" valign="top"><font color="#CC0000">&nbsp; </font></td>
                  <td width="452" valign="top"><font color="#CC0000">
                    <select name="select" class="listbox">
                      <option selected><%=select_manu %></option>
                      <option >ประเภททุน</option>
                      <option >ชื่อทุน</option>
        <option >ทั้งหมด</option>
                    </select>
                    <font size="2" face="MS Sans Serif, Tahoma, sans-serif">
                    <input name="txt_Search"  value="<%= keyword%>" type="text" id="txt_Search3" size="30" class="TextBoxP">
                         <%
        set rsyear=conn.execute("SELECT YearsSch FROM TblScholarship GROUP BY YearsSch  ")
      %>
                    <select name="yearsch" class="listbox" id="yearsch">
                      <option selected>--[เลือกปีการศึกษา]--</option>
                      <%
        while not rsyear.eof
       %>
                      <option value="<%=rsyear("YearsSch")%>"><%=rsyear("YearsSch")%></option>
                      <%
       rsyear.movenext
        wend
       rsyear.Close
       %>
                    </select>

                    <input name="cmdSearch" type="submit" id="cmdSearch2" value="ค้นหา" class="button" style="cursor:pointer">
                    </font></font></td>
                  <td width="150" valign="top"><font color="#CC0000">หน้า
                      <%
       with Response
             .Write "<select size=1 onChange=""toPage(this,'" & keyword & "')"">"
            For i=1 To rs.PageCount
            .Write "<option value=" & i
            If i=CurrentPage Then .Write " selected"  End If
            .Write ">" & i
            Next
    %>
                    </select>
                    จากทั้งหมด
                    <% =rs.PageCount %>
                    หน้า
                    <%
         End With
         Color=0
         i=1
         If Not rs.Eof Then
          '  rs.AbsolutePage=CurrentPage
          rs.Move rs.PageSize*(CurrentPage-1)
    %>

                    </font></td>
                  <td>&nbsp;</td>
                </tr>
                <tr>
                  <td height="88">&nbsp;</td>
                  <td colspan="3" valign="top"><TABLE width="604" border=0 align="center" cellPadding=0 cellSpacing=0>
                      <TBODY>
                        <TR>
                          <TD width=12><IMG height=12
            src="images/main_out_top_left.jpg"
            width=12></TD>
                          <TD width=781
          background="images/main_out_top_mid.jpg"></TD>
                          <TD width=12><IMG height=12
            src="images/main_out_top_right.jpg"
            width=12></TD>
                        </TR>
                        <TR>
                          <TD height="64"
          background="images/main_out_mid_left.jpg"></TD>
                          <TD align="left" valign="top" bgcolor="#FFFFFF"
          style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px">
                            <div align="center">
                              <%
                              with Response
                .Write "<table border=0 cellpadding=0cellspacing=0 align=right width='99%'>"
          .Write "<tr>"
          .Write "<td colspan='6'><font color=#CC0000 class='detail'>จำนวนรายการที่ค้นพบทั้งหมด " & rs.RecordCount & "  รายการ</font></td>"
          .Write "</tr>"
          .Write "<tr bgcolor=#d5e6ff>"
          .Write "<td width='8%'><div align=center><font color=#000000 >รหัส</font></div>"
          .Write "<td width='15%'><div align=center><font color=#000000 >ประเภททุน</font></div>"
          .Write "<td width='35%'><div align=center><font color=#000000 >ชื่อทุน</font></div>"
          .Write "<td width='9%'><div align=center><font color=#000000 >ปีการศึกษา</font></div>"
          .Write "<td width='9%'><div align=center><font color=#000000 >รายละเอียด</font></div>"
          .Write "</tr>"
          end with
         Else
         %>
                <script language=javascript>
            alert("ไม่พบข้อมูลที่ได้ทำการค้นหา..กรุณาทำการค้นหาใหม่..");
            window.location="searchScholarship.asp";
          </script> 
         <%
         End If
         Do While Not rs.Eof  and i<= rs.PageSize
         With Response
            If Color=0 Then
            .Write "<tr bgcolor=#E9F2F3>"
            Color=1
            Else
            .Write "<tr bgcolor=#FFFFFF>"
            Color=0
            End If  
           .Write "<td><div align=center><font color=#000000 class='detail'>"& rs("AsDetailID")&"</font></div>"
          .Write "<td><div align=left><font color=#000000 class='detail'>"& rs("Als_Name") &"</font></div>"
          .Write "<td><div align=left><font color=#000000 class='detail'>"& rs("Asd_name") &"</font></div>"
          .Write "<td><div align=center><font color=#000000 class='detail'>"& rs("YearsSch") &"</font></div>"
           .Write "<td><div align=center><font color=#000000 class='detail'><a href='ShowScholarship.asp?id="& rs("AsDetailID")&"'><img src='images/xp034.gif' border='0' alt='รายละเอียด'></a></font></div>"
            .Write "</tr>"
          End With
          rs.MoveNext
          i=i+1
          loop

          With Response
             .Write "</table>"
          End With
       %>

                            </div></TD>
                          <TD
          background="images/main_out_mid_right.jpg"></TD>
                        </TR>
                        <TR>
                          <TD><IMG height=12
            src="images/main_out_btm_left.jpg"
            width=12></TD>
                          <TD
          background="images/main_out_btm_mid.jpg"></TD>
                          <TD><IMG height=12
            src="images/main_out_btm_right.jpg"
            width=12></TD>
                        </TR>
                      </TBODY>
                    </TABLE></td>
                  <td>&nbsp;</td>
                </tr>
                <tr>
                  <td height="20">&nbsp;</td>
                  <td valign="top">&nbsp;</td>
                  <td valign="top">&nbsp;</td>
                  <td valign="top">&nbsp;</td>
                  <td>&nbsp;</td>
                </tr>
                <tr>
                  <td height="39">&nbsp;</td>
                  <td colspan="3" valign="top">&nbsp;</td>
                  <td>&nbsp;</td>
                </tr>
              </table>
            </form>
   <%
             rs.Close
          Set rs=Nothing
   %>

            <!--#include file="footer.asp" -->

Administrator
Mon 18 Sep 2006 16:27:26

ผมไม่ค่อยเข้าใจคำถามแต่เท่าที่ดูโค๊ดแล้วปัญหาน่าจะหมายถึงว่า เลือกเปลี่ยนหน้าแล้วข้อมูลยังเป็นข้อมูลเดิมใช่ไหมครับ

การแบ่งหน้าใน MSSQL หรือว่า Access นั้นจะต้องใช้ sub query ช่วยครับเนื่องจาก ไม่มีคำสั่ง limit ให้ใช้ครับ เช่น

SELECT TOP(10) * FROM table_name WHERE column NOT IN (SELECT TOP(10) *  column FROM table_name ORDER BY column) ORDER BY column

จะได้ record ที่ 11-20 ครับ ตัวเลขสีน้ำเงินเป็นค่า offset ครับ ส่วนตัวเลขสีแดงคือ จำนวน record ที่ต้องการ

aln
aln
Mon 18 Sep 2006 21:29:42

คือแบ่งหน้าได้ครับว่าต้องการกี่หน้าแต่ติดปัญหาตรงที่เวลาทำการค้นหาแล้วเกิดมี 2 หน้าขึ้นไปเช่นถ้าเลือกทั้งหมดมี 17 รายการ แต่ถ้าผมค้นหาเฉพาะชื่อทุนจะได้ 15 รายการหน้าแรกจะบอกอย่างนี้แต่พอเลือกไปหน้า 2 กลับขึ้นเป็น 17 รายการเหมือนเดิมครับ

Administrator
Mon 18 Sep 2006 23:34:35
select case select_manu
         case "ประเภททุน"      sql ="Select * From QrScholarship WHERE Als_Name Like '%" & keyword & "%'  And  YearsSch Like '%"&select_year&"%' ORDER BY AsLakhID"
         case "ชื่อทุน"       sql ="Select * From QrScholarship WHERE Asd_name Like '%" & keyword & "%' And  YearsSch Like '%"&select_year&"%'  ORDER BY AsLakhID"
         case "ทั้งหมด"       sql ="Select * From QrScholarship ORDER BY AsLakhID"
         end select

น่าจะอยู่ที่โค๊ดนี้ล่ะครับ เป็นการ select ทั้งหมด ลองทำการตรวจสอบว่าถ้ามีการส่งตัวแปร page มาใน query string ก็ให้ทำการ select เลือกเฉพาะช่วงที่ต้องการครับ ตามคำสั่งข้างบนครับ ส่วนนึงเป็นการทำให้ application เร็วขึ้นมากครับ ถ้ามีหลายๆหน้าขึ้นมา
aln
aln
Mon 18 Sep 2006 23:49:57

ตอนนี้ได้แล้วครับ..แต่ติดนิดหน่อยครับถ้าเกิดฟ้องขึ้นมาแล้วเมื่อกด ok อยากให้ text เครียร์ข้อความที่กรอกออกไปต้องทำยังไงครับ

Administrator
Tue 19 Sep 2006 00:02:19
<script language="javascript" type="text/javascript">
function clearForm(obj){
    obj.textBox.value = '';
}
</script>

<form ...>
<input type="text" name="textBox">
<input type="reset" value="Reset" onclick="clearForm(this.form);">
</form>
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login