Цикъла на се завърта

Да видях новата грешка
Замени това

PHP:
$s = mysql_query("SELECT * FROM `servers` WHERE `game`='$ga' order by da");

с това:
PHP:
$s = mysql_query("SELECT * FROM `servers` WHERE `game` = '$ga' ORDER by `da`");

Може да замениш и това
PHP:
$sql= mysql_query("INSERT INTO server(karta,timer,timerb,url,sid,play,maxplay,status,ip,port,imeto,views,mail,dop,game,hash,da,bold) VALUES ( '$karta','$timer','$timerb','$url','$sida', '$play', '$maxplay','$status','$ip','$port','$imeto','$views','$mail','$dop','$game','$hash','$dada','$bold')");

с това:
PHP:
$sql = mysql_query("INSERT INTO `server` (`karta`,`timer`,`timerb`,`url`,`sid`,`play`,`maxplay`,`status`,`ip`,`port`,`imeto`,`views`,`mail`,`dop`,`game`,`hash`,`da`,`bold`) VALUES ('$karta','$timer','$timerb','$url','$sida', '$play', '$maxplay','$status','$ip','$port','$imeto','$views','$mail','$dop','$game','$hash','$dada','$bold')") or die(mysql_error());

Замяна на това
PHP:
		mysql_query('UPDATE `server` SET karta="'.$karta.'",timer="'.$timer.'",timerb="'.$timerb.'",type="'.$type.'",imeto="'.$imeto.'",port="'.$port.'",dop="'.$dop.'",url="'.$url.'", status="'.$status.'",ip="'.$ip.'" ,play="'.$play.'",maxplay="'.$maxplay.'",da="'.$dada.'" ,bold="'.$bold.'" WHERE sid="'.$sida.'"');

с това:
PHP:
		mysql_query("UPDATE `server` SET `karta`='$karta', `timer`='$timer', `timerb`='$timerb', `type`='$type', `imeto`='$imeto', `port`='$port', `dop`='$dop', `url`='$url', `status`='$status', `ip`='$ip', `play`='$play', `maxplay`='$maxplay', `da`='$dada', `bold`='$bold' WHERE `sid`='$sida'") or die(mysql_error());
 
връща това
PHP:
resource(4) of type (mysql result)
TryMe каза:
Няма логика. Я дебъгни този ред: $s = mysql_query("SELECT * FROM `serverS` WHERE `game`='$ga' order by da");

PHP:
var_dump($s);

И кажи какво ти връща, защото нещо не виждам да ти връща ресурс.


П.П. Ако пишеш `serverS`, то го оправи на `servers`, защото има разлика между двете.
[/php]
 
Нормално е да ти връща това, аз ти дадох работещ код след това ти го сложи, след това пак върна стария който вади грешка.

Ето целият файл го замени с това:

PHP:
<?php

    include('connect.php');

 include('mcstats/stats.php');

$ga='mc';
$s = mysql_query("SELECT * FROM `servers` WHERE `game` = '$ga' ORDER by `da`") or die(mysql_error());
while($r = mysql_fetch_array($s))
{ 
$ip=$r['ip'];

$port=$r['port'];
 $sida= $r['sid'];
				 $timer= $r['timer'];
				 $timerb= $r['timerb'];
				$bold= $r['bold'];
				$dada= $r['da'];
                $imeto=$r['ime'];
                
                $mail=$r['mail'];
                $dop=$r['dop'];
                $views=$r['views'];
                $hash=$r['hash'];
                        $url=$r['url'];
               $game= $r['game'];
		$type= $r['type'];
	$karta= 'Minecraft';

   
			$s = new MCServerStatus($ip, $port);
			$status = ($s->online) ? 'green' : 'red';
			$play = ($s->online_players) ? $s->online_players : 0 ;
			$maxplay = ($s->max_players) ? $s->max_players : 0 ;
			$imeto=$s->motd;

	




  $select = mysql_query("SELECT * FROM `server` WHERE `sid`='$sida'"); 
$num = mysql_num_rows($select);
if ($num=='0') {


$sql = mysql_query("INSERT INTO `server` (`karta`,`timer`,`timerb`,`url`,`sid`,`play`,`maxplay`,`status`,`ip`,`port`,`imeto`,`views`,`mail`,`dop`,`game`,`hash`,`da`,`bold`) VALUES ('$karta','$timer','$timerb','$url','$sida', '$play', '$maxplay','$status','$ip','$port','$imeto','$views','$mail','$dop','$game','$hash','$dada','$bold')") or die(mysql_error());

          
		}
		
		else
		{
			
  mysql_query("UPDATE `server` SET `karta`='$karta', `timer`='$timer', `timerb`='$timerb', `type`='$type', `imeto`='$imeto', `port`='$port', `dop`='$dop', `url`='$url', `status`='$status', `ip`='$ip', `play`='$play', `maxplay`='$maxplay', `da`='$dada', `bold`='$bold' WHERE `sid`='$sida'") or die(mysql_error());
 
		}
		
		?>
		 <?=$play?>/ <?=$maxplay?>-  <?=$imeto?>;
		 <?
}
?>
 
