10/10/2018, 09:50

Giúp mình phân trang php bằng Ajax

mình có một trang web bên trái là menu, khi click vào menu thì nội dung menu sẽ được hiển thị vào phần giữa trang web
cái này mình dùng ajax để load nội dung menu vào trong giữa website.

vấn đề xảy ra là khi mình load nội dung của một trang php (trang này lấy nội dung từ database ra và đã được phân trang bằng php) vào phần giữa website thì nó hiển thị tốt, nhưng khi mình click vào các số trang trong phần phân trang thì nôi dung nó không hiển thị trong phần giữa website nữa mà nó chạy sang một trang mới.Mình muốn khi click chọn trang thứ 5 chẳng hạn thì nội dung nó vẫn hiển thị ở phần giữa website, các bạn giứp mình với.
đây là đemo của mình, các bạn xem giúp với, demo rất đơn giản và dễ hiểu
các bạn copy đường link dưới paste lên browse nhé, mình ko biết cách up file lên diễn đànlink này tồn tại 7 ngày)

http://www.yousendit.com/download/Z0...dkdUWUJjR0E9PQ

p/s:
mình ko biết cách upload lên diễn đàn ai biết chỉ giùm mình với
thuyduongcd viết 11:55 ngày 10/10/2018
Sửa lại ở phần phân trang. Chỗ đường link trang 1,2,3,4,5 sửa lại giống như link trong phần menu là Ok thôi
nobita255 viết 12:01 ngày 10/10/2018
bạn thuyduongcd xem qua phần đemo của mình chưa.Tại vì trong phần phân trang nếu sửa như bạn nói thì không đúng đâu.Làm sao để function ajax nhận biết được các biến được khai báo trong phần phân trang bằng php chứ.Bạn có thể hướng dẫn chi tiết cho mình được không.
file truyencuoi.php đã được phân trang
Code:
<script language="javascript" type="text/javascript">
function paging(num)
{
var ajaxRequest;
try
	{
		ajaxRequest = new XMLHttpRequest();
	}
	catch(e)
	{
		try
		{
			ajaxRequest=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				ajaxRequest=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				alert("Error");
			}
		}		
	}
ajaxRequest.onreadystatechange = function()
	{
		if(ajaxRequest.readyState == 4)
		{
			document.getElementById('noidung').innerHTML = ajaxRequest.responseText;
		}
	}
ajaxRequest.open("GET","truyencuoi.php?",true);
ajaxRequest.send(null);
}
</script>
<?php
$con = mysql_connect("localhost","root","");
mysql_select_db("demodb",$con);

$query = "SELECT * FROM ebookhai";
$result = mysql_query($query);
$total = mysql_num_rows($result);
$perPage = 1;
$numOfPage = ceil($total / $perPage);

if(isset($_GET['page'])==true)
{
	$start = ($_GET['page'] - 1) * $perPage;
}
else
{
	$start = 0;
}
$query1 = "SELECT * FROM ebookhai LIMIT $start, $perPage";
$result1 = mysql_query($query1);
while($row = mysql_fetch_array($result1))
{
	echo $row['ten'].$row['noidung']."<br>";
}
$lui =isset( $_GET['page'] )- 1;
if($lui > 0)
{
	echo "<a href='' onclick='paging('/".$lui."'/)'>Lui</a> ";
}
for($i=1;$i<=$numOfPage;$i++)
{
	if($i == isset( $_GET['page'] ))
	{
		echo "<b><a href='' onclick='paging('/".$i."'/)'><font color='red'>".$i."</font></a></b>  ";
	}
	else
	{
		echo "<a href='' onclick='paging('/".$i."'/)'>".$i."</a>  ";
	}
}
$tien = isset( $_GET['page'] ) + 1;
if($tien <= $numOfPage)
{
	echo "<a href='' onclick='paging('/".$tien."'/)'>Tien</a> ";
}

?>
Mình đã làm thử như bạn nói .Nhưng vẫn không dược (bạn xem qua đemo giùm mình nhé)
thuyduongcd viết 12:04 ngày 10/10/2018
echo "<a href='' onclick='paging('/".$i."'/)'>".$i."</a> ";
Bỏ cái cụm href='' đi là OK
Code:
echo "<a onclick='paging('/".$i."'/)'>".$i."</a> ";
Mấy chỗ khác làm tương tự
nobita255 viết 11:56 ngày 10/10/2018
hic, mình đã sửa như bạn nói, nhưng vẫn không được bạn ơi, giờ click vào số trang thì nó không nhận ra số trang nữa, không hiển thị phân trang nữa.

code
Code:
$query1 = "SELECT * FROM ebookhai LIMIT $start, $perPage";
$result1 = mysql_query($query1);
while($row = mysql_fetch_array($result1))
{
	echo $row['ten'].$row['noidung']."<br>";
}

$lui =isset( $_GET['page'] )- 1;
if($lui > 0)
{
	echo "<a  onclick='paging('/".$lui."'/)'>Lui</a> ";
}

for($i=1;$i<=$numOfPage;$i++)
{
	if($i == isset( $_GET['page'] ))

	{
		echo "<b><a onclick='paging('/".$i."'/)'><font color='red'>".$i."</font></a></b>  ";
	}
	else
	{
		echo "<a  onclick='paging('/".$i."'/)'>".$i."</a>  ";
	}
}
$tien = isset( $_GET['page'] ) + 1;
if($tien <= $numOfPage)
{
	echo "<a onclick='paging('/".$tien."'/)'>Tien</a> ";
}
và đây là function paging
Code:
<script language="javascript" type="text/javascript">
function paging(num)
{
var ajaxRequest;
try
	{
		ajaxRequest = new XMLHttpRequest();
	}
	catch(e)
	{
		try
		{
			ajaxRequest=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				ajaxRequest=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				alert("Error");
			}
		}		
	}
