I created a database like this, I want to show it as an PHP array to each other with ref_id as the connector beetween users.
The result should based on it's level down. And I want a result like this
array(
[0] => array
(
[id] => 2
[username] => user2
[ref_down] => Array
(
[0] => Array
(
[level] => 1
[count] => 1
[users] => user4
)
[1] => Array
(
[level] => 2
[count] => 1
[users] => user6
)
)
)
[1] => array
(
[id] => 3
[username] => user3
[ref_down] => Array
(
[0] => Array
(
[level] => 1
[count] => 1
[users] => user5
)
[1] => Array
(
[level] => 2
[count] => 1
[users] => user7
)
)
)
)
I hope anyone help me to find a MYSQL and PHP solution for this problem, Please help me
============================================================================= updated
Try to implement what you give to me like this
function getRefs($userid,$level,$deep) {
global $conn;
$arr_refs = $arr_user=array();
$stmts = $conn->prepare('SELECT u.id,u.fullname,u.username,u.ref_id,u.created_at FROM users u WHERE ref_id = :uid');
$stmts->bindValue(':uid', $userid);
$stmts->execute();
$stmts->setFetchMode(PDO::FETCH_ASSOC);
$rows = $stmts->fetchAll();
$levelsekarang=$level;
$level++;
foreach ($rows as $row) {
$arr_user['level'] = $levelsekarang;
$arr_user['id'] = $row['id'];
$arr_user['fullname'] = $row['fullname'];
$arr_user['username'] = $row['username'];
$arr_user['ref_id'] = $row['ref_id'];
$arr_user['created_at'] = $row['created_at'];
$arr_user['ref_stats'] = getRefs($row['id'],$level,$deep);
$arr_refs[]=$arr_user;
}
return empty($arr_refs) ? null : $arr_refs;
}
echo '<pre>';
$arr_refs = getRefs(1,0,1);
print_r($arr_refs);
echo '</pre>';
What I got is like this (Based on database table)
Array
(
[0] => Array
(
[level] => 0
[id] => 2
[fullname] => user2
[username] => user2
[ref_id] => 1
[created_at] => 2020-10-02 14:04:43
[ref_stats] => Array
(
[0] => Array
(
[level] => 1
[id] => 4
[fullname] => user4
[username] => user4
[ref_id] => 2
[created_at] => 2020-10-02 14:05:43
[ref_stats] => Array
(
[0] => Array
(
[level] => 2
[id] => 6
[fullname] => user6
[username] => user6
[ref_id] => 4
[created_at] => 2020-10-04 10:12:59
[ref_stats] =>
)
)
)
)
)
[1] => Array
(
[level] => 0
[id] => 3
[fullname] => user3
[username] => user3
[ref_id] => 1
[created_at] => 2020-10-02 14:04:53
[ref_stats] => Array
(
[0] => Array
(
[level] => 1
[id] => 5
[fullname] => user5
[username] => user5
[ref_id] => 3
[created_at] => 2020-10-02 14:06:43
[ref_stats] => Array
(
[0] => Array
(
[level] => 2
[id] => 7
[fullname] => user7
[username] => user7
[ref_id] => 5
[created_at] => 2020-11-16 20:18:53
[ref_stats] =>
)
)
)
)
)
)
My question now is, can we edit this? so the result will be like this
Array
(
[0] => Array
(
[level] => 0
[id] => 2
[fullname] => user2
[username] => user2
[ref_id] => 1
[created_at] => 2020-10-02 14:04:43
[ref_stats] => Array
(
[0] => Array
(
[level] => 1
[id] => 4
[fullname] => user4
[username] => user4
[ref_id] => 2
[created_at] => 2020-10-02 14:05:43
)
[1] => Array
(
[level] => 2
[id] => 6
[fullname] => user6
[username] => user6
[ref_id] => 4
[created_at] => 2020-10-04 10:12:59
)
)
)
[1] => Array
(
[level] => 0
[id] => 3
[fullname] => user3
[username] => user3
[ref_id] => 1
[created_at] => 2020-10-02 14:04:53
[ref_stats] => Array
(
[0] => Array
(
[level] => 1
[id] => 5
[fullname] => user5
[username] => user5
[ref_id] => 3
[created_at] => 2020-10-02 14:06:43
)
[1] => Array
(
[level] => 2
[id] => 7
[fullname] => user7
[username] => user7
[ref_id] => 5
[created_at] => 2020-11-16 20:18:53
)
)
)
)
What I want is inside the ref_stats from user 2 and 3 there is level 1 and level 2 user which is user 6 and user 7, so that I can reach them by using foreach function