proba каза:
Нормално е да ти връща това, аз ти дадох работещ код след това ти го сложи, след това пак върна стария който вади грешка.

Ето целият файл го замени с това:

PHP:
<?php

    include('connect.php');

 include('mcstats/stats.php');

$ga='mc';
$s = mysql_query("SELECT * FROM `servers` WHERE `game` = '$ga' ORDER by `da`") or die(mysql_error());
while($r = mysql_fetch_array($s))
{ 
$ip=$r['ip'];

$port=$r['port'];
 $sida= $r['sid'];
				 $timer= $r['timer'];
				 $timerb= $r['timerb'];
				$bold= $r['bold'];
				$dada= $r['da'];
                $imeto=$r['ime'];
                
                $mail=$r['mail'];
                $dop=$r['dop'];
                $views=$r['views'];
                $hash=$r['hash'];
                        $url=$r['url'];
               $game= $r['game'];
		$type= $r['type'];
	$karta= 'Minecraft';

   
			$s = new MCServerStatus($ip, $port);
			$status = ($s->online) ? 'green' : 'red';
			$play = ($s->online_players) ? $s->online_players : 0 ;
			$maxplay = ($s->max_players) ? $s->max_players : 0 ;
			$imeto=$s->motd;

	




  $select = mysql_query("SELECT * FROM `server` WHERE `sid`='$sida'"); 
$num = mysql_num_rows($select);
if ($num=='0') {


$sql = mysql_query("INSERT INTO `server` (`karta`,`timer`,`timerb`,`url`,`sid`,`play`,`maxplay`,`status`,`ip`,`port`,`imeto`,`views`,`mail`,`dop`,`game`,`hash`,`da`,`bold`) VALUES ('$karta','$timer','$timerb','$url','$sida', '$play', '$maxplay','$status','$ip','$port','$imeto','$views','$mail','$dop','$game','$hash','$dada','$bold')") or die(mysql_error());

          
		}
		
		else
		{
			
  mysql_query("UPDATE `server` SET `karta`='$karta', `timer`='$timer', `timerb`='$timerb', `type`='$type', `imeto`='$imeto', `port`='$port', `dop`='$dop', `url`='$url', `status`='$status', `ip`='$ip', `play`='$play', `maxplay`='$maxplay', `da`='$dada', `bold`='$bold' WHERE `sid`='$sida'") or die(mysql_error());
 
		}
		
		?>
		 <?=$play?>/ <?=$maxplay?>-  <?=$imeto?>;
		 <?
}
?>


Аз го накарах, защото одеве му изписваше, че не получава ресурс. Или той чете през редовете, или не знам. Нека пробва това, което си му дал.
 
Е да точно но той няма смисъл да дава var_dump на

SELECT * FROM `serverS` WHERE `game`='$ga' order by da

Защото със сигурност ще му върне грешка , но явно ние пишем прекалено бързо и момчето не успява да смогне с четенето на отговорите и с това какво да направи :D

