10/10/2018, 10:35

[PHP] Bản ghi cuối cùng!

Mình có 2 table là:

- Chủ đề (chude_id, ten_chude)
- Bài viết (baviet_id, ten_baiviet, chude_id) // chude_id lưu id từ chude_id của table chủ đề.

Trong csdl của mình có 577 dòng. Từ dòng 1 đến dòng 570 là thuộc chủ đề Gia đình. Từ dòng 571 đến 577 thuộc chủ dề Bạn bè.

Và đây là câu truy vấn:
PHP Code:
<?php

$result_r 
mysql_query("SELECT * FROM baiviet");
$num_rows mysql_num_rows($result_r);

echo 
"$num_rows Rows và ID: $id "// Hiện 577 Rows và ID: 571
if ($num_rows $id){
echo 
"Đây là bản ghi cuối cùng rồi đó bạn";
}
else{
echo 
"Đây là bản ghi đầu tiên rồi. Bấm gì nữa";
}
?>
Mình tạo 2 nút là Bài viết trước và Bài viết tiếp theo. Vấn đề của mình là khi bấm nút Bài viết trước đến dòng thứ 571 (tức là bài viết đầu tiên thuộc chủ đề Bạn bè) nếu bấm tiếp nó lại nhảy sang dòng 570 (tức là bài viết cuối cùng thuộc chủ đề Gia đình) khi nào nó cũng hiện dòng:

Đây là bản ghi cuối cùng rồi đó bạn

Mình muốn là nếu đang ở bài viết đầu tiên thuộc chủ đề Bạn bè, mà bấm nút Bài viết trước sẽ xuất hien dòng:
Đây là bản ghi đầu tiên rồi. Bấm gì nữa và ngược lại nếu ở bài viết cuối cùng bấm nút Bài viết trước sẽ báo Đây là bản ghi cuối cùng rồi đó bạn

Gíup mình với rắc rối quá

[=========> Bổ sung bài viết <=========]

Rắc rối quá, mong các bạn giúp!
1024KB viết 12:42 ngày 10/10/2018
Ở đây mình thấy có 2 cách:
Cách 1: dùng 3 lệnh SQL:
Code:
SELECT FIRST(field) FROM table;//chọn bản ghi đầu tiên
SELECT LAST(field) FROM table;//chọn bản ghi cuối cùng
sau đó dùng $_GET lấy id của bài viết:
PHP Code:
$obj_fr mysql_fetch_object(mysql_query("SELECT FIRST(ID) FROM baiviet"));
$fr $obj_fr->ID//bài viết đầu tiên
$obj_lr mysql_fetch_object(mysql_query("SELECT FIRST(ID) FROM baiviet"));
$lr $obj_fr->ID//bài viết cuối cùng

$id $_GET***91;'id'***93;; //bài viết hiện tại đang duyệt

