2015-12-03 3 views
0

Ниже приведены мои данные таблицы БДНужна помощь в запросе на выборку

id name manager_id hr_id   
1 abc   0  0   
20 abc1   22  21   
21 abc2   22  1 
22 abc3   1  1 
31 abc4   20  21 
32 abc5   20  21 


function get_child_users($id){ 
    global $mysqli; 
    $q ="SELECT * FROM users where manager_id ='$id' or hr_id ='$id'"; 
    $sql = $mysqli->query($q); 
    echo '<ul>'; 
    $count = $sql->num_rows; 

    if($count > 0){ 
     while($row = $sql->fetch_array()){ 
       echo '<li id='.$row['id'].'>'.$row['username'].''; 
       echo'</li>'; 
      } 
     echo '</ul>'; 
     } 
    } 

выше функция я творю.

я просто хочу, чтобы извлечь данные, так что если выглядит как

Администратор
пользователя (у manager_id или hr_id от администратора)
если есть users.suppose он вернется 2 пользователей
затем (проверь пользователь под эти пользователи) .... так далее

и, наконец, стать деревом, отображающим иерархию пользователей.

+1

Попробуйте: '$ array = json_decode ($ josn, ture)' и 'print_r ($ array [1]);' –

+0

декодировать ваш json, 'print_r (json_decode ($ json) -> person);' – check

ответ

0

Вы просто расшифровать первые затем получить любое значение, вы должны выглядеть примерно так:

$decoded_json = json_decode($json); 
print_r($decoded_json->person->names[0]); 
echo $decoded_json->person->names[0]->first; 

, если вам нужно цикл имя каждого человека, например:

foreach ($decoded_json->person->names as $key => $each_person_name) { 
    echo $each_person_name->first . '<br>'; 
} 

Ваш формат JSON немного странно хотя ..

+0

Мне нужно для каждого человека имя, имя пользователя, пол и т. д. его что-то вроде этого foreach ($ person as $ person) { $ person ['names'] [0], $ person ['email'] [0], $ person ['username'] [0] } это просто и ехр, который мне нужен. поэтому каждый первый элемент или каждый массив делают идеальную запись. У вас есть это –

+0

да, но проблема в вашем формате JSON, это не позволяет вам зацикливать этих людей за один проход, так как массив вложен в собственность человека. вам нужно сделать отдельный цикл для каждого значения. приведенный выше пример предназначен только для имени, но должен быть таким же для электронной почты и других ... – zaw

0

проблема решена

function get_child_users($id){ 
    global $mysqli; 
    $q ="SELECT * FROM users where manager_id ='$id' or hr_id ='$id'"; 
    $sql = $mysqli->query($q); 
    $count = $sql->num_rows; 
    if($count > 0){ 
     echo '<ul>'; 
     while($row = $sql->fetch_array()){ 
       echo '<li id='.$row['id'].'>'.$row['username'].''; 
          get_child_users($row['id']); 
       echo'</li>'; 
      } 
     echo '</ul>'; 
     } 

    } 
Смежные вопросы