2014-03-13 2 views
1

미안 미안하지만 바보 같은 질문 인 경우, 저는 PHP에서 아주 새로운 것 같습니다. 내가 MYSQL에서 정보를 당겨 페이지에 정보를 표시하고PHP- API와 함께 사용할 셀의 값을 얻으려면

:

그래서 첫째, 여기에 내가 할 노력하고있어 것입니다. 특히이 비트 :

while($rowsID = mysql_fetch_assoc($sIDD)) 
{ 
echo '<tr>'; 
foreach($rowsID as $key => $cell){ 
    print '<td>'.$cell.'</td>'; 
} 

이것은 잘 작동하고 내가 원하는 정보를 표시합니다.

$sid = $rowsID['steamID']; 
$key = '<yoink>'; 
$slink =file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' .  $key . '&steamids=' . $sid . '&format=json'); 
$myarray = json_decode($slink, true); 
print '<img src='; 
print $myarray['response']['players'][0]['avatarmedium']; 
print '>'; ` 

이 작동하지 않습니다

해당 셀의 정보는, 나는에 연결하려고합니다. 셀에서 실제 숫자를 가져 와서 $ sid에 넣지는 않습니다. 나는 여기를 잃었다. 나는 며칠 동안 인터넷 검색을하고 대부분의 코드는 내가 여기에서 찾은 비트에서 날마다 찍었으므로 올바른 길을 가고 있는지 확신 할 수 없다. 나는 내 문제를 명확하게 설명하고 충분한 정보를 제공했기를 바랍니다. 어떤 도움을 주셔서 감사합니다.

전체 코드 :

<?php 
$hostname = ""; // eg. mysql.yourdomain.com (unique) 
$username = ""; // the username specified when setting-up the database 
$password = ""; // the password specified when setting-up the database 
$database = ""; // the database name chosen when setting-up the database (unique) 

$imgR = "<td><img src='/images/red-dot2.png".$cell['red-dot2.png']."'></td>"; 
$imgG = "<td><img src='/images/green-dot2.png".$cell['green-dot2.png']."'></td>"; 
setlocale(LC_MONETARY, 'en_US'); 
// Line 10 
$_GET['id']; 
$name = $_GET['id']; 

$link = mysql_connect($hostname,$username,$password); 
mysql_select_db($database) or die("Unable to select database"); 

$sql = "SELECT Members.PID, Members.ID, Members.Steam_Name, Members.SG_ID\n" 
    . "FROM Members WHERE Members.PID = '$name%' "; 

//Line 20 
$gas = "SELECT Giveaways.title, Giveaways.cv, Members_1.Page, Giveaways.B, Giveaways.entries\n" 
    . "FROM Members_1 INNER JOIN (Members INNER JOIN Giveaways ON Members.SG_ID = Giveaways.giver) ON Members_1.SG_ID = Giveaways.status\n" 
    . "WHERE (((Members.PID)='$name'))"; 

$cvGiven = "SELECT Members.PID, Sum(Giveaways.cv) AS SumOfcv\n" 
    . "FROM Members INNER JOIN Giveaways ON Members.SG_ID = Giveaways.giver\n" 
    . "GROUP BY Members.PID\n" 
    . "HAVING (((Members.PID)=$name)) "; 

//Line 30 
$winResults = "SELECT Giveaways.title, Members_1.Page, Giveaways.cv, Giveaways.B, Giveaways.entries\n" 
    . "FROM Members INNER JOIN (Members_1 INNER JOIN Giveaways ON Members_1.SG_ID = Giveaways.giver) ON Members.SG_ID = Giveaways.status\n" 
    . "WHERE (((Members.PID)=$name)) "; 

$cvWon = "SELECT Members.PID, Sum(Giveaways.cv) AS SumOfcvW\n" 
    . "FROM Members INNER JOIN Giveaways ON Members.SG_ID = Giveaways.status\n" 
    . "GROUP BY Members.PID\n" 
    . "HAVING (((Members.PID)=$name)) "; 

$sID = "SELECT Members.ID\n" 
    . "FROM Members\n" 
    . "WHERE (((Members.PID)=$name))"; 

$get = "SELECT Members.PID, Members.SG_ID\n" 
    . "FROM Members"; 

//Line 40 

$result = mysql_query($sql,$link) or die("Unable to select: ".mysql_error()); 
$result2 = mysql_query($gas,$link) or die("Unable to select: ".mysql_error()); 
$cvTotal = mysql_query($cvGiven,$link) or die("Unable to select: ".mysql_error()); 
$cvTotalW = mysql_query($cvWon,$link) or die("Unable to select: ".mysql_error()); 
$wins = mysql_query($winResults,$link) or die("Unable to select: ".mysql_error()); 
$sIDD = mysql_query($sID,$link) or die("Unable to select: ".mysql_error()); 
$getN= mysql_query($get,$link) or die("Unable to select: ".mysql_error()); 


if (!$result) { 
    die("Query to show fields from table failed"); 
} 

if (!$result2) { 
    die("Query to show fields from table failed"); 
} 
if (!$cvTotal) { 
    die("Query to show fields from table failed"); 
} 
if (!$sIDD) { 
    die("Query to show fields from table failed"); 
} 

if (!$getN) { 
    die("Query to show fields from table failed"); 
} 

//Line 60 
if (!$cvTotalW) { 
    die("Query to show fields from table failed"); 
} 
if (!$wins) { 
    die("Query to show fields from table failed"); 
} 


/////////////////////////////////////////////////////////////////////////////////// 
//////////////////////////Start Structure////////////////////////////////////////// 
/////////////////////////////////////////////////////////////////////////////////// 


//Display name 
echo '<h2>[[Breadcrumbs?showHomeCrumb = 0 ]]</h2>'; 

//Display Steam ID 
$sid = $rowsID['steamID']; 
$key = ''; 

    $slink = file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' . $key . '&steamids=' . $sid . '&format=json'); 
    $myarray = json_decode($slink, true); 
    print $myarray['response']['players'][0]['avatarmedium']; 
    // print '>'; 
print $sid; 


echo '<table>'; 

while($rowsID = mysql_fetch_assoc($sIDD)) 
{ 
echo '<tr>'; 
    foreach($rowsID as $key => $cell){ 
     print '<th>Steam ID:</th>'.'<td>'.$cell.'</td>'; 

    } 
echo'</tr>'; 
} 
echo '</table>'; 

//CV totals 
$row = mysql_fetch_assoc($cvTotal); 
$sum = $row['SumOfcv']; 
$rowW = mysql_fetch_assoc($cvTotalW); 
$sumW = $rowW['SumOfcvW']; 

//Start CV table 
echo '<div class=cv>'; 
echo '<table>'; 
echo '<tr>'; 
echo '<td>Total CV Given:</td>'; 
echo '<td> $'. number_format ($sum,2). '</td>'; 
echo '<tr>'; 
echo "<td>Total CV Won:</td>"; 
echo '<td> $'. number_format ($sumW,2). '</td>'; 
echo '</tr>'; 
echo "</tr>\n\n"; 
echo '</table>'; 
echo '</div>'; 




//Start Giveaways List 
echo '<h3>Giveaways</h3>'; 
echo '<div class=llamatable>'; 
echo"<table>\n"; 
echo'<th>Game</th><th>CV</th><th>Winner</th><th></th><th>NB?</th><th>Entries</th>'; 


while($row = mysql_fetch_assoc($result2)) { 



    print "<tr>\n"; 
     //Is it a bundle? 
     foreach($row as $key => $cell){ 
     if ($key == 'B' && strpos($cell,'1') !== false){ 
     $cell = str_replace('1',$cell,$imgR); 
     } 
     elseif($key == 'B' && $cell == "0"){ 
      $cell= $imgG; 
     } 
     //Set cv format 
     if($key == 'cv'){ 
     $cell= '$'. number_format ($cell,2); //Line 80 
     } 
     //set breaks if multiple winners 
     if (strpos($cell,',') !== false){ 
     $cell= str_replace(',','<br />',$cell); 
     } 
     if($key == 'status' && strpos($cell, $nameName)){ 
     $cell = $test; 
     }   
     echo"<td>$cell</td>\n"; 

    } 


    print "</tr>\n"; 


    //print "</br>\n"; 
}// End Giveaways list 
////////////////////////////////////////////////////////////////////////////////////////// 

print "</table>\n"; 
print "</div>"; 


//Start Wins List 
echo '<h3>Wins</h3>'; 
echo '<div class=llamatable>'; 
//$fields_num = mysql_num_fields($results); 
echo"<table>\n"; 
echo'<th>Game</th><th>Contributor</th><th>cv</th><th></th><th>NB?</th><th>Entries</th>'; 


while($row = mysql_fetch_assoc($wins)) { 

    print "<tr>\n"; 
     //Is it a bundle? 
     foreach($row as $key => $cell){ 
     if ($key == 'B' && strpos($cell,'1') !== false){ 
     $cell = str_replace('1',$cell,$imgR); 
     } //Line 110 
     elseif($key == 'B' && $cell == "0"){ 
      $cell= $imgG; 
     } 
     //Set cv amount 
     if($key == 'cv'){ 
     $cell= '$'. number_format ($cell,2); 
     } 
     //set breaks if multiple winners 
     if (strpos($cell,',') !== false){ 
     $cell= str_replace(',','<br />',$cell); 
     } 
     echo"<td>$cell</td>\n"; 

    } 
print "</tr>\n"; 



}// End wins list 
print "</table>\n"; 
    echo "</div>"; 



//echo '</table>'; 
//echo '</div>'; 
mysql_close($link); 
?> 

나는 내가이 작업을 더 완벽하게 내가 찾고 있어요 이해가 일단 청소 계획, 코드가 아마 재앙 알고 있습니다. 나는 여러 가지 소스에서 코드를 복사하고 패치했으며, 내 소스도 시도했습니다. 나를 미워하지 마라. :-)

+0

오, 제대로 작동합니까? $ sid 값에 실제 숫자를 연결하면 작동합니다. 사이트가 코딩 된 방식으로 인해 각 사람마다 수동으로 수행 할 수는 없습니다. – Llama

+0

은 실제 코드를 보여줍니다. 두 코드 스 니펫이 어떻게 관련되는지는 알 수 없습니까? 동일한 스크립트에 있고 동일한 http 요청 중에 실행됩니까? 아니면 완전히 별개의 두 스크립트로되어 있고 사용자가 첫 번째 비트에서 ' $ cell'을 클릭하여 두 번째 코드 조각을 실행 시키길 원합니까? –

+0

어디에서'$ sid = $ rowsID [ 'steamID'];'를 넣었습니까? while while loop입니까? 그렇지 않으면 다른 키를 추가하여 ID를 할당해야합니다. – Fabio

답변

0

몇 가지 문제가 있습니다. 먼저 변수가 데이터를 갖기 전에 $rowsID 변수를 사용하고 있습니다.

$sid = $rowsID['steamID']; 
     ^-------- You don't assign this a value until 12 lines later, here: 

while($rowsID = mysql_fetch_assoc($sIDD)) 

둘째, 당신은 하지mysql_* 기능을 사용해야합니다. 대신 되지mysql 기능

셋째

를 대체 mysqli 또는 PDO 조사, 은 당신의 INPUT 살균. $_GET['id']의 값을 가져 와서 쿼리에 직접 전달합니다. 안녕하십니까, Little Bobby Tables.

문제를 해결하면 도움이됩니다.

당신이 개선을 고려할 수있는 몇 가지 : 내가 제대로 쿼리를 읽고 있습니다 경우

  • , 당신이 선수 이름을 기반으로 쿼리하는, 맞죠? 두 사람의 이름이 Llama 인 경우 어떻게됩니까?
  • 각 사용자에 대해 Steam API를 쿼리하려는 경우 쉼표로 구분 된 프로필 ID 문자열을 작성한 다음 API 호출을 할 때 steamids 변수에 모두 (최대 100 개)를 전달하십시오. 이것은 Valves의 서버에 왕복하는 횟수를 줄입니다.
  • 데이터베이스 구조를 알지 못합니다 만, 그 중 몇몇 쿼리는 멋진 SQL과 결합 될 수 있습니다. 보다 복잡한 SQL을 알고 있다면 성능 향상을 위해 데이터베이스 호출 수를 줄이는 것이 좋습니다.
+0

유용한 답변을 주셔서 대단히 감사드립니다! while 루프 내부로 api 호출을 이동하고 rowsID [ 'steamID']를 $ cell로 변경하여 작동하도록 만들 수있었습니다. mysqli를 살펴 보겠습니다. 나는 내 데이터베이스의 내장 된 PHP 번역기를 사용하여 SQL 문을 변환하고 있으며, 이제는 내게 제공하는 것을 사용하고있다. 살생하는 한 $ GET [ 'id']은 URL에서 페이지 ID를 가져옵니다.이 페이지 ID는 각 사람마다 수동으로 만들어 데이터베이스의 열에 저장하므로 항상 2 자리 숫자입니다. 아직도 문제가 있습니까? 다시 한번 감사드립니다. – Llama

+0

예. 브라우저의 URL은 'http : //example.com/? name = 100'과 같습니다. 만약 누군가가'http://example.com/?name='drop table users를 읽도록 URL을 수정한다면? URL을 만들었 기 때문에 안전하다는 의미는 아닙니다. 사용자는 URL 표시 줄로 가서 원하는대로 변경할 수 있습니다. – Andy

+0

그건 의미가 있습니다, 나는 위생 처리 방법을 조사하기 시작할 것입니다. 다시 한 번 감사드립니다! – Llama