|
|
|
| Единственная проблема в том, что выводятся к Radiant b Dire по 1 человеку, хотя в игре 10.
echo "<font color='#fff'>".$ssr['playername']." - " .$ssr['playerteam']."</font><br /> ";
echo "<font color='#fff'>".$ssd['playername']." - " .$ssd['playerteam']."</font><br /> ";
|
Сам код:
<?php
include ('db.php');
$dbconnect = mysql_connect ($dbhost, $dbusername, $dbpass);
if (!$dbconnect) { echo ("Не могу подключиться к серверу базы данных!"); }
if(@mysql_select_db($dbname)) { /*echo "Подключение к базе $dbname установлено!"; */ }
else die ("Не могу подключиться к базе данных !");
$radiant = "Radiant";
$dire = "Dire";
$rowr = ("SELECT DISTINCT gameport FROM anotherdb WHERE gameport" );
$rs = mysql_query($rowr) or die(mysql_error());
$ss = mysql_fetch_array($rs);
$server = '83.69.139.185'; // ᥰ汍
// ճ鿠񥰢池 1
function GetServerInfo($server,$port) {
$fp = @fsockopen("udp://".$server, $port);
if (!$fp) return false;
@fwrite($fp,"\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00".chr(10));
$start=time();
socket_set_timeout($fp,1);
$st=fread($fp,1);
$r=socket_get_status($fp);
$result['status'] = $r["timed_out"];
$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))+3);
$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;
}
// Radiant
$rowrr = ("SELECT DISTINCT playername,playerteam FROM anotherdb WHERE playerteam='Radiant'" );
$rsr = mysql_query($rowrr) or die(mysql_error());
$ssr = mysql_fetch_array($rsr);
// Dire
$rowrd = ("SELECT DISTINCT playername,playerteam FROM anotherdb WHERE playerteam='Dire' " );
$rsd = mysql_query($rowrd) or die(mysql_error());
$ssd = mysql_fetch_array($rsd);
do {
$serv = GetServerInfo($server,$ss['gameport']); // ҥ𢥰 1
echo '<b> <span class="w1">Port '.$ss['gameport'].'</span></b>';
if ($serv AND $ssd['playername'] AND $ssr['playername'] ) {
echo '
<span class="t1"><h1>All Pick:</h1> game.x64.uz:'.$ss['gameport'].'
</span>
<span class="t1 "><h1>ɣ𮪮⺼/h1>'.$serv['current'].' / '.$serv['max'].'
</span>
<span class="t1 "><h1>Ҳᳳ񺼯h1><font color="#00ff2a ";>On-line</font>
</span>';
echo "<font color='#fff'>".$ssr['playername']." - " .$ssr['playerteam']."</font><br /> ";
echo "<font color='#fff'>".$ssd['playername']." - " .$ssd['playerteam']."</font><br /> ";
} else {
echo '<span class="tt1 "><h1>Ҳᳳ񺼯h1> <font color="red";>Off-line</font></span>';
}
echo '<div style="clear:both;"></div>';
}
while ($ss = mysql_fetch_array($rs) AND $ssd = mysql_fetch_array($rsd) AND $ssr = mysql_fetch_array($rsr));
|
Все работает правильно кроме вывода человек, как выше писал они выводятся по 1, а нужно всех т.е к примеру сейчас 3 порта запущено
выводится:
сервер 1
10игроков
online
Кто в игре:
rustamm93 - Radiant
Zikoi5 - Dire
Ники: "вот в них и загвоздка" за ту и ту команду выводятся по 1-у и должно быть по 5 на 1-ом сервере.
На вид вроде мелочи, но помогите разобраться.
помогите если можете. | |
|
|
|
|
|
|
|
для: EvilScorpion
(03.01.2015 в 19:53)
| | 1. Вместо do ... while надо использовать while {}
2. Так вы и выводите по одному результату здесь:
<?php
$rowrr = ("SELECT DISTINCT playername,playerteam FROM anotherdb WHERE playerteam='Radiant'" );
$rsr = mysql_query($rowrr) or die(mysql_error());
$ssr = mysql_fetch_array($rsr);
// Dire
$rowrd = ("SELECT DISTINCT playername,playerteam FROM anotherdb WHERE playerteam='Dire' " );
$rsd = mysql_query($rowrd) or die(mysql_error());
$ssd = mysql_fetch_array($rsd);
?>
|
В $ssr - одна строка из базы, в $ssd - то же самое. | |
|
|
|
|
|
|
|
для: Лена
(03.01.2015 в 19:57)
| | изменилось только 1, на данный момент 4 порта в действии, а в while цикле показывает 3 вместо 4. в do while нормально отображается. Мне здесь нужно ток сделать, что бы правильно выводило количество людей на сервере т.е их Имена. | |
|
|
|
|
|
|
|
для: Лена
(03.01.2015 в 19:57)
| | Кстати есть еще 1 что я сделал, но тут понимаете просто вывод идет из базы в 2 типа, т.е в радиант и дайер
// Radiant
$rowr = ("SELECT DISTINCT playername,gameport FROM anotherdb WHERE playerteam='Radiant'" );
$rs = mysql_query($rowr) or die(mysql_error());
$ss = mysql_fetch_array($rs);
do
{
echo "".$ss['playername']." - " .$ss['gameport']."<br /> ";
}
while($ss = mysql_fetch_array($rs));
echo "<br />";
// Dire
$rowrd = ("SELECT DISTINCT playername,gameport FROM anotherdb WHERE playerteam='Dire'" );
$rsd = mysql_query($rowrd) or die(mysql_error());
$ssd = mysql_fetch_array($rsd);
do
{
echo "".$ssd['playername']." - " .$ssd['gameport']."<br /> ";
}
while($ssd = mysql_fetch_array($rsd));
|
но у меня не получилось объединить. Этот код в принципи не имеет значения. Мне нужно реализовать первый пост код. | |
|
|
|
|
|
|
|
для: EvilScorpion
(03.01.2015 в 20:06)
| | А зачем два раздельных запроса? | |
|
|
|
|
|
|
|
для: confirm
(03.01.2015 в 21:00)
| | Затем что бы кто ни будь спросил. По теме.... | |
|
|
|
|
|
|
|
для: EvilScorpion
(03.01.2015 в 21:09)
| | Это как раз и есть вопрос по теме. А будете пальцы гнуть, будете ходить пешком... | |
|
|
|
|
|
|
|
для: EvilScorpion
(03.01.2015 в 21:09)
| | Вот что я вам скажу, юноша:
1) do ... while - ну пора бы уже забыть о ней для данного контекста, это не смертельно конечно, но и необходимости в ней в данном случае совсем нет.
2) mysql_fetch_array() - это вообще непростительное расходование ресурсов, если вам нужен только ассоциативный набор данных. Возможно вы даже и не подозреваете о том, что данная функция возвращает два набора одних и тех же данных - а) ассоциативный массив, б) индексный массив. Эта функция бывает полезна когда в результате запроса могут "исчезнуть" из результата ключи ассоциации, так как поля в запросе имеют одинаковые имена, в тоже время индексные значение этих полей будут присутствовать все. Вы этого не используете, а значит впустую тратите и ресурсы, и время на обработку запроса.
3) из вашего кода я ничего не понял, что там, зачем и для чего. Но я вижу, что два запроса - это запросы к одной и той же же таблице. Возникает вопрос - зачем? Это все можно получить и одним запросом, вопрос только в том, что это за данные, связаны ли они чем либо между собой или нужно получить два списка (почему и два запроса)?
Если вам лень отвечать на вопросы вам задаваемые или вы считаете это оскорблением, да за ради бога, я могу и заткнуться. Если же хотите исправить свои "костыли в коде", то уж будьте ласка, отвечайте на вопросы вам заданные, глядишь и решение кто-то предложит не аляпистое.
Отвыкните от привычки трактовать вопросы к вам как пику в бок, это лишь вопросы уточняющие и в них нет сарказма, а то тут развелось "обидчивых по собственному желанию" пруд пруди. | |
|
|
|
|
|
|
|
для: confirm
(03.01.2015 в 22:24)
| | Таблица генерируется автоматически. Теперь ясно? | |
|
|
|
|
|
|
|
для: EvilScorpion
(04.01.2015 в 00:50)
| | Даже и не знаешь как комментировать такие ответы. | |
|
|
|
|
|
|
|
для: confirm
(04.01.2015 в 01:00)
| | вот этот самый евгивановский do while - для меня маркер.
Корм будет не в коня. | |
|
|
|
|
|
|
|
для: Trianon
(04.01.2015 в 02:57)
| | Да слов уже нет ни каких, приходят с вопросами, а с гонором, считают себя гениями, если я дурак не могу понять, что же это означает, и не дай боже спросить - посягательство на неприкосновенность, не меньше. | |
|
|
|
|
|
|
|
для: confirm
(04.01.2015 в 05:24)
| | Почему надо сразу помидорами закидывать ? или задавать такие вопросы "почему ты сделал так?" так можно было бы ответить нормально, к примеру "сделай лучше так" из всех ваших слов помощи я так и не увидел. | |
|
|
|
|
|
|
|
для: EvilScorpion
(04.01.2015 в 09:40)
| | Потому, что на форуме взрослые люди и нам некогда возиться с детскими истериками, комплексами и максимализмом. | |
|
|
|
|
|
|
|
для: EvilScorpion
(04.01.2015 в 09:40)
| | А вы думаете, что "Таблица генерируется автоматически. Теперь ясно?" максимально объемное разъяснение?
Еще раз:
а) у вас два запроса к одной и той же таблице, то что таблица генерируется автоматически, или это временно создаваемая таблица, совсем не означает, что в ней нельзя делать вложенных запросов, объединять запросы и многое другое чего позволительно в рамках MySQL.
б) мне playerteam='Radiant' и playerteam='Dire' ни о чем не говорит, я лишь знаю, что это параметры запроса. А вот почему каждый в свои "двери" лезет, я не понимаю, потому как знаю, что они спокойно бы вошли в одну дверь. Единственное оправдание такого поступка, это второй запрос спустя время, но этого то ведь нет.
А чтобы сказать "сделай лучше так", хорошо бы кроме кода знать в общих чертах суть задачи им описываемой. Может действительно зря придираюсь, так как в этом есть нечто такое, чего не видно из представленного. | |
|
|
|
|
|
|
|
для: confirm
(04.01.2015 в 10:08)
| | 1й запрос в эту таблицу идет к значению Radiant 2й Dire
пошаманил чутка, сделал так:
echo "<div class='usertable'><p>Radiant</p>";
while($ssr = mysql_fetch_array($rsr) ) {
echo "<font color='green'>".$ssr['playername']." </font><br /> ";
}
echo "</div>";
echo "<div class='usertable'><p>Dire</p>";
while($ssd = mysql_fetch_array($rsd) ) {
echo "<font color='red'>".$ssd['playername']." </font><br /> ";
}
echo "</div>";
|
странно, теперь выводится не по 1, а по 4. Хотя в таблицы 10 человек | |
|
|
|
|
|
|
|
для: EvilScorpion
(04.01.2015 в 10:18)
| | Разобраться убрал ранее $ssr = mysql_fetch_array($rsr); $ssd = mysql_fetch_array($rsd); | |
|
|
|
|
|
|
|
для: EvilScorpion
(04.01.2015 в 10:18)
| | >1й запрос в эту таблицу идет к значению Radiant 2й Dire
И чем это обусловлено? Динамическим созданием таблицы? Это не довод. Что надо - получить на текущий момент состояние (?), параметры (?), ххххх (?) этих двух персонажей? Они как-то связаны или каждый из них сам по себе? | |
|
|
|
|
|
|
|
для: confirm
(04.01.2015 в 13:23)
| | Все уже... спасибо... Реализовал через while и запросы местами поменял. | |
|
|
|