EDIT:

Замени АБСОЛЮТНО ЦЕЛИЯТ КОД ОТ test.php С ТОЗИ КОЙТО ТИ ДАДОХ В ПРЕДНОТО СИ МНЕНИЕ.
Виждам че правиш някакви опити за промяна, изкарваше някакъв текст над грешката + resource(4) of type + не знам си какво още което само ми казва че не си заменил АБСОЛЮТНО ЦЕЛИЯТ КОД ОТ test.php
Направи го и след това кажи какъв е резултатът.

EDIT2:

Ето за това говоря:
2/ 125- ..::| Eh Aqui |::.. #01 Survival;

Не знам какво правиш но направи това което ти казах по-горе и би трябвало да се оправи.
 
Добавих твоя код и пак същата грешка изкарва но вече измислих друг вариант проблема освен от класа не виждам откъде другаде би идвал
 
Ами не знам но когато си изпълня заявката в phpMyAdmin или дори чрез php си я изпълня тя не ми връща никаква грешка, а само УСПЕШНО ИЗВАДЕНИ РЕЗУЛТАТИ ОТ БАЗАТА ДАННИ.

Ти какъв вариант си измислил ?
 
proba каза:
Ами не знам но когато си изпълня заявката в phpMyAdmin или дори чрез php си я изпълня тя не ми връща никаква грешка, а само УСПЕШНО ИЗВАДЕНИ РЕЗУЛТАТИ ОТ БАЗАТА ДАННИ.

Ти какъв вариант си измислил ?
ламерски :shock: вместо да обновявам всички сървъри на 1 път с всеки рефреш на страницата се обновява по един сървър с помоща на rand()
можеш да видиш ,че пак изкарва грешка http://game-stats.eu/test.php
промил съм само ORDER by rand()
 
uphero каза:
ламерски :shock: вместо да обновявам всички сървъри на 1 път с всеки рефреш на страницата се обновява по един сървър с помоща на rand()
можеш да видиш ,че пак изкарва грешка http://game-stats.eu/test.php
промил съм само ORDER by rand()

Защо просто не си напишеш един скрипт за ъпдейт на всички сървъри и с cronJob го "ъпдейтвай"/стартирай през 5 мин. например? :)

П.П. ако този вариант го има и е даден в темата.. просто не съм обърнал внимание - не съм чел мненията. Но прочетох последното. :)

Примерен скрипт;
PHP:
<?php
$qServers = mysql_query("SELECT * FROM `servers`;") or die(mysql_error()); //взимаме сървърите
if(mysql_num_rows($qServers) > 0) { //правим проверка дали има сървъри
	while($Row = mysql_fetch_object($qServers)) { //създаваме цикъл в който обработваме данните за ъпдейт
		$serv = serverInfo("".$Row->serv_ip.""); //взимаме данните на сървъра
		if($serv['status'] == 'off'){ //ако сървъра е офлайн, просто му задаваме нулеви стойности - няма играчи, не е онлайн
			mysql_query("UPDATE `servers` SET `status` = '0', `players` = '0', `maxplayers` = '0' WHERE `s_id`='".$Row['s_id']."';")) or die(mysql_error());
			continue;
		}
		mysql_query("UPDATE `servers` SET `name` = '".$serv['name']."', `players` = '".$serv['players']."', `maxplayers` = '".$serv['maxplayers']."', `status` = '1' WHERE `s_id`='".$Row['s_id']."';") or die(mysql_error());
		//тази заявка е за всички останали сървъри, които са онлайн. Правим промяна на играчите, името на сървъра и статуса на сървъра на онлайн.
	}
} else {
	die("Not found servers..");
}
?>

Важно: трябва само да си напишеш функция(която най-вероятно имаш), с която да взимаш данните на сървърите. Така дори ще ти зарежда по-бързо уеб сайта. Тъй като данните не ги чакаш да ги взимаш директно, а вече ги имаш в базата.

Дал съм ти прост пример. Успех!
 

Back
Горе