2014-09-11 2 views
-2

저는이 PHP 스크립트를 작성하여 필요한 내용으로 div의 전체 회로도를 표시합니다. 그러나, 나는 그것을 실행할 때, 나는 빈 페이지를 얻는다. 뭐가 잘못 되었 니?JSON 객체와 PHP 오류

코드 : JSON 파일의

<? 
$url = 'http://socialclub.rockstargames.com/crewapi/the_greeks_360/gtav/photo'; 
$json1 = utf8_encode(file_get_contents($url)); 

$photos = json_decode($json1, false); 
foreach ($json1 as $pic) 
{ 
    echo '<div style="opacity:0.7;width:310px;height:259px;">'; 
    echo '<div style="width:310px;height:174px;display:block;">'; 
    echo '<img src="http://prod.cloud.rockstargames.com/' . $pic->photos->Meta->ImgSrc . '" width="310" height="174" alt=""></img>'; 
    echo '</div><br>'; 
    echo '<div style="opacity:0.7;width:310px;height:52px;display:block;padding:10px;">'; 
    echo '<p>' . $pic->photos->Meta->location . '</p><br>'; 
    echo '<p><a href="http://socialclub.rockstargames.com/member/' . $pic->photos->Meta->nickname . '" target="_blank" alt="">' . $pic->photos->Meta->gamertag . '</a></p><br>'; 
    echo '</div>'; 
    echo '<div style="opacity:0.9;width:310px;height:32px;display:block;padding:8px;margin-bottom:1px;">'; 
    echo '<a href="http://socialclub.rockstargames.com/games/gtav/snapmatic/photo/' . $pic->photos->Meta->Id . '" target="_blank" class="gtavicon-icon_thumbs_up"></a> ' . $pic->photos->Meta->Liked->LikeCount . ' | '; 
    echo '<a href="http://socialclub.rockstargames.com/games/gtav/snapmatic/photo/' . $pic->photos->Meta->Id . '" target="_blank" class="gtavicon-icon_chat"></a> ' . $pic->photos->Comments->total; 
    echo '</div>'; 
    echo '</div>';     
} 

?> 

예는 다음과 같습니다