ajaxRequest.onreadystatechange = function()
	{
		if(ajaxRequest.readyState == 4)
		{
			document.getElementById('noidung').innerHTML = ajaxRequest.responseText;
		}
	}
ajaxRequest.open("GET","truyencuoi.php?",true);
ajaxRequest.send(null);
}
</script>
chữ in đậm chính là id của khung div mà mình muốn hiển thị ở đấy
demo
http://www.yousendit.com/download/Z0...dkdUWUJjR0E9PQ
bạn chú ý là code phân trang thì mình làm đúng rồi, nếu chỉ chạy riêng file phân trang thì ngon lành rồi,giờ làm sao để nó hiển thị vào đúng khuôn giữa trang web thôi(dùng ajax đó)
Help Me
thuyduongcd viết 11:57 ngày 10/10/2018
Sửa lại như thế này:
Code:
echo "<a href='javascript:paging('/".$i."'/)'>".$i."</a> ";
nobita255 viết 11:57 ngày 10/10/2018
Hic, phiền bạn quá nhưng như thế vần chưa đc bạn ơi.Click váo số trang nó không nhảy đến trang đó
Code:
$query1 = "SELECT * FROM ebookhai LIMIT $start, $perPage";
$result1 = mysql_query($query1);
while($row = mysql_fetch_array($result1))
{
	echo $row['ten'].$row['noidung']."<br>";
}
$lui =$_GET['page']- 1;
if($lui > 0)
{
	echo "<a  href='javascript:paging('/".$lui."'/)'>Lui</a> ";
}
for($i=1;$i<=$numOfPage;$i++)
{
	if($i == $_GET['page'])
	{
		echo "<b><a href='javascript:paging('/".$i."'/)'><font color='red'>".$i."</font></a></b>  ";
	}
	else
	{
		echo "<a href='javascript:paging('/".$i."'/)'>".$i."</a>  ";
	}
}
$tien =$_GET['page']+ 1;
if($tien <= $numOfPage)
{
	echo "<a href='javascript:paging('/".$tien."'/)'>Tien</a> ";
}

BẠN CỐ GIÚP MÌNH NHÉ, THANKS!
thuyduongcd viết 12:04 ngày 10/10/2018
Xem lại dòng này:
ajaxRequest.open("GET","truyencuoi.php?",true);
Sao không truyền số trang vào cho nó?
Lẽ ra phải như vầy:
Code:
ajaxRequest.open("GET","truyencuoi.php?page="+num,true);
nobita255 viết 12:02 ngày 10/10/2018
dúng là mình quên chưa truyền số trang như bạn nói.Nhưng khi truyền rồi nó vẫn không nhận ra số trang bạn à. Liệu mình sai ở đâu nữa nhỉ
Code:
<script language="javascript" type="text/javascript">
function paging(num)
{
var ajaxRequest;
try
	{
		ajaxRequest = new XMLHttpRequest();
	}
	catch(e)
	{
		try
		{
			ajaxRequest=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				ajaxRequest=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				alert("Error");
			}
		}		
	}
ajaxRequest.onreadystatechange = function()
	{
		if(ajaxRequest.readyState == 4)
		{
			document.getElementById('noidung').innerHTML = ajaxRequest.responseText;
		}
	}
ajaxRequest.open("GET","truyencuoi.php?page="+num,true);
ajaxRequest.send(null);
}
</script>
code phân trang
Code:
$page=$_GET['page'];
$query = "SELECT * FROM ebookhai";
$result = mysql_query($query);
$total = mysql_num_rows($result);
$perPage = 1;
$numOfPage = ceil($total / $perPage);

if($page==true)
{
	$start = ($page - 1) * $perPage;
}
else
{
	$start = 0;
}

$query1 = "SELECT * FROM ebookhai LIMIT $start, $perPage";
$result1 = mysql_query($query1);
while($row = mysql_fetch_array($result1))
{
	echo $row['ten'].$row['noidung']."<br>";
}
$lui =$page- 1;
if($lui > 0)
{
	echo "<a  href='javascript:paging('/".$lui."'/)'>Lui</a> ";
}
for($i=1;$i<=$numOfPage;$i++)
{
	if($i ==$page)
	{
		echo "<b><a href='javascript:paging('/".$i."'/)'><font color='red'>".$i."</font></a></b>  ";
	}
	else
	{
		echo "<a href='javascript:paging('/".$i."'/)'>".$i."</a>  ";
	}
}
$tien =$page+ 1;
if($tien <= $numOfPage)
{
	echo "<a href='javascript:paging('/".$tien."'/)'>Tien</a> ";
}
[/code]
thuyduongcd viết 12:01 ngày 10/10/2018
Trong cái phần phân trang, chèn thêm dòng echo $page hay $_GET['page'] ra xem tham số nó nhận vào có đúng theo link mình click không.
Và chỗ này:
if($page==true){
$start = ($page - 1) * $perPage;
}else{
$start = 0;
}
Nên thay bằng:
Code:
if (isset($_GET['page'])&&($_GET['page']>0)){
   $page=$_GET['page'];
}else{
   $page=1;
}
$start = ($page - 1) * $perPage;
Bài liên quan
0