Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PHP Tính toán Số lượng tuyến dưới trong cây nhị phân

Đây là câu trả lời sau khi tôi thử nhiều cách. Giải quyết vấn đề trước đây của tôi. Chỉ sử dụng một bảng thành viên ở trên.

Để hiển thị số lượng tuyến dưới, trái và phải. Tôi chèn tập lệnh này vào trang cây thành viên HTML cho mọi người dùng trong cây A, xuống B / C, xuống D / E / F / G):

<?php echo $users->downline_number($member,'_left'); ?>
<?php echo $users->downline_number($member,'_right'); ?>

Thêm chức năng này trong Lớp người dùng;

function downline_number($member,$position) {

$query  = $this->db->prepare("SELECT * FROM `member` WHERE `upline`='$member' AND `position`='$position'");
        $query->bindValue(1, $member);
        $query->bindValue(2, $position);

try{
        $query->execute();
        $rows = $query->fetch();

        if($this->count_downline($member,$position) >0 ){
        $total=$this->total_members_down($rows['username']);
        }else{
        $total=0;
        }

        return $total;      

        }catch(PDOException $e){
            die($e->getMessage());
        }   

    }   

function count_downline($member,$position) {

$query  = $this->db->prepare("SELECT * FROM `member` WHERE `upline`=? AND `position`=? ");
        $query->bindValue(1, $member);
        $query->bindValue(2, $position);
    try{
        $query->execute();
        return $rows = $query->rowCount();

        }catch(PDOException $e){
            die($e->getMessage());
        }   
    }   

function total_members_down($upline,$reset=0) {
global $num;
if ($reset==0) { $num=1; }

$query  = $this->db->prepare("SELECT * FROM `member` where `upline`='$upline' order by id asc");
        $query->bindValue(1, $upline);
try{

$query->execute();

if ($upline !='') {

            if ($this->total_down($upline) > 0 ) {
                    while ($rows = $query->fetch() ) {
                    $num++;
                    $this->total_members_down($rows['username'],$num);
                    } 
                    return $num;
            } else { 
            return $num;
            }
} else { $num=0; return $num;  }            

     }catch(PDOException $e){
            die($e->getMessage());
        }   
}   

function total_down($upline) {

$query  = $this->db->prepare("SELECT * FROM `member` where `upline`='$upline' order by id asc ");
        $query->bindValue(1, $upline);

    try{
        $query->execute();
        return $rows = $query->rowCount();

        }catch(PDOException $e){
            die($e->getMessage());
        }   
    }   

và nó hoạt động hiển thị cấu trúc cây thành viên nhị phân. Hiển thị ID thành viên không được đính kèm ở đây, gây ra nó theo cách đơn giản. Chỉ số tuyến dưới bên trái và bên phải.

Hy vọng bài viết này sẽ giúp những người khác cần nó. Bất kỳ đề xuất nào cho những cách tốt hơn?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chính tắc để kéo một bản ghi từ cơ sở dữ liệu MySQL có trường nhỏ nhất / lớn nhất là gì?

  2. MySQL COUNT với LIMIT

  3. Làm thế nào để làm cho mã php kết nối với hai cơ sở dữ liệu khác nhau với hai máy chủ lưu trữ khác nhau?

  4. Kiểm tra sự bình đẳng trên trường MySQL Float

  5. PHP chèn nhiều hộp kiểm VÀ mảng hộp văn bản vào Cơ sở dữ liệu MySQL