Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP बाइनरी ट्री में डाउनलाइन की संख्या की गणना करें

कई तरीकों से कोशिश करने के बाद यह जवाब है। मेरी पिछली समस्या का समाधान। ऊपर केवल एक सदस्य तालिका का उपयोग कर रहे हैं।

डाउनलाइन की संख्या दिखाने के लिए, बाएँ और दाएँ। मैं इस स्क्रिप्ट को एचटीएमएल सदस्य पेड़ पेज में पेड़ ए में प्रत्येक उपयोगकर्ता के लिए, नीचे बी/सी, डी/ई/एफ/जी तक नीचे डालता हूं):

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

इस फ़ंक्शन को उपयोगकर्ता वर्ग में जोड़ें;

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());
        }   
    }   

और यह बाइनरी सदस्य वृक्ष संरचना दिखाने का काम करता है। सदस्य आईडी दिखाना यहां संलग्न नहीं है, यह आसान तरीका है। बस बाएँ और दाएँ डाउनलाइन नंबर।

आशा है कि यह पोस्ट दूसरों की मदद करेगी जिन्हें इसकी आवश्यकता है। बेहतर तरीकों के लिए कोई सुझाव?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दो पंक्तियों के बीच समय का अंतर - mysql

  2. डीबी के लिए विफलता समर्थन

  3. SEQUELIZE (नोडजेएस) में एक ट्रिगर कैसे बनाएं?

  4. MySQL कथन का उपयोग करके दो MySQL तालिकाओं के बीच अंतर कैसे खोजें?

  5. foreach लूप:R में सभी कोर का उपयोग करना (विशेषकर यदि हम foreach लूप के अंदर sql क्वेरी भेज रहे हैं)