ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ
หน้า: [1] 2  ทั้งหมด   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ  (อ่าน 4803 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
noob
Newbie
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 92



ดูรายละเอียด
« เมื่อ: 17 สิงหาคม 2008, 17:04:02 »

ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ

ใช้ php แล้วต้องเรียกใช้ทุกหน้าเลยครับ (คือกลัวโค้ดมันจะทำงานหนักมาก) พอจะมีวิธีรึเปล่าครับ
บันทึกการเข้า

ตราบใดที่โฆษนายังขึ้นอยู่ ก็แปลว่าตูยังไม่โดนแบน
noob
Newbie
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 92



ดูรายละเอียด
« ตอบ #1 เมื่อ: 19 สิงหาคม 2008, 21:00:25 »

สงสัยถามยากไปวุ้ย Tongue
บันทึกการเข้า

ตราบใดที่โฆษนายังขึ้นอยู่ ก็แปลว่าตูยังไม่โดนแบน
h.newyear28
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 157



ดูรายละเอียด
« ตอบ #2 เมื่อ: 19 สิงหาคม 2008, 21:17:08 »

ผมว่าเขางงคำถามคุณมากกว่า
ID มันก็บอกลำดับอยู่แล้วนิครับ Lips Sealed (ในกรณีที่เป็น auto-increment, primary)
บันทึกการเข้า
kiak
ก๊วนเสียว
*

พลังน้ำใจ: 21
ออฟไลน์ ออฟไลน์

กระทู้: 368



ดูรายละเอียด
« ตอบ #3 เมื่อ: 22 สิงหาคม 2008, 16:33:05 »

ผมว่าเขางงคำถามคุณมากกว่า
ID มันก็บอกลำดับอยู่แล้วนิครับ Lips Sealed (ในกรณีที่เป็น auto-increment, primary)
เห็นด้ว งง คับ
แต่ว่าถ้าลองตั่งให้เป็น primary key แล้วก็มันจะทำงานไม่หนักครับ
 เพราะถ้าเรียกอะไรที่เป็น primary มันจะเข้าไปที่ข้อมูลบรรทัดนั้นทันที แต่ว่าถ้าไม่ใช่ มันจะค่อยๆเช็กไปเรื่อยๆ จนกว่าจะเจออะ พวก like งี้
บันทึกการเข้า

pugkung
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 196
ออฟไลน์ ออฟไลน์

กระทู้: 2,681



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 22 สิงหาคม 2008, 18:41:25 »

คิดว่าเข้าใจที่ถามนะ

คงจะประมาณว่า id ที่ว่ามันโดนลบไปแล้วเกิดช่องว่างระหว่าง id ใช่ป่ะ

แล้วต้องการทราบว่า ตำแหน่งที่ id นั้น ๆ อยู่ มันอยู่ลำดับที่เท่าไรของ db

สำหรับคนที่ งง คิดว่า id ของเค้าน่าจะเก็บอยู่ประมาณนี้

1,3,4,5,6,7,11,34,23,44,66,77,88 ........... แล้ว เจ้าของกระทู้ต้องการทราบว่า id 11 อยู่ในลำดับที่เท่าไร

ถ้าเป็นแบบนี้นะ ก็ query ออกมาเก็บไว้ใน array อ่ะครับ แล้วก็ loop หาเอา ( มั่งนะลองดู Huh? )
บันทึกการเข้า

DJJome
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 46
ออฟไลน์ ออฟไลน์

กระทู้: 1,123



ดูรายละเอียด
« ตอบ #5 เมื่อ: 22 สิงหาคม 2008, 22:16:49 »

คิดว่าเข้าใจที่ถามนะ

คงจะประมาณว่า id ที่ว่ามันโดนลบไปแล้วเกิดช่องว่างระหว่าง id ใช่ป่ะ

แล้วต้องการทราบว่า ตำแหน่งที่ id นั้น ๆ อยู่ มันอยู่ลำดับที่เท่าไรของ db

สำหรับคนที่ งง คิดว่า id ของเค้าน่าจะเก็บอยู่ประมาณนี้

1,3,4,5,6,7,11,34,23,44,66,77,88 ........... แล้ว เจ้าของกระทู้ต้องการทราบว่า id 11 อยู่ในลำดับที่เท่าไร

ถ้าเป็นแบบนี้นะ ก็ query ออกมาเก็บไว้ใน array อ่ะครับ แล้วก็ loop หาเอา ( มั่งนะลองดู Huh? )

ผมก็เข้าใจตามนี้นะ
แต่มองไม่เห็นประโยชน์ ว่าทำไปทำไม?
บันทึกการเข้า
sangsood7
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 40
ออฟไลน์ ออฟไลน์

กระทู้: 1,290



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 22 สิงหาคม 2008, 22:35:29 »

ยังงี้ได้เปล่าครับ  ไม่แน่ใจเดาเอา

select count(id) from $tablename where id<=$id

 Kiss

บันทึกการเข้า

noob
Newbie
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 92



ดูรายละเอียด
« ตอบ #7 เมื่อ: 23 สิงหาคม 2008, 02:26:42 »

ขอบคุณทุกท่านที่ช่วยแนะนำครับผม

แล้วก็ขอบคุณท่าน pugkung ที่ช่วยขยายความนะครับ หุหุ
บันทึกการเข้า

ตราบใดที่โฆษนายังขึ้นอยู่ ก็แปลว่าตูยังไม่โดนแบน
DJJome
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 46
ออฟไลน์ ออฟไลน์

กระทู้: 1,123



ดูรายละเอียด
« ตอบ #8 เมื่อ: 23 สิงหาคม 2008, 05:16:57 »

ขอบคุณทุกท่านที่ช่วยแนะนำครับผม

แล้วก็ขอบคุณท่าน pugkung ที่ช่วยขยายความนะครับ หุหุ

แล้วตกลง จะทำไปทำไมอ่ะครับ ผมยังไม่เข้าใจเลยนะ
บันทึกการเข้า
pugkung
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 196
ออฟไลน์ ออฟไลน์

กระทู้: 2,681



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 23 สิงหาคม 2008, 10:17:49 »

ขอบคุณทุกท่านที่ช่วยแนะนำครับผม

แล้วก็ขอบคุณท่าน pugkung ที่ช่วยขยายความนะครับ หุหุ

แล้วตกลง จะทำไปทำไมอ่ะครับ ผมยังไม่เข้าใจเลยนะ

เท่าที่คิดออก ก็คงจะเป็นพวกโปรแกรม เอาไว้บันทึกการรับจำนำมือถือ ล่ะมั่ง

ซึ่งพวกร้านรับจำนำมือถือเค้าจะมี กล่อง ที่มี ล็อกเกอร์ อยู่หลาย  ๆ  อัน แล้วเค้าจะเก็บ มือถือไว้ที่ ล็อกเกอร์ นั้น ๆ เรียงกันไป

แล้วพอมีคนมาไถ่ มือถือออก เค้าก็จะยื่นบัตรจำมา แล้วเจ้าของร้านก็ไปหยิบมือถือมา ล็อกเกอร์นั้น ๆ จึงว่าง

แล้วทีนี้มีลูกค้าใหม่มาจำนำ เจ้าของร้านก็ต้องหา ล็อกเกอร์ที่ว่าง นั้นเพื่อเอาไปเก็บมือถือ ก็เลยต้องใช้วิธีนี้ล่ะมั่ง  Huh?

อ่านเองยัง งง เอง เหอ ๆ

แต่คิดว่าเจ้าของกระทู้คงไม่ได้เอาไปใช้เพื่อการนี้  Tongue
บันทึกการเข้า

payu
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 125
ออฟไลน์ ออฟไลน์

กระทู้: 1,887



ดูรายละเอียด
« ตอบ #10 เมื่อ: 23 สิงหาคม 2008, 10:45:16 »


อ้างอิง ...
=http://www.xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/

หรือค้นหา "mysql row number" จาก gg

ตัวอย่าง code
โค๊ด:
set @num  = 1;

select @num := @num + 1 as row_number, *
from table;

concept ประมาณนี้ครับ .. แต่ยังไม่ได้ลอง

บันทึกการเข้า

noob
Newbie
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 92



ดูรายละเอียด
« ตอบ #11 เมื่อ: 24 สิงหาคม 2008, 09:24:17 »

ขอบคุณทุกท่านที่ช่วยแนะนำครับผม

แล้วก็ขอบคุณท่าน pugkung ที่ช่วยขยายความนะครับ หุหุ


แล้วตกลง จะทำไปทำไมอ่ะครับ ผมยังไม่เข้าใจเลยนะ


คือผมจะเอาไว้ใช้เช็คหน้าปัจจุบันของบทความครับ อ่ะงงๆ

ประมาณว่าบทความผมแบ่งออกเป็น 10 หน้า หน้าละ 10 บทความ

ผมเปิดอ่านบทความที่หน้า 5 ก็จะดึงบทความทั้งหมดที่อยู่หน้าเดียวกันมาแสดงด้านล่าง

ทีนีถ้าผมรู้ว่าบทความที่ผมเปิดอ่านอยู่มันอยู่ลำดับที่เท่าไหร่ ก็จะเอามาคำนวนหาหน้าปัจจุบันได้

โดยที่ไม่ต้องส่งตัวแปรของเลขหน้าปัจจุบันลงไปใน url

เพราะจำนวนหน้าของบทความมันจะขยับไปเรื่อยๆ จะทำให้ url มันไม่เหมือนเดิม ไม่ดีต่อค่า pr ของหน้านั้นๆ
อาจจะมีวิธีที่ดีกว่านี้ก็ได้แต่ผมคิดออกแค่นี้ แหะๆ Embarrassed




อ้างอิง ...
=http://www.xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/

หรือค้นหา "mysql row number" จาก gg

ตัวอย่าง code
โค๊ด:
set @num  = 1;

select @num := @num + 1 as row_number, *
from table;

concept ประมาณนี้ครับ .. แต่ยังไม่ได้ลอง




ขอบคุณมากครับ แต่ผมยังมองภาพไม่ออกว่าเขียนในรูปโค้ด php ยังไงอ่ะครับ

คือความรู้ผมยังด้อยนักครับ รบกวนท่านช่วยแนะนำเพิ่มเติมด้วยครับ
บันทึกการเข้า

ตราบใดที่โฆษนายังขึ้นอยู่ ก็แปลว่าตูยังไม่โดนแบน
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 25 สิงหาคม 2008, 00:09:17 »

ผมมาอ่าน ผมยังงงเลย อะไรจะยุ่งยากขนาดนั้น

เว็บบทความ เอาแบบง่ายๆ เลย

แทรกบทความไปตามปกติ ตั้ง primary key กับ auto number ให้กับฟิลด์ id

แล้วใช้ฟิลด์นี้ในการเรียกหน้าบทความเลย ex.  page.php?id=เลขบทความ

ทีนี้เวลาจะมาแสดงในการแบ่งหน้า
ต้องมีข้อมูลตัวสำคัญคือ จำนวนบทความทั้งหมด
SELECT COUNT(*) FROM TABLE


แล้วก็มาคำนวนหาหน้าที่น่าจะมีทั้งหมด
$per_page = 10; //จำนวนบทความต่อหน้า
$total = ceil($all/$per_page);

โดย $all คือจำนวนบทความทั้งหมด ส่วน $total จะได้เป็นจำนวนหน้าที่น่าจะมีทั้งหมด

แล้วเวลาจะเรียกแสดงรายการบทความในหน้านั้น ก็แนว

$start = $page*$per_page;
SELECT * FROM article ORDER BY id DESC LIMIT $start,$per_page

ประมาณนี้ครับ ลองดูนะ  Tongue

« แก้ไขครั้งสุดท้าย: 25 สิงหาคม 2008, 00:10:55 โดย EThaiZone » บันทึกการเข้า

noob
Newbie
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 92



ดูรายละเอียด
« ตอบ #13 เมื่อ: 25 สิงหาคม 2008, 08:58:17 »

ผมมาอ่าน ผมยังงงเลย อะไรจะยุ่งยากขนาดนั้น

เว็บบทความ เอาแบบง่ายๆ เลย

แทรกบทความไปตามปกติ ตั้ง primary key กับ auto number ให้กับฟิลด์ id

แล้วใช้ฟิลด์นี้ในการเรียกหน้าบทความเลย ex.  page.php?id=เลขบทความ

ทีนี้เวลาจะมาแสดงในการแบ่งหน้า
ต้องมีข้อมูลตัวสำคัญคือ จำนวนบทความทั้งหมด
SELECT COUNT(*) FROM TABLE


แล้วก็มาคำนวนหาหน้าที่น่าจะมีทั้งหมด
$per_page = 10; //จำนวนบทความต่อหน้า
$total = ceil($all/$per_page);

โดย $all คือจำนวนบทความทั้งหมด ส่วน $total จะได้เป็นจำนวนหน้าที่น่าจะมีทั้งหมด

แล้วเวลาจะเรียกแสดงรายการบทความในหน้านั้น ก็แนว

$start = $page*$per_page;
SELECT * FROM article ORDER BY id DESC LIMIT $start,$per_page

ประมาณนี้ครับ ลองดูนะ  Tongue



 Tongue แหะๆ ผมพวกชอบคิดมากครับ อย่าถือสาเลย อิอิ

$start = $page*$per_page;
SELECT * FROM article ORDER BY id DESC LIMIT $start,$per_page

แล้วโค้ดนี่ ตัวแปร $page จะส่งมาจากไหนอ่ะครับ

ปล.ผมมีฟิล id เป็น primary key กับ auto number แล้วครับ แต่พอดีบางข้อความก็ถูกลบไป เลข id มันก็เลยจะข้ามๆไปเรื่อยครับ
บันทึกการเข้า

ตราบใดที่โฆษนายังขึ้นอยู่ ก็แปลว่าตูยังไม่โดนแบน
kiak
ก๊วนเสียว
*

พลังน้ำใจ: 21
ออฟไลน์ ออฟไลน์

กระทู้: 368



ดูรายละเอียด
« ตอบ #14 เมื่อ: 25 สิงหาคม 2008, 19:22:27 »

$page คือ จำนวนข้อมูลทั้งหมดครับ select * from แล้ว numrow ครับ



ลองดู
โค๊ด:
http://www.webthaidd.com/php/webthaidd_article_90_3.html
« แก้ไขครั้งสุดท้าย: 25 สิงหาคม 2008, 19:27:05 โดย kiak » บันทึกการเข้า

7
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 16
ออฟไลน์ ออฟไลน์

กระทู้: 1,353



ดูรายละเอียด เว็บไซต์
« ตอบ #15 เมื่อ: 25 สิงหาคม 2008, 21:42:35 »

id ไม่เปลี่ยน url ก็ไม่เปลี่ยน ถึงจะข้ามก็ไม่เห็นเป้นไรเลย
บันทึกการเข้า

noob
Newbie
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 92



ดูรายละเอียด
« ตอบ #16 เมื่อ: 25 สิงหาคม 2008, 23:25:55 »

มันไม่ใช่อย่างนั้นนะสิครับ ผมจะอธิบายยังไงดีล่ะ....... Tongue

ยกตัวอย่างจากเว็บที่ท่าน kiak แนะนำมานะครับ



จากในรูปนี่มันอยู่ที่หน้า 3 นะครับ

ก็จะมี id 17-30

สมมุติว่าเราสามารถคลิ๊กเข้าไปอ่านบทความในแต่ละ id ได้ ลิ้งอาจจะประมาณนี้

myweb.com/read.php?id=30
myweb.com/read.php?id=25
myweb.com/read.php?id=24
myweb.com/read.php?id=23
.
.
.
myweb.com/read.php?id=17

แล้วทีนี้ผมคลิ๊กเข้าไปที่ลิ้ง myweb.com/read.php?id=25

ผมก็อยากดึงลิ้งทั้งหมดที่อยู่หน้าเดียวกันให้โชวอยู่ด้านล่าง จะออกมาประมาณนี้

(url: myweb.com/read.php?id=25)


ทีนี้มันจะรู้ได้ไงว่าจะต้องดึงบทความในหน้าที่ 3 มาแสดง เพราะผมไม่ได้สงตัวแปล $page ผ่านทาง url

แล้วทำไมผมไม่ส่งค่า $page ผ่าน url ไปซะเลย myweb.com/read.php?id=25&page=3

เพราะพอบทความผมมีมากขึ้น url ผมก็จะเปลี่ยนไปเป็น &page=4, &page=5, &page=6 ....&page=n

ในเมื่อ url มันเปลี่ยนไปเรื่อยๆแบบนี้มันก็ไม่เป็นผลดีกับค่า pr ของบทความนั้นๆของผมแน่

หวังว่าคงจะพอเข้าใจความตั้งใจผมแล้วนะครับ  Kiss
บันทึกการเข้า

ตราบใดที่โฆษนายังขึ้นอยู่ ก็แปลว่าตูยังไม่โดนแบน
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #17 เมื่อ: 26 สิงหาคม 2008, 00:08:18 »

มีวิธีแก้ 4 แบบก็คือ แทนที่จะส่ง link id จริงๆ ข้าไปก็ส่งเป็น iteration คือ

1.
สมมุติ id จริงๆ เป็น 21 แต่ iteration อาจจะเป็น 19 เพราะ มี 2 อันก่อนหน้านี้เป็นลบ พอสั่ง sql ก็จะเป็น

$sql = "SELECT........LIMIT 19, 1";

สังเกตุว่าไม่ได้ใช้ where id = อะไรออกมาเลย

2.
Query Data ทั้งหมดโดยอาจจะ limit สัก 1,000 มาจับยัด ลง memcace, apc หรือ file ก็ได้ โดย cache แค่ results ทีนี้จะหาค่าอะไรก้ใช้คำสั่งใน array ง่ายนิดเดียว ตามแบบนี้ เราสามารถใช้คำสั่ง array_search ก็จะรู้ว่าได้ iteration เป็นลำดับที่เท่าไหร่ แถมเร็วโดย เพราะ query ทีเดียวจบ next page ต่อไปก็ไม่ต้องมา connect db ใหม่ แต่บริหาร ออกแบบยากนิดนึง

3. ใช้ ajax เอาก็ได้แสดงผลแบบนั้น ง่ายนิดเดียวเลย

4. ถ้าห่วงแค่เรื่อง pr ลองทำกลับด้านกันดูโดยที่ นับ page ใหม่เป็น

30 29 28 27 ..... 1

โดยที่ 1 คือ content ที่เก่าที่สุด 30 คือใหม่ที่สุด ทีนี้พอ SE จับ ลำดับก็จะไม่เพี้ยน

*** ถ้าให้เลือกผมเอาวิธี 2, 3 มาใช้ด้วยกัน

ปล. ผมอ่านแค่ rep อันสุดท้ายอ่ะ ไม่ได้อ่านว่าเกิดไรขึ้นตั้งแต่แรก ถ้าไม่ตรงประเด็นก็ sorry นะ
บันทึกการเข้า

tinnoi
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 90
ออฟไลน์ ออฟไลน์

กระทู้: 2,957



ดูรายละเอียด เว็บไซต์
« ตอบ #18 เมื่อ: 26 สิงหาคม 2008, 07:47:11 »

สุดยอดเลยครับ

เทคนิคข้างบน มีแต่แบบที่ผมไม่เคยรู้มาก่อน

ความรู้ใหม่ๆ
บันทึกการเข้า

ball6847
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 212
ออฟไลน์ ออฟไลน์

กระทู้: 4,174



ดูรายละเอียด
« ตอบ #19 เมื่อ: 26 สิงหาคม 2008, 08:24:45 »

เหอๆ อ่านแต่ละอันผมล่ะ งง หัวไม่ถึงจิงๆ -*-


เป็นผมผมคง cache พวกรายการลง txt คิดได้แค่นี้แหละ - -*
บันทึกการเข้า

หน้า: [1] 2  ทั้งหมด   ขึ้นบน
พิมพ์