2014-03-02 2 views
0

다음 두 개의 SQL 쿼리가 있습니다. Angular 프론트 엔드에서 사용할 JSON 객체를 하나 만들려고합니다. PHP에서 JSON 객체 포맷하기

$getCompDetails = mysql_query("SELECT * 
      FROM competitions c 
      WHERE c.competitionId = '$competitionId'") or die("Couldn't select competition details"); 

$compDetailsArr = array(); 
while ($row = mysql_fetch_array($getCompDetails,MYSQL_ASSOC)){ 
    array_push($compDetailsArr,$row); 
} 

$getCompUsers = mysql_query("SELECT c.userid, u.name, u.profilePic FROM competitionmembers c INNER JOIN users1 u ON u.id = c.userid WHERE competitionid = '$competitionId'") or die("Couldn't select competitions users"); 

$compUsersArr = array(); 
while ($row = mysql_fetch_array($getCompUsers,MYSQL_ASSOC)){ 
    array_push($compUsersArr,$row); 
} 

$getUsrActs = mysql_query("SELECT activity_typeid, userid, time, activity_weight, activityname 
FROM activity_entries 
WHERE competitionid = '$competitionId'") or die("Couldn't select activities"); 

$userActArr = array(); 
while ($row = mysql_fetch_array($getUsrActs,MYSQL_ASSOC)){ 
    array_push($userActArr,$row); 
} 

$compDetailsArr["users"] = $compUsersArr; 
$compDetailsArr["users"]["activities"] = $userActArr; 
echo json_encode($compDetailsArr); 

는 결과 :

{ 
"0": { 
    "id": "3371", 
    "organisationId": "524bd7c65fd60", 
    "competitionId": "52a99783c5d6f", 
    "name": "Nordic Challenge", 
    "start_date": "2013-12-12", 
    "end_date": "2014-05-24", 
    "createdby": "531", 
    "about": "asdasd", 
    "prize": "", 
    "prizeImage": "", 
    "compCreatedTime": "2013-12-12 11:01:25" 
}, 
"users": { 
    "0": { 
     "userid": "531", 
     "name": "Jane Wilson", 
     "profilePic": "A4cMVn-yxQu4fLrpGU7_wwWfbFmAWlt40yS31gv1bTc.png" 
    }, 
    "1": { 
     "userid": "1", 
     "name": "James Pember", 
     "profilePic": "fighter-1.jpg" 
    }, 
    "2": { 
     "userid": "1061", 
     "name": "Olof Petersson", 
     "profilePic": "" 
    }, 
    "3": { 
     "userid": "1071", 
     "name": "Lars Petersen", 
     "profilePic": "" 
    }, 
    "4": { 
     "userid": "1081", 
     "name": "Mark Johnson", 
     "profilePic": "" 
    }, 
    "5": { 
     "userid": "971", 
     "name": "676", 
     "profilePic": "784322701.jpg" 
    }, 
    "activities": [ 
     { 
      "activity_typeid": "12251", 
      "userid": "531", 
      "time": "2013-12-12 11:01:43", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12261", 
      "userid": "1061", 
      "time": "2013-12-12 11:05:44", 
      "activity_weight": "15", 
      "activityname": "Conducted" 
     }, 
     { 
      "activity_typeid": "12271", 
      "userid": "1071", 
      "time": "2013-12-12 11:06:46", 
      "activity_weight": "50", 
      "activityname": "Deal" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1081", 
      "time": "2013-12-12 11:07:45", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12261", 
      "userid": "531", 
      "time": "2013-12-12 11:10:38", 
      "activity_weight": "15", 
      "activityname": "Conducted" 
     }, 
     { 
      "activity_typeid": "12271", 
      "userid": "531", 
      "time": "2013-12-12 16:17:02", 
      "activity_weight": "50", 
      "activityname": "Deal" 
     }, 
     { 
      "activity_typeid": "12271", 
      "userid": "1", 
      "time": "2013-12-27 10:17:30", 
      "activity_weight": "50", 
      "activityname": "Deal" 
     }, 
     { 
      "activity_typeid": "12261", 
      "userid": "1", 
      "time": "2014-01-08 17:12:30", 
      "activity_weight": "15", 
      "activityname": "Conducted" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-01-08 18:41:03", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12271", 
      "userid": "971", 
      "time": "2014-01-08 18:43:50", 
      "activity_weight": "50", 
      "activityname": "Deal" 
     }, 
     { 
      "activity_typeid": "12261", 
      "userid": "1", 
      "time": "2014-01-08 18:44:10", 
      "activity_weight": "15", 
      "activityname": "Conducted" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-01-08 18:50:02", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-01-08 18:50:40", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12261", 
      "userid": "1", 
      "time": "2014-01-08 18:58:02", 
      "activity_weight": "15", 
      "activityname": "Conducted" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-01-09 13:02:25", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "971", 
      "time": "2014-01-09 13:03:16", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12261", 
      "userid": "1", 
      "time": "2014-01-10 09:40:59", 
      "activity_weight": "15", 
      "activityname": "Conducted" 
     }, 
     { 
      "activity_typeid": "12261", 
      "userid": "1", 
      "time": "2014-01-10 09:41:03", 
      "activity_weight": "15", 
      "activityname": "Conducted" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-01-24 13:00:56", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12261", 
      "userid": "1", 
      "time": "2014-01-24 13:01:01", 
      "activity_weight": "15", 
      "activityname": "Conducted" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-01-24 13:01:27", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-01-27 13:04:04", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-01-30 15:23:24", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-01-30 15:42:37", 
      "activity_weight": "10", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-01-30 19:31:27", 
      "activity_weight": "12", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-01-30 19:31:44", 
      "activity_weight": "12", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-02-07 14:25:32", 
      "activity_weight": "12", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-02-10 12:41:16", 
      "activity_weight": "12", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-02-10 12:41:51", 
      "activity_weight": "12", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-02-24 15:01:33", 
      "activity_weight": "12", 
      "activityname": "Booked" 
     }, 
     { 
      "activity_typeid": "12251", 
      "userid": "1", 
      "time": "2014-02-28 07:19:12", 
      "activity_weight": "12", 
      "activityname": "Booked" 
     } 
    ] 
} 

}

그리고 이것은 각 사용자가} {별도의

{ 
    "organisationId": 1, 
    "competitionId": "52eabcf0f3672", 
    "currentUser": 2, 
    "title": "Sales Hood Q1 Challenge", 
    "end_date": "2014-03-01 00:00:00", 
    "description": "This is it guys, challenge time!", 
    "prizeImage": "placeholder.jpg", 
    "prizeDescription": "Dinner for 2!", 
    "users": [{ 
     "id": 2, 
     "name": "John Wilson", 
     "profilePic": "fighter-1.jpg", 
      "activities" = [{ 
      "activity_typeid": 312, 
      "activityname": Calls 
      "activity_weight": 10 
      }, 
      { 
      "activity_typeid": 312, 
      "activityname": Calls 
      "activity_weight": 10 
      }] 
    }, { 
     "id": 3, 
     "name": "Robin Christoper", 
     "profilePic": "fighter-3.jpg", 
      "activities" = [{ 
      "activity_typeid": 312, 
      "activityname": Calls 
      "activity_weight": 10 
      }] 
    }, { 
     "id": 1, 
     "name": "Ronald Johnson", 
     "profilePic": "placeholder.jpg", 
      "activities" = [{ 
      "activity_typeid": 312, 
      "activityname": Calls 
      "activity_weight": 10 
      }] 
    }] 
} 

겠습니까 주도로, 원하는 출력 형식 이걸로 좀 도와주세요!

답변

3

중첩 대신, 그것들을 배열을 병합하지 마십시오

$compDetailsArr['users'] = $compUsersArr 
$json = json_encode($compDetailsArr); 
+0

완벽! 고맙습니다 : D – user2656127

+0

안녕하십니까? 한 레벨을 더 깊게 (사용자 내의 활동) 중첩시키려는 경우, $ compDetailsArr [ "users"] [ "activities"] = ...를 사용하는 것입니까? – user2656127

+0

@ user2656127 예. – hjpotter92

-1

나 같은 경우는이 시도가 :

$compDetailsArr = $compDetailsArr; 
$compDetailsArr['users'] = array(); 
$compDetailsArr['users'] = $compUsersArr; 
$json = json_encode($compDetailsArr); 
+0

그래서 @ hjpotter92의 답변에 다음과 같이 추가 했습니까?'$ compDetailsArr = $ compDetailsArr; '는 실제로 아무것도하지 않습니까? -1 – CodeBird

+0

@CodeBird 나는이 솔루션을 이미 사용했던 동일한 케이스가 있다고 말했고 이것은 PHP의 구 버전과 새 버전에서 나와 작동한다. 그래서 나는 신뢰하고 테스트 한 것에 대답한다. – Abudayah