หัวข้อ: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: noob ที่ 17 สิงหาคม 2008, 17:04:02 ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ
ใช้ php แล้วต้องเรียกใช้ทุกหน้าเลยครับ (คือกลัวโค้ดมันจะทำงานหนักมาก) พอจะมีวิธีรึเปล่าครับ หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: noob ที่ 19 สิงหาคม 2008, 21:00:25 สงสัยถามยากไปวุ้ย :P
หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: h.newyear28 ที่ 19 สิงหาคม 2008, 21:17:08 ผมว่าเขางงคำถามคุณมากกว่า
ID มันก็บอกลำดับอยู่แล้วนิครับ :-X (ในกรณีที่เป็น auto-increment, primary) หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: kiak ที่ 22 สิงหาคม 2008, 16:33:05 ผมว่าเขางงคำถามคุณมากกว่า เห็นด้ว งง คับ ID มันก็บอกลำดับอยู่แล้วนิครับ :-X (ในกรณีที่เป็น auto-increment, primary) แต่ว่าถ้าลองตั่งให้เป็น primary key แล้วก็มันจะทำงานไม่หนักครับ เพราะถ้าเรียกอะไรที่เป็น primary มันจะเข้าไปที่ข้อมูลบรรทัดนั้นทันที แต่ว่าถ้าไม่ใช่ มันจะค่อยๆเช็กไปเรื่อยๆ จนกว่าจะเจออะ พวก like งี้ หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: pugkung ที่ 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 หาเอา ( มั่งนะลองดู ??? ) หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: DJJome ที่ 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 หาเอา ( มั่งนะลองดู ??? ) ผมก็เข้าใจตามนี้นะ แต่มองไม่เห็นประโยชน์ ว่าทำไปทำไม? หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: sangsood7 ที่ 22 สิงหาคม 2008, 22:35:29 ยังงี้ได้เปล่าครับ ไม่แน่ใจเดาเอา
select count(id) from $tablename where id<=$id :-* หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: noob ที่ 23 สิงหาคม 2008, 02:26:42 ขอบคุณทุกท่านที่ช่วยแนะนำครับผม
แล้วก็ขอบคุณท่าน pugkung ที่ช่วยขยายความนะครับ หุหุ หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: DJJome ที่ 23 สิงหาคม 2008, 05:16:57 ขอบคุณทุกท่านที่ช่วยแนะนำครับผม แล้วก็ขอบคุณท่าน pugkung ที่ช่วยขยายความนะครับ หุหุ แล้วตกลง จะทำไปทำไมอ่ะครับ ผมยังไม่เข้าใจเลยนะ หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: pugkung ที่ 23 สิงหาคม 2008, 10:17:49 ขอบคุณทุกท่านที่ช่วยแนะนำครับผม แล้วก็ขอบคุณท่าน pugkung ที่ช่วยขยายความนะครับ หุหุ แล้วตกลง จะทำไปทำไมอ่ะครับ ผมยังไม่เข้าใจเลยนะ เท่าที่คิดออก ก็คงจะเป็นพวกโปรแกรม เอาไว้บันทึกการรับจำนำมือถือ ล่ะมั่ง ซึ่งพวกร้านรับจำนำมือถือเค้าจะมี กล่อง ที่มี ล็อกเกอร์ อยู่หลาย ๆ อัน แล้วเค้าจะเก็บ มือถือไว้ที่ ล็อกเกอร์ นั้น ๆ เรียงกันไป แล้วพอมีคนมาไถ่ มือถือออก เค้าก็จะยื่นบัตรจำมา แล้วเจ้าของร้านก็ไปหยิบมือถือมา ล็อกเกอร์นั้น ๆ จึงว่าง แล้วทีนี้มีลูกค้าใหม่มาจำนำ เจ้าของร้านก็ต้องหา ล็อกเกอร์ที่ว่าง นั้นเพื่อเอาไปเก็บมือถือ ก็เลยต้องใช้วิธีนี้ล่ะมั่ง ??? อ่านเองยัง งง เอง เหอ ๆ แต่คิดว่าเจ้าของกระทู้คงไม่ได้เอาไปใช้เพื่อการนี้ :P หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: payu ที่ 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; concept ประมาณนี้ครับ .. แต่ยังไม่ได้ลอง หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: noob ที่ 24 สิงหาคม 2008, 09:24:17 ขอบคุณทุกท่านที่ช่วยแนะนำครับผม แล้วก็ขอบคุณท่าน pugkung ที่ช่วยขยายความนะครับ หุหุ แล้วตกลง จะทำไปทำไมอ่ะครับ ผมยังไม่เข้าใจเลยนะ คือผมจะเอาไว้ใช้เช็คหน้าปัจจุบันของบทความครับ อ่ะงงๆ ประมาณว่าบทความผมแบ่งออกเป็น 10 หน้า หน้าละ 10 บทความ ผมเปิดอ่านบทความที่หน้า 5 ก็จะดึงบทความทั้งหมดที่อยู่หน้าเดียวกันมาแสดงด้านล่าง ทีนีถ้าผมรู้ว่าบทความที่ผมเปิดอ่านอยู่มันอยู่ลำดับที่เท่าไหร่ ก็จะเอามาคำนวนหาหน้าปัจจุบันได้ โดยที่ไม่ต้องส่งตัวแปรของเลขหน้าปัจจุบันลงไปใน url เพราะจำนวนหน้าของบทความมันจะขยับไปเรื่อยๆ จะทำให้ url มันไม่เหมือนเดิม ไม่ดีต่อค่า pr ของหน้านั้นๆ อาจจะมีวิธีที่ดีกว่านี้ก็ได้แต่ผมคิดออกแค่นี้ แหะๆ :-[ อ้างอิง ... =http://www.xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/ หรือค้นหา "mysql row number" จาก gg ตัวอย่าง code โค๊ด: set @num = 1; concept ประมาณนี้ครับ .. แต่ยังไม่ได้ลอง ขอบคุณมากครับ แต่ผมยังมองภาพไม่ออกว่าเขียนในรูปโค้ด php ยังไงอ่ะครับ คือความรู้ผมยังด้อยนักครับ รบกวนท่านช่วยแนะนำเพิ่มเติมด้วยครับ หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: EThaiZone ที่ 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 ประมาณนี้ครับ ลองดูนะ :P หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: noob ที่ 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 ประมาณนี้ครับ ลองดูนะ :P :P แหะๆ ผมพวกชอบคิดมากครับ อย่าถือสาเลย อิอิ $start = $page*$per_page; SELECT * FROM article ORDER BY id DESC LIMIT $start,$per_page แล้วโค้ดนี่ ตัวแปร $page จะส่งมาจากไหนอ่ะครับ ปล.ผมมีฟิล id เป็น primary key กับ auto number แล้วครับ แต่พอดีบางข้อความก็ถูกลบไป เลข id มันก็เลยจะข้ามๆไปเรื่อยครับ หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: kiak ที่ 25 สิงหาคม 2008, 19:22:27 $page คือ จำนวนข้อมูลทั้งหมดครับ select * from แล้ว numrow ครับ
ลองดู โค๊ด: http://www.webthaidd.com/php/webthaidd_article_90_3.html หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: 7 ที่ 25 สิงหาคม 2008, 21:42:35 id ไม่เปลี่ยน url ก็ไม่เปลี่ยน ถึงจะข้ามก็ไม่เห็นเป้นไรเลย
หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: noob ที่ 25 สิงหาคม 2008, 23:25:55 มันไม่ใช่อย่างนั้นนะสิครับ ผมจะอธิบายยังไงดีล่ะ....... :P
ยกตัวอย่างจากเว็บที่ท่าน kiak แนะนำมานะครับ (http://www.webthaidd.com/php/file_php/php91/image.gif) จากในรูปนี่มันอยู่ที่หน้า 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) (http://www.updee.com/iu/10untitled2.gif) ทีนี้มันจะรู้ได้ไงว่าจะต้องดึงบทความในหน้าที่ 3 มาแสดง เพราะผมไม่ได้สงตัวแปล $page ผ่านทาง url แล้วทำไมผมไม่ส่งค่า $page ผ่าน url ไปซะเลย myweb.com/read.php?id=25&page=3 เพราะพอบทความผมมีมากขึ้น url ผมก็จะเปลี่ยนไปเป็น &page=4, &page=5, &page=6 ....&page=n ในเมื่อ url มันเปลี่ยนไปเรื่อยๆแบบนี้มันก็ไม่เป็นผลดีกับค่า pr ของบทความนั้นๆของผมแน่ หวังว่าคงจะพอเข้าใจความตั้งใจผมแล้วนะครับ :-* หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: Tee++; ที่ 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 นะ หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: tinnoi ที่ 26 สิงหาคม 2008, 07:47:11 สุดยอดเลยครับ
เทคนิคข้างบน มีแต่แบบที่ผมไม่เคยรู้มาก่อน ความรู้ใหม่ๆ หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: ball6847 ที่ 26 สิงหาคม 2008, 08:24:45 เหอๆ อ่านแต่ละอันผมล่ะ งง หัวไม่ถึงจิงๆ -*-
เป็นผมผมคง cache พวกรายการลง txt คิดได้แค่นี้แหละ - -* หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: noob ที่ 26 สิงหาคม 2008, 09:32:31 อย่าว่ายังงั้นยั้งงี้เลยนะครับ
ตัวกระผมเองก็มีความรู้แค่หางอึ่ง :'( รบกวนช่วยอธิบายวิธีคร่าวๆเรื่องการดึงข้อมูลมามาเก็บไว้ในไฟล์ txt กับวิธีการเอามาใช้ทีนะครับ :-* จะเป็นพระคุณอย่างสูงที่สุดในโลก หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: makoto ที่ 26 สิงหาคม 2008, 09:44:15 ผมว่าไม่เห็นจะต้องดึงบทความของหน้าที่เลือกมาแสดงเลย
เพราะมันยุ่งยาก ดึงมาแสดงให้มันหมด แล้วแบ่งหน้าเหมือนเดิม ไม่ได้เหรอ :D พอได้แล้วก็มาหาว่า id ที่ดึงมามันอยู่ในหน้าไหนก็ไป default มันหน้านั้นซะเรย คิดได้แต่ทำไม่เป็น ;D หัวข้อ: Re: ใน mysql จะเช็คยังไงว่า id นี้อยู่ลำดับที่เท่าไหร่ครับ เริ่มหัวข้อโดย: ball6847 ที่ 26 สิงหาคม 2008, 10:07:24 เอ... หรือไม่ก็ cronjob จัดการรายการใน db สักวันละรอบ เหอๆ
|