if($id == $fr){
   echo 
'Bản ghi đầu tiên';
}
if(
$id == $lr){
   echo 
'Bản ghi cuối cùng';

Cách 2: viết 1 hàm chuyển csdl lấy được về mảng:
PHP Code:
function fetch_all_array($sql){
   
$qr mysql_query($sql);
   
$record = array();
   while(
$r mysql_fetch_array($qrMYSQL_ASSOC)){
       
$record***91;***93; = $r;
   }
   return 
$record;

sau đó cũng dựa vào id của bài viết mà xác định thôi.
PHP Code:
$rs mysql_query("SELECT * FROM baiviet");
$nr mysql_num_rows($rs);

$id $_GET***91;'id'***93;;

$records fetch_all_array("SELECT * FROM baiviet");

if(
$record***91;0***93;***91;'ID'***93;==$id){
   echo 
'Bản ghi đầu tiên';
}
if(
$record***91;$nr***93;***91;'ID'***93;==$id){
   echo 
'Bản ghi cuối cùng';

Theo mình thì nên disabled cái button thì hay hơn. JQuery có hỗ trợ đó.
Thế Giới Phẳng viết 12:39 ngày 10/10/2018
Được gửi bởi 1024KB
Ở đây mình thấy có 2 cách:
Cách 1: dùng 3 lệnh SQL:
Code:
SELECT FIRST(field) FROM table;//chọn bản ghi đầu tiên
SELECT LAST(field) FROM table;//chọn bản ghi cuối cùng
sau đó dùng $_GET lấy id của bài viết:
PHP Code:
$obj_fr mysql_fetch_object(mysql_query("SELECT FIRST(ID) FROM baiviet"));
$fr $obj_fr->ID//bài viết đầu tiên
$obj_lr mysql_fetch_object(mysql_query("SELECT FIRST(ID) FROM baiviet"));
$lr $obj_fr->ID//bài viết cuối cùng

$id $_GET***91;'id'***93;; //bài viết hiện tại đang duyệt

if($id == $fr){
   echo 
'Bản ghi đầu tiên';
}
if(
$id == $lr){
   echo 
'Bản ghi cuối cùng';

Cách 2: viết 1 hàm chuyển csdl lấy được về mảng:
PHP Code:
function fetch_all_array($sql){
   
$qr mysql_query($sql);
   
$record = array();
   while(
$r mysql_fetch_array($qrMYSQL_ASSOC)){
       
$record***91;***93; = $r;
   }
   return 
$record;

sau đó cũng dựa vào id của bài viết mà xác định thôi.
PHP Code:
$rs mysql_query("SELECT * FROM baiviet");
$nr mysql_num_rows($rs);

$id $_GET***91;'id'***93;;

$records fetch_all_array("SELECT * FROM baiviet");
foreach(
$records as $record){
   if(
$record***91;0***93;==$id){
       echo 
'Bản ghi đầu tiên';
   }
   if(
$record***91;$nr***93;==$id){
       echo 
'Bản ghi cuối cùng';
   }

Theo mình thì nên disabled cái button thì hay hơn. JQuery có hỗ trợ đó.
$obj_fr = mysql_fetch_object(mysql_query("SELECT FIRST(ID) FROM baiviet")); chỗ in đậm đó lấy ở đâu vậy bạn.

Sao mình đưa vào code của mình mà nó chẳng hiện gì luôn.
1024KB viết 12:39 ngày 10/10/2018
$obj_fr = mysql_fetch_object(mysql_query("SELECT FIRST(ID) FROM baiviet")); chỗ in đậm đó lấy ở đâu vậy bạn.
Ở đây:
Code:
http://www.w3schools.com/sql/sql_func_first.asp
Nó cũng chú ý là: nếu FIRST() mà không hỗ trợ, thì bạn hãy thử dùng:
Code:
SELECT column_name FROM table_name ORDER BY column_name LIMIT 1
Bạn có thể ORDER BY theo ID.
Code:
SELECT ID FROM baiviet ORDER BY ID LIMIT 1
Trường hợp đối với LAST() cũng như vậy.
Code:
SELECT ID FROM baiviet ORDER BY ID DESC LIMIT 1
Thế Giới Phẳng viết 12:37 ngày 10/10/2018
Được gửi bởi 1024KB
Ở đây:
Code:
http://www.w3schools.com/sql/sql_func_first.asp
Nó cũng chú ý là: nếu FIRST() mà không hỗ trợ, thì bạn hãy thử dùng:
Code:
SELECT column_name FROM table_name ORDER BY column_name LIMIT 1
Bạn có thể ORDER BY theo ID.
Code:
SELECT ID FROM baiviet ORDER BY ID LIMIT 1
Trường hợp đối với LAST() cũng như vậy.
Code:
SELECT ID FROM baiviet ORDER BY ID DESC LIMIT 1
Sao mình đưa vào nó chẳng hiện ra cái gì cả bạn ạ.

Mình đang ở bài viết đầu tiên của chủ đề thứ Bạn bè. Nó ko hiện Bản ghi đầu tiên

Mình lại vào chủ đề Gia đình và đi đến bài viết cuối cùng thì nó cũng ko hiện Bản ghi cuối cùng
honnhienh viết 12:36 ngày 10/10/2018
sorry spam nha. bác thử tìm hiểu cái PDO coi tui thấy nó có cái PDOStatement->fetch nó linh động lắm. Cũng làm lâu lắm rùi hog còn nhớ lắm. bác coi kỹ lại trong php manual có đó.
zmt264 viết 12:42 ngày 10/10/2018
Các bạn hiểu sai ý chủ topic rồi.

Theo mình thì nên sửa lại câu query, thêm WHERE vào để lấy theo chủ đề

SELECT * FROM baiviet => SELECT * FROM baiviet WHERE chude_id = x
xcode viết 12:41 ngày 10/10/2018
Đang nói MySQL hả mấy bác
1024KB viết 12:45 ngày 10/10/2018
Mình test chẳng thấy có vấn đề gì cả.
Bạn đưa code lên xem nào.

[=========> Bổ sung bài viết <=========]

Được gửi bởi zmt264
Các bạn hiểu sai ý chủ topic rồi.

Theo mình thì nên sửa lại câu query, thêm WHERE vào để lấy theo chủ đề

SELECT * FROM baiviet => SELECT * FROM baiviet WHERE chude_id = x
Cái này thì tất nhiên là phải select như thế rồi. Chủ topic phải tự hiểu chứ. Mình chỉ ví dụ về cách để biết đó là bản ghi cuối cùng hay đầu tiên thôi
Thế Giới Phẳng viết 12:39 ngày 10/10/2018
Code:
PHP Code:
<?php
session_start
();
define('tct_check',true);
include 
"includes/config.php";
include_once 
"includes/function.php";

$id $_GET***91;'id'***93;;
$result mysql_query("SELECT * FROM mt_artist WHERE artist_id='".$id."'") or die(mysql_error());
$nr mysql_num_rows($result);
$artist mysql_fetch_array($result);
$tid $artist***91;artist_category_id***93;;

$next_id $id+1;
$pre_id $id-1;

$result2 mysql_query("SELECT * FROM mt_category WHERE category_id='".$tid."'") or die(mysql_error());
$category mysql_fetch_array($result2);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>TheGioiPhang.Com - The world is flat</title>

<link href="style.css" rel="stylesheet" type="text/css" media="screen" />


<link rel="stylesheet" href="default/omv.css" type="text/css" media="screen" />




</head>
<body>
<p>
Bạn đang xem bài viết <?=artist***91;artist_name***93;?> thuộc thể loại <?=category***91;category_name***93;?><br>
<?php echo $chapter***91;'chap_content'***93;;?>
<a href="artist.php?id=<?php echo $pre_id;?>"><input type="button" value="Bài viết trước"></a><a href="artist.php?id=<?php echo $next_id;?>"><input type="button" value="Bài viết tiếp theo"></a>
</p>



</body>
</html>
Bài liên quan
0