10/10/2018, 11:17

Cách đếm xem bản ghi đó ở vị trí nào

Ví dụ mình có bảng post(post_id,post_title,post_cat)

Insert dữ liệu:

1 | Tiêu đề 1 | 1
2 | Tiêu đề 2 | 2
3 | Tiêu đê 3 | 1

Dùng câu lệnh SELECT trong trang post.php?id=:


PHP Code:
$id $_GET***91;'id'***93;;
$cat 1// Ví dụ post_cat=1
$result=mysql_query("SELECT * FROM ".$pre_fix."post WHERE  post_id='".$id."' AND post_cat = '".$cat."' ORDER BY post_id DESC") or die (mysql_error()) 
;

Giờ mình mún hỏi, ở những trường có post_cat = 1 tức Tiêu đề 1 và tiêu đề 3 đó, làm sao biết vị trí của nó.

Chẳng hạn Tiêu đề 1 thì vị trí 1 và Tiêu đề 3 thì vị trí 2 có cùng post_cat
Còn Tiêu đề 2 thì vị trí là 1.

p/s: Giống như viết bài trong diễn đàn, nó hiện người đầu tiên là #1, người vào trả lời thì là #2 và cứ thế

Cám ơn các bạn!
happyface viết 13:31 ngày 10/10/2018
vì bạn đã order by theo post_id rồi nên vị trí của "bản ghi" cũng là vị trí trong kết quả trả về của câu lệnh select. bạn có thể dùng vòng lặp for cho biến i tăng lên để lấy ra vị trí hoặc truy xuất tới vị trí của bản ghi bất kì thông qua hàm mysql_data_seek()
http://php.net/manual/en/function.mysql-data-seek.php
ngoc_viet08 viết 13:22 ngày 10/10/2018
bác này học php đã lâu . mà hay lên forum hỏi toàn câu basic... haizzzzzz
Thế Giới Phẳng viết 13:21 ngày 10/10/2018
Được gửi bởi ngoc_viet08
bác này học php đã lâu . mà hay lên forum hỏi toàn câu basic... haizzzzzz
học PHP ko chuyên bác ạ!

Hjx, ko được bác happyface à.

p/s: Chúc mừng năm mới.
ngoc_viet08 viết 13:30 ngày 10/10/2018
sặc máu tưởng j vấn đề giản đơn.

1. foreach,while và dùng thêm biến $num_post = 1 , mỗi lần foreach thì tăng 1 lên
2. dùng for với $i<=count(array_post)

câu sql của cậu :

WHERE post_id='".$id."' AND post_cat = '".$cat."'
câu này thiệt pó tay,. bản thân post_id là 1 unique string , xác định chinh xác post đó rồi còn thêm cat chi zậy ?
hok lẽ lần 1 select tìm cat_id của post có post_id rồi lần 2 select * dựa vào cat_id và post_id ?????????
s.code viết 13:18 ngày 10/10/2018
Mục đích là gì nhỉ.

Lấy vị trí làm gì ta.
thuyenlenhdenh viết 13:33 ngày 10/10/2018
Được gửi bởi ngoc_viet08
sặc máu tưởng j vấn đề giản đơn.

1. foreach,while và dùng thêm biến $num_post = 1 , mỗi lần foreach thì tăng 1 lên
2. dùng for với $i<=count(array_post)

câu sql của cậu :



câu này thiệt pó tay,. bản thân post_id là 1 unique string , xác định chinh xác post đó rồi còn thêm cat chi zậy ?
hok lẽ lần 1 select tìm cat_id của post có post_id rồi lần 2 select * dựa vào cat_id và post_id ?????????
Nên nghĩ kỹ rồi hãy phát biểu. Giả sử có table:
ID | ten
1 | a
2 | b
3 | c
Nếu bình thường thì xác định theo ID sẽ ra vị trí của bản ghi, nhưng giả sử bản ghi có ID=2 bị delete, lúc đó table sẽ như sau:
ID | ten
1 | a
3 | c
Như vậy bản ghi có ID=3 sẽ không còn ở vị trí số 3 nữa mà ở vị trí số 2. Đó chính là điều mà chủ thớt muốn hỏi, và có hàm hay lệnh nào xác định luôn trong MySQL chứ còn bảo for với each hay đại loại như vậy thì cũng chẳng cần phải hỏi.

Được gửi bởi s.code
Mục đích là gì nhỉ.

Lấy vị trí làm gì ta.
Ví dụ làm site tin tức, để lấy các tin tiếp theo thì cần xác định vị trí của tin hiện tại để dùng lệnh limit trong MySQL
huupb viết 13:28 ngày 10/10/2018
Được gửi bởi ngoc_viet08
bác này học php đã lâu . mà hay lên forum hỏi toàn câu basic... haizzzzzz
Không đi qua basic sao đi đến advance được...ai cũng học như bác học 1 biết 10 thì chắc không còn phải tuyển sinh học ập trình nữa...nói như đúng rồi
Em bé tuổi có gì mạo phạm các bác tha thứ...tính thẳng...thấy ng có vẻ ta đây không thích tí nào
thuyenlenhdenh viết 13:28 ngày 10/10/2018
Đây là câu trả lời (đã test OK) từ site http://www.issociate.de/board/goto/6..._(urgent).html
************************************************** **************************
SELECT (count( b.unique_id ) + 1) ranking
FROM table_name a, table_name b
WHERE a.unique_id = '000000004' AND b.score > a.score

Mike wrote:
> Let's say I have a database and I want to find the position of a row when it is ordered by a specific column
>
> before a sort:
>
> UNIQUE ID | SCORE
> 000000001 | 100
> 000000002 | 50
> 000000003 | 30
> 000000004 | 80
> 000000005 | 50
>
> after sort:
>
> UNIQUE ID | SCORE
> 000000001 | 100
> 000000004 | 80
> 000000002 | 50
> 000000005 | 50
> 000000003 | 30
>
> is it posible to find the position of 000000004 with a query or mysql function?
>
> Normally I'd just 'SELECT unique_id FROM table ORDER DESC' then loop through the results looking for a matching id, however my table contains thousands of entries, and it's simply not possible do do it that way.
>
> Thanks
> Mike
************************************************** ***************************
fotech_nd viết 13:31 ngày 10/10/2018
Được gửi bởi ngoc_viet08
bác này học php đã lâu . mà hay lên forum hỏi toàn câu basic... haizzzzzz
Bạn này số post cho forum cũng nhiều mà toàn post kiểu này ah, Box Lập trình web bây giờ toàn Spam vậy.
Bài liên quan
0