2017-07-25 8 views
-6

Wie kann ich alle Benutzerempfehlungen auswählen?Wie kann ich die Benutzer-ID auswählen?

| id |   user_id | friend_id | 
|-------|--------------------|--------------| 
| 1  |    1 |   2 | 
| 2  |    2 |   3 | 
| 3  |    3 |   4 | 
| 4  |    10 |   15 | 

So in dem obigen Beispiel Benutzer 1 würde eine Überweisung Spur 3, weil die Person, die sie bezeichnet, jemand bezeichnet und dann die Person, die sie genannt sonst jemand genannt ...

Es könnte besser sein, Mach es als PHP-Funktion, aber ich kämpfe um meinen Kopf herum?

Unten ist mein CODE

public function has_child($referee_referees){ 
     $this->db->select("user_account_phone"); 
     $this->db->where('referee_phone_number', $referee_referees); 

     $query = $this->db->get('account'); 

     if($query->num_rows() == 0) { 

      return FALSE; 

     } 

     return TRUE; 
    } 



    public function get_referee_referee_details($user_account_phone){ 
      $this->db->select('user_account_phone'); 
      $this->db->where('referee_phone_number', $product_phone_number); 
      $query = $this->db->get('account'); 

      foreach($query->result() as $rows){ 
       $child_ids[$rows->user_account_phone] = $rows->user_account_phone; 
       $referee_referees = $rows->user_account_phone; 

       if($this->has_child($referee_referees)){ 
        $child_ids[$rows->user_account_phone] = $this->get_referee_referee_details($rows->user_account_phone); 
       } 

       echo "<pre>"; 
       var_dump($child_ids); 
       echo "</pre>"; 


       return $child_ids; 

      } 


     // return $child_ids; 
    } 
+2

in der Tabelle vorhanden ist, dass eine Datenbank? Verwenden Sie MySQL? Was hast du bisher versucht? – LeonardChallis

+1

Zeigen Sie Ihren Code, was Sie versucht haben. –

+0

Wählen Sie * aus Empfehlung –

Antwort

0

Wenn du die Daten im Speicher hast (was proble matic für eine große Tabelle)

$users = array(
    array("id" => 1, "user_id" => 1 , "friend_id" => 2,), 
    array("id" => 2, "user_id" => 2 , "friend_id" => 3,), 
    array("id" => 3, "user_id" => 3 , "friend_id" => 4,), 
    array("id" => 4, "user_id" => 10, "friend_id" => 15,), 
); 

function getRefferrals(&$users, $userId) 
{ 
    $referrals = 1; 

    foreach($users as $user) { 
     if($user["user_id"] == $userId) { 
      $referrals += getRefferrals($users, $user["friend_id"]); 
     } 
    } 

    return $referrals; 
} 

$referrals = getRefferrals($users, 1) - 1; 
var_dump($referrals); 

Wenn Sie in Speicher die Daten nicht haben Sie, wenn der Benutzer „friend_id“ überprüfen könnten, und wenn es

+0

TANKEN SIE IHN, IAM MIT CODEIGNITER, IAM FINDEN WEGE, ES ZU ARBEITEN. WILL SIE WISSEN WENN ES TUN. SIE SIND SO EINE GROSSE PERSON –

+0

Hallo Katona.abel Vielen Dank, es funktioniert. Ich bin sehr dankbar für Ihre Hilfe –

0

Sie haben einen Code zu schreiben, über Ergebnisse iterieren.

Dieser Code ist sehr grob und funktioniert nicht für Benutzer, die mehr als eine Person angegeben haben.

function get_referral_count($userId) { 
    $count = 0; 
    // Just an example, you should escape this query! 
    while ($res = // SELECT * FROM user_referral where user_id = $userId;) 
    { 
     $userId = $friendId; 
     $count++; 
    } 
    return $count; 
} 
0

Interessante Frage

i kürzeste Code versucht, für Sie

Dies funktioniert - (Sie können es testen mit verschiedenen Daten)

wählen friend_id von Demo wo user_id = 1 OR user_id IN (wähle friend_id von der Demo)

+0

vergessen Sie nicht, Ihren Tabellennamen auf diesem ... seine Demo in meiner Abfrage zu ändern ... Sie können das ändern – Farsay

Verwandte Themen