- Beranda
- Programmer Forum
Multilevel Referral, Bantu gan. Stuck Code
...
TS
backtea7
Multilevel Referral, Bantu gan. Stuck Code
Saya punya database seperti ini
Yang saya inginkan adalah mempunyai hasil array seperti dibawah ini
Ini cara yang sudah saya terapkan, tapi kendalanya adalah Users yang ada di Level 3 mengulangi hasil dari Level_2
Memanggil fungsi
Hasil users di Level_3mengulangi users yang ada di Level_2
Tolong bantuannya
Spoiler for Database:
======================================
| id | username | ref_id |
| 1 | user1 | 0 |
| 2 | user2 | 1 |
| 3 | user3 | 1 |
| 4 | user4 | 2 |
| 5 | user5 | 2 |
| 6 | user6 | 4 |
| 7 | user7 | 5 |
=====================================
| id | username | ref_id |
| 1 | user1 | 0 |
| 2 | user2 | 1 |
| 3 | user3 | 1 |
| 4 | user4 | 2 |
| 5 | user5 | 2 |
| 6 | user6 | 4 |
| 7 | user7 | 5 |
=====================================
Yang saya inginkan adalah mempunyai hasil array seperti dibawah ini
Spoiler for Hasil akhir:
Array
(
[level_1] => Array
(
[level] => 1
[users] => Array
(
[2] => Array
(
[id] => 2
[username] => user2
[ref_id] => 1
)
[3] => Array
(
[id] => 3
[username] => user3
[ref_id] => 1
)
)
)
[level_2] => Array
(
[level] => 2
[users] => Array
(
[4] => Array
(
[id] => 4
[username] => user4
[ref_id] => 2
)
[5] => Array
(
[id] => 5
[username] => user5
[ref_id] => 3
)
)
)
[level_3] => Array
(
[level] => 3
[users] => Array
(
[6] => Array
(
[id] => 6
[username] => user6
[ref_id] => 4
)
[7] => Array
(
[id] => 7
[username] => user7
[ref_id] => 5
)
)
)
)
(
[level_1] => Array
(
[level] => 1
[users] => Array
(
[2] => Array
(
[id] => 2
[username] => user2
[ref_id] => 1
)
[3] => Array
(
[id] => 3
[username] => user3
[ref_id] => 1
)
)
)
[level_2] => Array
(
[level] => 2
[users] => Array
(
[4] => Array
(
[id] => 4
[username] => user4
[ref_id] => 2
)
[5] => Array
(
[id] => 5
[username] => user5
[ref_id] => 3
)
)
)
[level_3] => Array
(
[level] => 3
[users] => Array
(
[6] => Array
(
[id] => 6
[username] => user6
[ref_id] => 4
)
[7] => Array
(
[id] => 7
[username] => user7
[ref_id] => 5
)
)
)
)
Ini cara yang sudah saya terapkan, tapi kendalanya adalah Users yang ada di Level 3 mengulangi hasil dari Level_2
Spoiler for Percobaan Code:
$stmt = $conn->prepare("SELECT DISTINCT id,username,ref_id FROM users WHERE id = :uid");
$stmt->bindValue(':uid', $userid);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$refdetails = $stmt->fetchAll();
function getRefs($parent_id = 1, $deep) {
global $conn;
$stmt = $conn->prepare("SELECT DISTINCT id,username,ref_id FROM users WHERE ref_id = :uid");
$stmt->bindValue(':uid', $parent_id);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while ($row = $stmt->fetch()){
$ref_user[$row['id']]=array(
"id"=>$row['id'],
"username"=>$row['username'],
"ref_id"=>$row['ref_id']
);
}
$level = 1;
$arr_refs = $arr_user = array();
for ($i=1; $i <= $deep ; $i++) {
if($i==1){
$arr_refs['level_'.$level] = array(
"level"=>$level,
"users"=>$ref_user
);
}else{
foreach ($ref_user as $arr){
$arr_id = $arr['id'];
$stmts = $conn->prepare("SELECT DISTINCT id,username,ref_id FROM users WHERE ref_id = :uid");
$stmts->bindValue(':uid', $arr_id);
$stmts->execute();
$stmts->setFetchMode(PDO::FETCH_ASSOC);
while ($row = $stmts->fetch()){
$arr_user[$row['id']]=$row;
}
}
$arr_refs['level_'.$level] = array(
"level"=>$level,
"users"=>$arr_user
);
}
$level++;
}
return $arr_refs;
}
$stmt->bindValue(':uid', $userid);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$refdetails = $stmt->fetchAll();
function getRefs($parent_id = 1, $deep) {
global $conn;
$stmt = $conn->prepare("SELECT DISTINCT id,username,ref_id FROM users WHERE ref_id = :uid");
$stmt->bindValue(':uid', $parent_id);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while ($row = $stmt->fetch()){
$ref_user[$row['id']]=array(
"id"=>$row['id'],
"username"=>$row['username'],
"ref_id"=>$row['ref_id']
);
}
$level = 1;
$arr_refs = $arr_user = array();
for ($i=1; $i <= $deep ; $i++) {
if($i==1){
$arr_refs['level_'.$level] = array(
"level"=>$level,
"users"=>$ref_user
);
}else{
foreach ($ref_user as $arr){
$arr_id = $arr['id'];
$stmts = $conn->prepare("SELECT DISTINCT id,username,ref_id FROM users WHERE ref_id = :uid");
$stmts->bindValue(':uid', $arr_id);
$stmts->execute();
$stmts->setFetchMode(PDO::FETCH_ASSOC);
while ($row = $stmts->fetch()){
$arr_user[$row['id']]=$row;
}
}
$arr_refs['level_'.$level] = array(
"level"=>$level,
"users"=>$arr_user
);
}
$level++;
}
return $arr_refs;
}
Memanggil fungsi
Quote:
echo '<pre>';
print_r(getRefs('1','3'));
echo '</pre>';
print_r(getRefs('1','3'));
echo '</pre>';
Hasil users di Level_3mengulangi users yang ada di Level_2
Quote:
[level_3] => Array
(
[level] => 3
[users] => Array
(
[2] => Array
(
[id] => 4
[username] => user4
[ref_id] => 2
)
[3] => Array
(
[id] => 5
[username] => user5
[ref_id] => 3
)
[4] => Array
(
[id] => 4
[username] => user4
[ref_id] => 2
)
[5] => Array
(
[id] => 5
[username] => user5
[ref_id] => 3
)
)
)
(
[level] => 3
[users] => Array
(
[2] => Array
(
[id] => 4
[username] => user4
[ref_id] => 2
)
[3] => Array
(
[id] => 5
[username] => user5
[ref_id] => 3
)
[4] => Array
(
[id] => 4
[username] => user4
[ref_id] => 2
)
[5] => Array
(
[id] => 5
[username] => user5
[ref_id] => 3
)
)
)
Tolong bantuannya
0
482
Kutip
11
Balasan
Komentar yang asik ya
Mari bergabung, dapatkan informasi dan teman baru!
Programmer Forum
20.2KThread•5KAnggota
Urutkan
Terlama
Komentar yang asik ya