Đâ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?