Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

For i ponavlja iste server ( isto se desava i sa foreach )

[es] :: PHP :: For i ponavlja iste server ( isto se desava i sa foreach )

[ Pregleda: 2038 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

styl3r
Nikola Maksimovic
Banja Luka

Član broj: 320439
Poruke: 13
79.143.169.*



Profil

icon For i ponavlja iste server ( isto se desava i sa foreach )13.01.2014. u 18:35 - pre 124 meseci
I pozdrav ljudi,
Radim game cron da svakih 5 minuta pokrene fajl i uzme podatke sa svih servera koji su dodani... E sada ja uzmem ip adrese ubacim ih u array znaci to bude ovako:

Code:

$array = Array ( [0] => ip, [1] => ip.... );


E sada ja izbrojim koliko ima servera ( dodani su pod string $cssserverscountis ) i postavim provjeru:

Code:

for($i = 0; $i < $cssserverscountis; $i++) {
           $serverexplodee = explode(":", $array[$i]);

    $serverIP = $serverexplodee[0];
    $serverPort = $serverexplodee[1];

        define( 'SQ_SERVER_ADDR', $serverIP );
        define( 'SQ_SERVER_PORT', $serverPort );
        define( 'SQ_TIMEOUT',     1 );
        define( 'SQ_ENGINE',      SourceQuery :: SOURCE );

        $Timer = MicroTime( true );

        $Query = new SourceQuery( );
        
        $Info    = Array( );
        $Rules   = Array( );
        $Players = Array( );
        
        try
        {
            $Query->Connect( SQ_SERVER_ADDR, SQ_SERVER_PORT, SQ_TIMEOUT, SQ_ENGINE );
            
            $Info    = $Query->GetInfo( );
            $Players = $Query->GetPlayers( );
            $Rules   = $Query->GetRules( );
        }
        catch( Exception $e )
        {

            // - ako je offline uzimace podatke koji su zabiljezeni kada je bio online ( i ako je off vise od 15 dana ukinuce se  to trebam dodati ali prvo ovo uraditi)

            $ipserveracj = $ipservera;
            $servernamecj = $servername;
            $servermodcj = $servermod;
            $playerscj = $players;
            $maxplayerscj = $maxplayers;
            $botscj = $bots;
            $mapcj = $map;
            $infoplayerscj = "";
            $arraycj = $infoplayerscj;
        }

        $Query->Disconnect( );
        
        $Timer = Number_Format( MicroTime( true ) - $Timer, 4, '.', '' );

        if($Info["ModDir"] != 'cstrike'){

            // - Ako bude bud neki pa ucita neki drugi server koji nije cs:s

            $ipserveracj = $ipservera;
            $servernamecj = $servername;
            $servermodcj = $servermod;
            $playerscj = $players;
            $maxplayerscj = $maxplayers;
            $botscj = $bots;
            $mapcj = $map;
            $infoplayerscj = "";
            $arraycj = $infoplayerscj;

        }else{

            // - ako je sve u redu onda uzme podatke sa servera

            $ipserveracj = $ipservera;
            $servernamecj = mysql_real_escape_string(htmlentities($Info["HostName"]));
            $servermodcj = $servermod;
            $playerscj = $Info["Players"];
            $maxplayerscj = $Info["MaxPlayers"];
            $botscj = $Info["Bots"];
            $mapcj = $Info["Map"];
            $infoplayerscj = mysql_real_escape_string(json_encode($Players));
            $arraycj = $infoplayerscj;

        }

        echo $ipserveracj . "<br />";
        echo $servernamecj . "<br />";
        echo $servermodcj . "<br />";
        echo $playerscj . "<br />";
        echo $maxplayerscj . "<br />";
        echo $botscj . "<br />";
        echo $mapcj . "<br />";
        print_r($arraycj);
}


E i sada umjesto da foreach ide redom i uzme svaki ip on postavi uvijek isti server i sada npr ako je trebalo da uzme podatke sa 8 istih servera on ce postaviti 8 puta isti server i ne razumijem u cemu je greska.... Evo puni kod:

Code:

<?php

mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db("spg") or die(mysql_error());

$cssserverscount = mysql_query("SELECT COUNT(id) AS numbers FROM igrice WHERE game_id = '2'") or die(mysql_error());
$cssserversrows = mysql_fetch_assoc($cssserverscount);
$cssserverscountis = $cssserversrows['numbers'];

$cssservers = mysql_query("SELECT * FROM igrice WHERE game_id = '2'") or die(mysql_error());
while($servers = mysql_fetch_assoc($cssservers)){
    $ipservera[] = $servers['ip'];
    $servermod = $servers['servermod'];
    $servername = $servers['imeservera'];
    $maxplayers = $servers['maxplayers'];
    $bots = "0";
    $players = "0";
    $map = $servers['servermap'];

}

$array = $ipservera;

for($i = 0; $i < $cssserverscountis; $i++) {

    $serverexplodee = explode(":", $array[$i]);

    $serverIP = $serverexplodee[0];
    $serverPort = $serverexplodee[1];

        define( 'SQ_SERVER_ADDR', $serverIP );
        define( 'SQ_SERVER_PORT', $serverPort );
        define( 'SQ_TIMEOUT',     1 );
        define( 'SQ_ENGINE',      SourceQuery :: SOURCE );

        $Timer = MicroTime( true );

        $Query = new SourceQuery( );
        
        $Info    = Array( );
        $Rules   = Array( );
        $Players = Array( );
        
        try
        {
            $Query->Connect( SQ_SERVER_ADDR, SQ_SERVER_PORT, SQ_TIMEOUT, SQ_ENGINE );
            
            $Info    = $Query->GetInfo( );
            $Players = $Query->GetPlayers( );
            $Rules   = $Query->GetRules( );
        }
        catch( Exception $e )
        {

            // - ako je offline uzimace podatke koji su zabiljezeni kada je bio online ( i ako je off vise od 15 dana ukinuce se  to trebam dodati ali prvo ovo uraditi)

            $ipserveracj = $ipservera;
            $servernamecj = $servername;
            $servermodcj = $servermod;
            $playerscj = $players;
            $maxplayerscj = $maxplayers;
            $botscj = $bots;
            $mapcj = $map;
            $infoplayerscj = "";
            $arraycj = $infoplayerscj;
        }

        $Query->Disconnect( );
        
        $Timer = Number_Format( MicroTime( true ) - $Timer, 4, '.', '' );

        if($Info["ModDir"] != 'cstrike'){

            // - Ako bude bud neki pa ucita neki drugi server koji nije cs:s

            $ipserveracj = $ipservera;
            $servernamecj = $servername;
            $servermodcj = $servermod;
            $playerscj = $players;
            $maxplayerscj = $maxplayers;
            $botscj = $bots;
            $mapcj = $map;
            $infoplayerscj = "";
            $arraycj = $infoplayerscj;

        }else{

            // - ako je sve u redu onda uzme podatke sa servera

            $ipserveracj = $ipservera;
            $servernamecj = mysql_real_escape_string(htmlentities($Info["HostName"]));
            $servermodcj = $servermod;
            $playerscj = $Info["Players"];
            $maxplayerscj = $Info["MaxPlayers"];
            $botscj = $Info["Bots"];
            $mapcj = $Info["Map"];
            $infoplayerscj = mysql_real_escape_string(json_encode($Players));
            $arraycj = $infoplayerscj;

        }

        echo $ipserveracj . "<br />";
        echo $servernamecj . "<br />";
        echo $servermodcj . "<br />";
        echo $playerscj . "<br />";
        echo $maxplayerscj . "<br />";
        echo $botscj . "<br />";
        echo $mapcj . "<br />";
        print_r($arraycj);

}

?>


Hvala puno svakome ko pomogne.



/
 
Odgovor na temu

Tpojka
Ratio, Logic

Član broj: 60114
Poruke: 209

ICQ: 491318095


+33 Profil

icon Re: For i ponavlja iste server ( isto se desava i sa foreach )13.01.2014. u 20:41 - pre 124 meseci
Nema sanse da foreach() ne radi, dobro postavljena.
Dakle ako imas vec niz, trebao bi foreach postaviti kao vanjsku petlju. Tj petlju koja ce obuhvatiti sve elemente niza.
A potom u unutrasnjoj petlji radi funkcije sa stringovima elementa i ostalim funkcijama bitnim za obradu pojedinacnog elementa niza
Code (php):

$ips=('a', 'b', 'c', 'd');
if (is_array($ips))
{
  foreach ($ips as $k => $v)
  {
    // do what you need
    // output too
  }
}
 

-A Tpojke su Đuro - šta?
-Osnovne jedinice diverzantskih grupa!
 
Odgovor na temu

styl3r
Nikola Maksimovic
Banja Luka

Član broj: 320439
Poruke: 13
79.143.169.*



Profil

icon Re: For i ponavlja iste server ( isto se desava i sa foreach )14.01.2014. u 07:56 - pre 124 meseci
Sve ja to znam, evo vidis kod i sa foreach:

Code:

<?php

$cssservers = mysql_query("SELECT * FROM igrice WHERE game_id = '2'") or die(mysql_error());
while($servers = mysql_fetch_assoc($cssservers)){
    $ipservera[] = $servers['ip'];
    $servermod = $servers['servermod'];
    $servername = $servers['imeservera'];
    $maxplayers = $servers['maxplayers'];
    $bots = "0";
    $players = "0";
    $map = $servers['servermap'];

}

$array = $ipservera;

if(is_array($array)){
    foreach ($array as $id => $servers) {
        $serverexplodee = explode(":", $servers);

        $serverIP = $serverexplodee[0];
        $serverPort = $serverexplodee[1];

            define( 'SQ_SERVER_ADDR', $serverIP );
            define( 'SQ_SERVER_PORT', $serverPort );
            define( 'SQ_TIMEOUT',     1 );
            define( 'SQ_ENGINE',      SourceQuery :: SOURCE );

            $Timer = MicroTime( true );

            $Query = new SourceQuery( );
            
            $Info    = Array( );
            $Rules   = Array( );
            $Players = Array( );
            
            try
            {
                $Query->Connect( SQ_SERVER_ADDR, SQ_SERVER_PORT, SQ_TIMEOUT, SQ_ENGINE );
                
                $Info    = $Query->GetInfo( );
                $Players = $Query->GetPlayers( );
                $Rules   = $Query->GetRules( );
            }
            catch( Exception $e )
            {

                // - ako je offline uzimace podatke koji su zabiljezeni kada je bio online ( i ako je off vise od 15 dana ukinuce se  to trebam dodati ali prvo ovo uraditi)

                $ipserveracj = $ipservera;
                $servernamecj = $servername;
                $servermodcj = $servermod;
                $playerscj = $players;
                $maxplayerscj = $maxplayers;
                $botscj = $bots;
                $mapcj = $map;
                $infoplayerscj = "";
                $arraycj = $infoplayerscj;
            }

            $Query->Disconnect( );
            
            $Timer = Number_Format( MicroTime( true ) - $Timer, 4, '.', '' );

            if($Info["ModDir"] != 'cstrike'){

                // - Ako bude nesto pa ucita neki drugi server koji nije cs:s

                $ipserveracj = $ipservera;
                $servernamecj = $servername;
                $servermodcj = $servermod;
                $playerscj = $players;
                $maxplayerscj = $maxplayers;
                $botscj = $bots;
                $mapcj = $map;
                $infoplayerscj = "";
                $arraycj = $infoplayerscj;

            }else{

                // - ako je sve u redu onda uzme podatke sa servera

                $ipserveracj = $ipservera;
                $servernamecj = mysql_real_escape_string(htmlentities($Info["HostName"]));
                $servermodcj = $servermod;
                $playerscj = $Info["Players"];
                $maxplayerscj = $Info["MaxPlayers"];
                $botscj = $Info["Bots"];
                $mapcj = $Info["Map"];
                $infoplayerscj = mysql_real_escape_string(json_encode($Players));
                $arraycj = $infoplayerscj;

            }

            echo $ipserveracj . "<br />";
            echo $servernamecj . "<br />";
            echo $servermodcj . "<br />";
            echo $playerscj . "<br />";
            echo $maxplayerscj . "<br />";
            echo $botscj . "<br />";
            echo $mapcj . "<br />";
            print_r($arraycj);

        //$ubacipodatkenove = mysql_query("UPDATE igrice SET ip='$value', imeservera='$servernamecj', servermod='$servermodcj', igraci='$playerscj', maxplayers='$maxplayerscj', bots='$botscj', servermap='$mapcj', infoplayers='$arraycj' WHERE game_id='2' AND ip='$value'") or die(mysql_error());

    }
}


?>


Da ti kazem ne znam zasto nece, ovo bi trebalo raditi ali nesto uvek ponovi iste servere... De mi na pm posalji tvoj fb da te dodam pa da vidimo preko teamviuwera to sve...
/
 
Odgovor na temu

357_97

Član broj: 53056
Poruke: 104
*.dynamic.sbb.rs.



+5 Profil

icon Re: For i ponavlja iste server ( isto se desava i sa foreach )14.01.2014. u 09:12 - pre 124 meseci
Nemožeš da promeniš vrednost konstante što ti upravo radiš u petlji!
Code:
error_reporting(E_ALL);
ini_set('display_errors', '1');

define('SOMETHING', 'first');
echo SOMETHING;
define('SOMETHING', 'second');
echo SOMETHING;

# first
# Notice: Constant SOMETHING already defined in file on line XYZ
# first
 
Odgovor na temu

styl3r
Nikola Maksimovic
Banja Luka

Član broj: 320439
Poruke: 13
79.143.169.*



Profil

icon Re: For i ponavlja iste server ( isto se desava i sa foreach )14.01.2014. u 09:23 - pre 124 meseci
@357_97

Pa kako onda da rijesim ja moram da uzmem podatke sa svih servera... Sta da uradim
/
 
Odgovor na temu

357_97

Član broj: 53056
Poruke: 104
*.dynamic.sbb.rs.



+5 Profil

icon Re: For i ponavlja iste server ( isto se desava i sa foreach )14.01.2014. u 09:45 - pre 124 meseci
Koristi običnu promenljivu umesto konstanti (define).
Code:
$sq_server_addr='something'
 
Odgovor na temu

styl3r
Nikola Maksimovic
Banja Luka

Član broj: 320439
Poruke: 13
79.143.169.*



Profil

icon Re: For i ponavlja iste server ( isto se desava i sa foreach )14.01.2014. u 09:55 - pre 124 meseci
E da je to sada tako lako uraditi... Ovo je citav query za uzimanje podataka nije to samo ovo a ove define pokrecu tamo sve one funkcije i ako promjenim ja na obicne promjenjive onda nece raditi to... Poslao sam ti mail de odgovori...
/
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.ptt.rs.



+218 Profil

icon Re: For i ponavlja iste server ( isto se desava i sa foreach )14.01.2014. u 10:37 - pre 124 meseci
Moras da napravis da radi sa obicnim promenljivima. Menjaj db klasu ili nesto drugo. Ne valja pristup problemu.
Define sluzi za definisanje konstanti a konstanta se zove konstanta jer ne moze da se menja.
Ako bas treba da radi sa konstantama jer nemas prava da radis na drugim fajlovima onda mozes da redefinises konstante ako imas na serveru instaliran runkit.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

styl3r
Nikola Maksimovic
Banja Luka

Član broj: 320439
Poruke: 13
79.143.169.*



Profil

icon Re: For i ponavlja iste server ( isto se desava i sa foreach )14.01.2014. u 12:17 - pre 124 meseci
Gotov, sredjeno sve umjesto konstanti stavio sam varijable malo sam morao mjenjati i ostale fajlove...

@357_97
Tvoj komentar mi je pomogao najvise sto si mi rekao da se konstante ne mogu ponavljati HVALA PUNO!!!

Hvala i ostalima na komentarima

Moze LOCK!
/
 
Odgovor na temu

[es] :: PHP :: For i ponavlja iste server ( isto se desava i sa foreach )

[ Pregleda: 2038 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.