- Beranda
- Komunitas
- Tech
- 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
479
Kutip
11
Balasan
Komentar yang asik ya
Urutan
Terbaru
Terlama
Komentar yang asik ya
Komunitas Pilihan