2013-04-10 2 views
0

내 웹 페이지에 온라인 및 오프라인 사용자 목록을 추가하려고합니다. 게임 서버 유형을 운영 중입니다. 데이터베이스 인증에 테이블 계정의 열이 있습니다. 나는 또한 온라인과 오프라인 계정의 수를 보여 드리고자 다음 오프라인 사용자PHP는 온라인 사용자 이름을 mysql에서 인쇄합니다.

: 온라인 사용자 다음 오프라인의 제목의 다음 목록 :

나는 온라인의 제목을 갖고 싶어.

임에도 불구하고 꽤 가난하지만 한 명의 사용자 계정에 대해이를 수행했지만 그 대신 한 명의 사용자가 온라인인지 확인하는 대신 모든 사람을 확인하고 싶습니다. 내가 해낸 방법은 데이터베이스의 각 계정에 대해이 코드를 수동으로 반복해야합니다. 여기 는 필자가 가지고 무엇을 :

$DBTYPE = 'mysql'; 
$DBHOST = '127.0.0.1'; 
$DBUSER = 'root'; 
$DBPASSWORD = 'password'; 
$DBNAME = 'auth'; 


$link = mysql_connect($DBHOST, $DBUSER, $DBPASSWORD); 
mysql_select_db($DBNAME); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
$member_id= '1'; // get value of the member, assumed that you have post the data into id. change if it is different into your code 

$result = mysql_query("SELECT * FROM account where id=$member_id"); 

while($row = mysql_fetch_assoc($result)) 
{ 
    if($row['online'] == '1') 
    { 
     $usernameon = ($row['username']); 
    } 
    else 
    { 
     $usernameoff = ($row['username']); 
    } 
} 

$onlineppl="<FONT COLOR=green>[*]Online players:</b></FONT><br />"; 
echo $onlineppl; 
echo $usernameon; 
?> 
<br /> 
<br /> 
<?php 
$offlineppl="<FONT COLOR=red>[*]Offline players:</b></FONT><br />"; 
echo $offlineppl; 
if($usernameoff == ''); 
$usernameoff="We're all online"; 
echo $usernameoff; 

나는이 일을 더 나은, 청소기 방법은 확실히있다 알고 있지만 난 그냥 아직 잘 모릅니다? 어떤 제안 ?? :) 임 확실히 명령은 틀린 것이지만 메신저 누군가도 그걸 해결할 수 있기를 바랄뿐입니다 :)

+0

[FAQ : 여기에 질문하지 않아야 할 질문은 무엇입니까?] (http://stackoverflow.com/faq#dontask) - 이것은 명확한 답변없이 정확히 끝이없는 질문입니다. FAQ는 묻지 않는다고 말합니다. –

+0

@ user2266565 더 나은 방법으로 무엇을 할 것인가에 중점을두고 구체적인 질문을합니다. – emecas

답변

0

우선 : "제발 내 일을하십시오"웹 사이트가 아닙니다. 이런 일에 온라인으로 예제가 많이 있습니다. 어쨌든

:

$result = mysql_query("SELECT * FROM account"); 
$users = array("offline" => array(), "online" => array()); 
while($row = mysql_fetch_assoc($users)) 
{ 
    if ($row['online'] == 1) 
    $users['online'][] = $row['username'] 
    else 
    $users['offline'][] = $row['username'] 
} 

지금 $ 사용자는 오프라인 사용자와 온라인 사용자의 목록이 포함되어 있습니다. 나는 이것을 작동 시켜서 PHP 튜토리얼을 실행할 수 없다.

1

시도 :

$sql = "SELECT username, online FROM ..." 
$result = mysql_query($sql) or die(mysql_error()); 
$users = array(); 
while($row = mysql_fetch_assoc($result)) { 
    $users[$row['online']][] = $row['username']; 
} 

$online = count($users[1]); 
$offline = count($users[0]); // or whatever value you assign to offline users 

$online_list = implode(',' $users[1]); 
$offline_list = implode(',', $users[0]); 

점은주의해야 할 : 당신은 단지 테이블의 필드의 몇 가지를 필요로 할 때

1)는 select *하지 않습니다. select *는 DB가 전체 행을 가져 오도록 강제합니다. 그런 다음 거의 모든 데이터를 버립니다.

2) 페치 루프가 내부에 있음을 유의하십시오. 온라인 필드를 직접 확인하지 않아도 오프라인 및 온라인 사용자를 자동으로 구성 할 수 있습니다. 배열을 작성한 후 그 내용을 계산하십시오. 온라인/오프라인 카운트를 얻으려고이 작업을 수행했다면이 작업조차하지 않아도됩니다. DB를 계산하여 결과를 반환하게하십시오. PHP가 없는데도 데이터를 빨아 들이지 마십시오. 그것은 CPU 시간과 메모리 낭비입니다.

0
<?php 
$DBTYPE = 'mysql'; 
$DBHOST = '127.0.0.1'; 
$DBUSER = 'root'; 
$DBPASSWORD = 'password'; 
$DBNAME = 'auth'; 


$link = mysql_connect($DBHOST, $DBUSER, $DBPASSWORD); 
mysql_select_db($DBNAME); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
//$member_id= '1'; // get value of the member, assumed that you have post the data into id. change if it is different into your code 

$result = mysql_query("SELECT * FROM account); 


$totonline=0; 
$totoffline=0; 
while($row = mysql_fetch_assoc($result)) 
{ 
    if($row['online'] == '1') 
    { 
     $usernameon .= "<div>".$row['username']."</div>"; 

     $totonline++; 
    } 
    else 
    { 
     $usernameoff .= "<div>".$row['username']."</div>"; 
     $totoffline++; 
    } 
} 

$onlineppl="<FONT COLOR=green>[*]Online players: Total:".$totonline."</b></FONT><br />"; 
echo $onlineppl; 
echo $usernameon; 
?> 
<br /> 
<br /> 
<?php 
$offlineppl="<FONT COLOR=red>[*]Offline players: Total:".$totoffline."</b></FONT><br />"; 
echo $offlineppl; 
if($usernameoff == ''); 
$usernameoff="We're all online"; 
echo $usernameoff; 
?> 
관련 문제