Beberapa saat yang lalu sempet bingung dengan paging halaman web dengan ASP. Aq bisanya cuma menampilkan seluruh record dalam satu halaman, untuk membagi-bagi jadi beberapa halaman aQ kesulitan. Kalo pake PHP aQ biasanya pake fungsi LIMIT di mySqlnya. Coba itu tak terapin di ASP, ternyata ga bisa. SQL ga bisa pake fungsi LIMIT.

Kemaren aQ baru nemuin caranya. Cara yang Q temuin pake fungsi looping.
do [syarat]
  [kondisi]
loop

Aq coba untuk sedikit menjelaskan disini. Ilustrasinya seperti ini :

Jumlah data posting yang ada = 17
jumlah_post = 17

Jumlah data yang ditampilkan per halaman = 5
publish_post = 5

Jumlah halaman diperoleh dari : jumlah_post/publish_post
jumlah_hal = int(jumlah_post/publish_post)
jumlah_hal = int(17/5)
jumlah_hal = 3

dari kondisi di atas bisa dilihat 17/5 = 3 sisa 2. Karena ada sisa maka halaman akan menjadi 4.
jika jumlah_post mod publish_post > 0 maka
jumlah_hal = jumlah_hal + 1
17 mod 5 = 2, 2 > 0
jumlah_hal = 3 + 1 = 4

contoh di atas adalah cara untuk mendapatkan jumlah halaman, untuk memperoleh rentang posting yang ter-publish menggunakan rumus berikut :

Jika halaman yang direquest = 3
halaman = 3maka data awal posting yang ditampilkan adalah data ke 11
awal = 11
awal = 10 + 1
awal = (2*5) + 1
awal = (2*publish_post) + 1
awal = ((halaman-1)*publish_post) + 1

data akhir yang ditampilkan = 15
akhir = 15
akhir = 3*5
akhir = 3*publish_post

Dari rumus-rumus di atas, sekarang kita bisa membuat programnya. Codenya seperti ini :
<%
query = "SELECT COUNT(*) as jml FROM post"
rs.open query, conn
halaman = request.QueryString("halaman")
if halaman = "" then
  halaman = 1
end if
jumlah_post = rs("jml")
rs.close
publish_post = 5
jumlah_hal = int(jumlah_post/publish_post)
if jumlah_post mod publish_post > 0 then
  jumlah_hal = jumlah_hal + 1
end if
awal = (halaman-1) * publish_post + 1
akhir = halaman * publish_post
fot j = 1 to jumlah_hal
link = link & "<a href=post.asp?halaman="& j &">"& j &"</a>"& " - "
next
‘ di atas adalah fungsi untuk menampilkan link halaman
%>

untuk menampilkan data, codenya seperti berikut :
<%
strsql = "SELECT * FROM post ORDER BY tanggal DESC"
rs.open strsql, conn
i = 0
do until rs.eof or i > akhir
i = i + 1
if i >= awal and i <= akhir then
. . .
. . .   ‘ code HTML untuk posting
. . .
end if
rs.movenext
loop
rs.close
response.write “Halaman : ” & link
%>

Hasli preview jadi seperti ini :

Posting 17
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ligula lorem, consequat eget, tristique nec, auctor quis, purus. Vivamus ut sem. Fusce aliquam nunc vitae purus.
Posting 16
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ligula lorem, consequat eget, tristique nec, auctor quis, purus. Vivamus ut sem. Fusce aliquam nunc vitae purus.
Posting 15
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ligula lorem, consequat eget, tristique nec, auctor quis, purus. Vivamus ut sem. Fusce aliquam nunc vitae purus.
Posting 14
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ligula lorem, consequat eget, tristique nec, auctor quis, purus. Vivamus ut sem. Fusce aliquam nunc vitae purus.
Posting 13
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ligula lorem, consequat eget, tristique nec, auctor quis, purus. Vivamus ut sem. Fusce aliquam nunc vitae purus.

Halaman : 1 - 2 - 3 - 4