[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена функции чтения из файла
uMnepaTop
Есть функция:
Код
function ReadServers($servlist) {

     $file = @fopen($servlist,"r");
     if ($file) {

       $lines = explode("\n", fread($file, filesize($servlist)));
       foreach ($lines as $v) {
         $elem = explode(":",$v);
         $srv['ip'] = $elem[0];
         $srv['port'] = $elem[1];
         if (GetServerInfo($srv['ip'],$srv['port']))
         $servers[] = $srv;
       }
       fclose($file);
       return $servers;

     } else return false;

}

$servers = array();
$servers = ReadServers(SERVLIST);


Как ее заменить на чтение из БД?

В бд
| id | ip | port |



Спустя 3 часа, 49 минут, 53 секунды (10.06.2008 - 08:38) n1tr0k1ll3r написал(а):
Цитата(uMnepaTop @ 10.6.2008, 5:48) [snapback]40367[/snapback]
Есть функция:
Код
function ReadServers($servlist) {

     $file = @fopen($servlist,"r");
     if ($file) {

       $lines = explode("\n", fread($file, filesize($servlist)));
       foreach ($lines as $v) {
         $elem = explode(":",$v);
         $srv['ip'] = $elem[0];
         $srv['port'] = $elem[1];
         if (GetServerInfo($srv['ip'],$srv['port']))
         $servers[] = $srv;
       }
         fclose($file);
       return $servers;

     } else return false;

}

$servers = array();
$servers = ReadServers(SERVLIST);


Как ее заменить на чтение из БД?

В бд
| id | ip | port |

Код
function ReadServersFromDB()
{
  $q = "SELECT `id`,`ip`,`port` FROM имя_таблицы";
  $db = mysql_connect($db_host, $db_user, $db_pass);
  mysql_select_db($db_name, $db);
  $result = mysql_query($q, $db);
  $num_rows = mysql_num_rows($result);
  for($i = 0; $i < $num_rows; $i++)
  {
    $row = mysql_fetch_assoc($result);
    $servers[$i] = $row;
  }
  return $servers;
}

Ну и проверки по вкусу smile.gif

Спустя 1 час, 2 минуты, 12 секунд (10.06.2008 - 09:40) uMnepaTop написал(а):
Оо, спасиииибо! Сейчас попробую)

Спустя 1 час, 37 минут (10.06.2008 - 11:17) uMnepaTop написал(а):
Код
function GetServerInfo($ip,$port) {
     $fp = @fsockopen("udp://".$ip, $port);
     if (!$fp) return false;

     @fwrite($fp,"\xFF\xFF\xFF\xFFTSource Engine Query\x00".chr(10));
     $start=time();
     socket_set_timeout($fp,1);
     $st=fread($fp,1);
     $r=socket_get_status($fp);
     $r=$r["unread_bytes"];
     if ($r == 0) { @fclose($fp); return false;}
     $st.=fread($fp,$r);
     @fclose($fp);

     $st=substr($st,5);
     $address=SubStr($st,0,StrPos($st,chr(0)));
     $address=str_replace(chr(0),"|",$address);
     $st=SubStr($st,StrPos($st,chr(0))+1);
     $name=SubStr($st,0,StrPos($st,chr(0)));
     $st=SubStr($st,StrPos($st,chr(0))+1);
     $map=SubStr($st,0,StrPos($st,chr(0)));
     $st=SubStr($st,StrPos($st,chr(0))+1);
     $st=SubStr($st,StrPos($st,chr(0))+1);
     $st=SubStr($st,StrPos($st,chr(0))+1);
     $current=ord(SubStr($st,0,1));
     $max=ord(SubStr($st,1,1));

     if ($map == "") return false;
     $result['map'] = $map;
     $result['name']= $name;
     $result['current'] = $current;
     $result['max'] = $max;


     return $result;

}

function ReadServersFromDB()
{
  $num_rows = mysql_num_rows($result);
  for($i = 0; $i < $num_rows; $i++)
  {
    $row = mysql_fetch_assoc($result);
    $servers[$i] = $row;
  }
  return $servers;
}

while ($row = mysql_fetch_array($result)) {

$id = $row['id'];
$ip = $row['ip'];
$port = $row['port'];


По этим $IP:$PORT должно подставляться в первую функцию и показывать есче $name $map $current/$max
Но не показует *(

Спустя 23 минуты, 9 секунд (10.06.2008 - 11:41) n1tr0k1ll3r написал(а):
Цитата(uMnepaTop @ 10.6.2008, 12:17) [snapback]40393[/snapback]
По этим $IP:$PORT должно подставляться в первую функцию и показывать есче $name $map $current/$max
Но не показует *(

Для чего нужно:
Код
while ($row = mysql_fetch_array($result)) {

$id = $row['id'];
$ip = $row['ip'];
$port = $row['port'];

???
И где вызовы этих функций?

Спустя 1 минута, 26 секунд (10.06.2008 - 11:42) uMnepaTop написал(а):
while нужен, чтобы читало все строки из бд)

Спустя 11 минут, 6 секунд (10.06.2008 - 11:53) n1tr0k1ll3r написал(а):
Цитата(uMnepaTop @ 10.6.2008, 12:42) [snapback]40395[/snapback]
while нужен, чтобы читало все строки из бд)

Может ты тогда в курсе для чего мой код:
Код
  for($i = 0; $i < $num_rows; $i++)
  {
    $row = mysql_fetch_assoc($result);
    $servers[$i] = $row;
  }

?

Спустя 3 часа, 9 минут, 41 секунда (10.06.2008 - 15:03) uMnepaTop написал(а):
Проблема решена.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.