{ 
    "photos": [{ 
     "Meta": { 
      "CreatedTimestamp": 1409242029, 
      "Name": "before the destruction", 
      "HardTags": ["Burton"], 
      "UserTags": [], 
      "Liked": { 
       "Liked": false, 
       "LikeCount": 7 
      }, 
      "data": { 
       "area": "BURTON", 
       "street": "0", 
       "scr": "1", 
       "loc": { 
        "z": 40.26, 
        "x": -395.67, 
        "y": -101.2 
       }, 
       "mode": "FREEMODE" 
      }, 
      "location": "Burton", 
      "avatar": "GTAO/gtao09.png", 
      "rockstarid": "45761616", 
      "platformUserId": "2535413697273494", 
      "creatorMedal": "platinum", 
      "plat": "XBox", 
      "gamertag": "firstkiller3000", 
      "crewurl": "/crew/the_greeks_360", 
      "crewtag": "GRKS", 
      "crewrankrev": 2, 
      "crewIsPrivate": true, 
      "crewIsFounderCrew": false, 
      "crewColor": "#70FF03", 
      "crewRankOrder": 3, 
      "Id": "WsRTTpMDsUi7A8tSvNhrvQ", 
      "ImgSrc": "/ugc/gta5photo/8855/WsRTTpMDsUi7A8tSvNhrvQ/0_0.jpg", 
      "nickname": "killer16478" 
     }, 
     "Comments": { 
      "total": 0, 
      "totalreplies": 0, 
      "count": 0, 
      "results": [] 
     } 
    }, { 
     "Meta": { 
      "CreatedTimestamp": 1399739945, 
      "Name": "Burton", 
      "HardTags": ["Burton"], 
      "UserTags": [], 
      "Liked": { 
       "Liked": false, 
       "LikeCount": 6 
      }, 
      "data": { 
       "area": "BURTON", 
       "street": "0", 
       "scr": "1", 
       "loc": { 
        "z": 54.42, 
        "x": -402.63, 
        "y": -78.48 
       }, 
       "mode": "FREEMODE" 
      }, 
      "location": "Burton", 
      "avatar": "GTAV/gtav05.png", 
      "rockstarid": "20181442", 
      "platformUserId": "2533274971471462", 
      "creatorMedal": "platinum", 
      "plat": "XBox", 
      "gamertag": "TasosNGreek", 
      "crewurl": "/crew/the_greeks_360", 
      "crewtag": "GRKS", 
      "crewrankrev": 4, 
      "crewIsPrivate": true, 
      "crewIsFounderCrew": false, 
      "crewColor": "#70FF03", 
      "crewRankOrder": 1, 
      "Id": "XPgHUpYPfEijbL59xtHOfg", 
      "ImgSrc": "/ugc/gta5photo/1556/XPgHUpYPfEijbL59xtHOfg/0_0.jpg", 
      "nickname": "TasosNGreek" 
     }, 
     "Comments": { 
      "total": 1, 
      "totalreplies": 0, 
      "count": 1, 
      "results": [{ 
       "id": "1837034", 
       "rockstarId": "24879155", 
       "txt": "no comment !", 
       "dt": "2014-05-14T18:56:26Z", 
       "avatar": "GTAV/gtav19.png", 
       "nickname": "JohnysT122", 
       "replies": [] 
      }] 
     } 
    }, { 
     "Meta": { 
      "CreatedTimestamp": 1403048295, 
      "Name": "Paleto Forest", 
      "HardTags": ["PaletoForest"], 
      "UserTags": [], 
      "Liked": { 
       "Liked": false, 
       "LikeCount": 5 
      }, 
      "data": { 
       "area": "PALFOR", 
       "street": "0", 
       "scr": "1", 
       "loc": { 
        "z": 41.81, 
        "x": -816.33, 
        "y": 5387.35 
       }, 
       "mode": "FREEMODE" 
      }, 
      "location": "Paleto 
Forest", 
      "avatar": "MaxPayne3/MP3_46.jpg", 
      "rockstarid": "35911863", 
      "platformUserId": "2533274827444615", 
      "creatorMedal": "platinum", 
      "plat": "XBox", 
      "gamertag": "banedfromb1rth", 
      "crewurl": "/crew/the_greeks_360", 
      "crewtag": "GRKS", 
      "crewrankrev": 4, 
      "crewIsPrivate": true, 
      "crewIsFounderCrew": false, 
      "crewColor": "#70FF03", 
      "crewRankOrder": 1, 
      "Id": "yf9NPUEYXU2DYFHbmddt9A", 
      "ImgSrc": "/ugc/gta5photo/8221/yf9NPUEYXU2DYFHbmddt9A 
/0_0.jpg", 
      "nickname": "zempili" 
     }, 
     "Comments": { 
      "total": 0, 
      "totalreplies": 0, 
      "count": 0, 
      "results": [] 
     } 
    }, { 
     "Meta": { 
      "CreatedTimestamp": 1406374405, 
      "Name": "Burton", 
      "HardTags": ["Burton"], 
      "UserTags": [], 
      "Liked": { 
       "Liked": false, 
       "LikeCount": 4 
      }, 
      "data": { 
       "area": "BURTON", 
       "street": "0", 
       "scr": "1", 
       "loc": { 
        "z": 54.42, 
        "x": -322.5, 
        "y": -66.55 
       }, 
       "mode": "FREEMODE" 
      }, 
      "location": "Burton", 
      "avatar": "GTAV/gtav02.png", 
      "rockstarid": "43602473", 
      "platformUserId": "2533274869248155", 
      "creatorMedal": "platinum", 
      "plat": "XBox", 
      "gamertag": "NEMESIS135", 
      "crewurl": "/crew/the_greeks_360", 
      "crewtag": "GRKS", 
      "crewrankrev": 4, 
      "crewIsPrivate": true, 
      "crewIsFounderCrew": false, 
      "crewColor": "#70FF03", 
      "crewRankOrder": 1, 
      "Id": "EVgJFeX9cUq6knR4GCAYlA", 
      "ImgSrc": "/ugc/gta5photo/3388/EVgJFeX9cUq6knR4GCAYlA/0_0.jpg", 
      "nickname": "manolisG13" 
     }, 
     "Comments": { 
      "total": 0, 
      "totalreplies": 0, 
      "count": 0, 
      "results": [] 
     } 
    }], 
    "total": "419" 
} 
+1

무엇 이것에 대해 "작동하지 않는다"? 그것은 무엇을합니까? 안 그래? 오류가 있습니까? 이 문제에 관해 우리에게 줄 수있는 정보가 더 있습니까? 이걸 디버깅하려고 뭐 했어? –

+1

왜 'utf8_encode'인가?! – deceze

+1

P. 'foreach ($ pictures로 $ 사진)'을 원하셨습니까? –

답변

1

큰 문제는 당신이 사진 키 잘못의 위치를 ​​한 것이 었습니다.

