สอบถามวิธีการเขียน สลับข้อมูลขึ้นลง ของ phpBB

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderator: mindphp, ผู้ดูแลกระดาน

flook
PHP VIP Members
PHP VIP Members
โพสต์: 3751
ลงทะเบียนเมื่อ: 06/06/2022 9:43 am

สอบถามวิธีการเขียน สลับข้อมูลขึ้นลง ของ phpBB

โพสต์ที่ยังไม่ได้อ่าน โดย flook »

Screenshot 2023-03-23 090654.png
Screenshot 2023-03-23 090654.png (49.48 KiB) Viewed 709 times
สอบถามวิธีทำเรียงลำดับ ของ phpBB ครับ
อยากทราบว่าจะสลับขึ้นลงข้อมูลตามลูกศร สีฟ้าอย่างไรครับ
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41131
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: สอบถามวิธีการเขียน สลับข้อมูลขึ้นลง ของ phpBB

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ถ้าทำความเข้าใจ ต้องเริ่มจากออกแบบตาราง
ถ้าเรียงธรรมดา สลับ Order ทำธรรมดา ใช้ ordering Field เดียวได้ แต่แบบของ phpBB
จะมี Parent ด้วยจะใช้หลักการ left, right เข้ามาช่วย หรือนึกภาพเป็น ค่าบนล่างตามตัวอย่าง
การสลับตำแหน่ง โดยอ้างอิงกับค่าปัจจุบันนแล้ว เอามาคำนวณใหม่ เสร็จแล้วอัพเดดกลับด้วยค่าทางซ้าย และ ค่าทางขวาของแต่ละ rows ข้องกลับลงไปในฐานข้อมูล

ตัวอย่างโค้ดเพื่อการศึกษา

โค้ด: เลือกทั้งหมด

<?php

// Connect to database
$dbHost = 'localhost';
$dbName = 'example';
$dbUser = 'username';
$dbPass = 'password';
$dbConn = new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUser, $dbPass);

// Define IDs of categories to switch
$category1Id = 5;
$category2Id = 6;

// Retrieve category data from database
$sql = "SELECT id, name, parent_id, lft, rgt FROM categories";
$stmt = $dbConn->prepare($sql);
$stmt->execute();
$categories = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Find categories to switch
$category1 = null;
$category2 = null;
foreach ($categories as $category) {
    if ($category['id'] == $category1Id) {
        $category1 = $category;
    } elseif ($category['id'] == $category2Id) {
        $category2 = $category;
    }
    if ($category1 && $category2) {
        break;
    }
}

// Make sure categories have the same parent
if ($category1['parent_id'] != $category2['parent_id']) {
    die('Categories must have the same parent');
}

// Swap lft and rgt values for categories
$temp = $category1['lft'];
$category1['lft'] = $category2['lft'];
$category2['lft'] = $temp;

$temp = $category1['rgt'];
$category1['rgt'] = $category2['rgt'];
$category2['rgt'] = $temp;

// Update database with new lft and rgt values for categories
$sql = "UPDATE categories SET lft = ?, rgt = ? WHERE id = ?";
$stmt = $dbConn->prepare($sql);
$stmt->execute(array($category1['lft'], $category1['rgt'], $category1['id']));
$stmt->execute(array($category2['lft'], $category2['rgt'], $category2['id']));
Note ใน phpBB จะมีโค้ดช่วยในการจัดเรียงอยู่แล้ว แกะโค้ดจากใน core ของมันได้
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 56