$data = json_decode($json1, false); 
foreach ($data->photos as $pic) { 
    echo '<div style="opacity:0.7;width:310px;height:259px;">'; 
    echo '<div style="width:310px;height:174px;display:block;">'; 
    echo '<img src="http://prod.cloud.rockstargames.com/' . $pic->Meta->ImgSrc . '" width="310" height="174" alt="" />'; 
    echo '</div><br>'; 
    echo '<div style="opacity:0.7;width:310px;height:52px;display:block;padding:10px;">'; 
    echo '<p>' . $pic->Meta->location . '</p><br>'; 
    echo '<p><a href="http://socialclub.rockstargames.com/member/' . $pic->Meta->nickname . '" target="_blank" alt="">' . $pic->Meta->gamertag . '</a></p><br>'; 
    echo '</div>'; 
    echo '<div style="opacity:0.9;width:310px;height:32px;display:block;padding:8px;margin-bottom:1px;">'; 
    echo '<a href="http://socialclub.rockstargames.com/games/gtav/snapmatic/photo/' . $pic->Meta->Id . '" target="_blank" class="gtavicon-icon_thumbs_up"></a> ' . $pic->Meta->Liked->LikeCount . ' | '; 
    echo '<a href="http://socialclub.rockstargames.com/games/gtav/snapmatic/photo/' . $pic->Meta->Id . '" target="_blank" class="gtavicon-icon_chat"></a> ' . $pic->Comments->total; 
    echo '</div>'; 
    echo '</div>'; 
} 

내가 비록 HTML의 많은을 울리는 대신보기를 사용하려면 변경 제안 작동합니다. 외관이 좋고 유지 보수가 더 쉽습니다.

아마 (별도의 뷰 파일에서 가능한 경우)이 같은으로 변경 것

foreach ($data->photos as $pic) { ?> 
    <div style="opacity:0.7;width:310px;height:259px;"> 
    <div style="width:310px;height:174px;display:block;"> 
     <img src="http://prod.cloud.rockstargames.com/<?= $pic->Meta->ImgSrc ?>" width="310" height="174" alt="" /> 
    </div> 
    <br> 
    <div style="opacity:0.7;width:310px;height:52px;display:block;padding:10px;"> 
     <p><?= $pic->Meta->location ?></p><br> 
     <p><a href="http://socialclub.rockstargames.com/member/<?= $pic->Meta->nickname ?>" target="_blank" alt=""><?= $pic->Meta->gamertag ?></a></p><br> 
    </div> 
    <div style="opacity:0.9;width:310px;height:32px;display:block;padding:8px;margin-bottom:1px;"> 
     <a href="http://socialclub.rockstargames.com/games/gtav/snapmatic/photo/<?= $pic->Meta->Id ?>" target="_blank" class="gtavicon-icon_thumbs_up"></a> <?= $pic->Meta->Liked->LikeCount ?> | 
     <a href="http://socialclub.rockstargames.com/games/gtav/snapmatic/photo/<?= $pic->Meta->Id ?>" target="_blank" class="gtavicon-icon_chat"></a> <?= $pic->Comments->total ?> 
    </div> 
    </div> 
<?php 
} 

다음 단계는 그들이 :)

을 속한 CSS 파일에 그 인라인 스타일을 이동하는 것

이는 스타일이 자신의 파일로 이동과 같이 할 수 무엇

foreach ($data->photos as $pic) { ?> 
    <div> 
    <div> 
     <img src="http://prod.cloud.rockstargames.com/<?= $pic->Meta->ImgSrc ?>" width="310" height="174" alt="" /> 
    </div> 
    <div> 
     <p><?= $pic->Meta->location ?></p> 
     <p><a href="http://socialclub.rockstargames.com/member/<?= $pic->Meta->nickname ?>" target="_blank" alt=""><?= $pic->Meta->gamertag ?></a></p> 
    </div> 
    <div> 
     <a href="http://socialclub.rockstargames.com/games/gtav/snapmatic/photo/<?= $pic->Meta->Id ?>" target="_blank" class="gtavicon-icon_thumbs_up"></a> <?= $pic->Meta->Liked->LikeCount ?> | 
     <a href="http://socialclub.rockstargames.com/games/gtav/snapmatic/photo/<?= $pic->Meta->Id ?>" target="_blank" class="gtavicon-icon_chat"></a> <?= $pic->Comments->total ?> 
    </div> 
    </div> 
<?php 
} 
+0

@Prix는 이미 이미지 태그를 고쳤지만, 이미 "코드 리뷰"장면으로 너무 깊이 들어가고 있다고 느꼈으면서 html을 보지 않았습니다. 나는 그들이 괜찮다고 생각하는 링크에 관해서는 그가 아이콘을 사용하고있는 것처럼 보인다. – JimL

+0

아니요 $ pic에서 나오는 값은 링크가 포함되어 있지 않을 수도 있습니다. – Dexter

관련 문제