Super, tak ten link pridavej do kazdeho tematu aspon jednou, k tvym poznamkam o zastaralem mysql.
A take by mozna bylo dobre hodit nejaky link na testy s microtime na obe reseni s mysql a mysqli nebo pdo, ktere sezere vic casu :) Protoze, kdyz delas neco vetsiho, cas je dulezity a misto php se stejne prechazi na cecko :)
Příspěvky odeslané z IP adresy 2001:718:2601:1f7:f4d4:d0...–
jo, ten vsprintf samozrejme jinak, tam jsem chtel array a taky zapis v tom $q bude trochu jiny, viz manual
http://php.net/…vsprintf.php
Sem to zapomnel doupravit... :)
No, on to Kit rika dost neomalene vsem :) Ale v podstate s nim souhlasim. Jen mi jeste neukazal verzi, ve ktere to nefunguje :) Jen porad o ni sni. Takovy pristup meli i uzivatele na jakpsatweb. Ze bude php6 a kdesi cosi a nakonec to super vylepseni skoncilo celkem rozumne jako php 5.neco.
Ja rikam, az to bude, pak ma smysl nalehat na upravy kodu.
Nicmene si pamatuji doby php4 a spoustu prikladu a odpovedi ve forech je na netu stale dost. Problem je, ze aby fungoval kod php4 pri default nastaveni v php5, tak je treba casto provest upravu kodu a pak jsou toho plna fora stejneho dotazu, proc mi to nefunguje, kdyz autor clanku popisuje, jak mu to krasne funguje. Takze by mozna bylo lepsi se vyhybat se zastaralemu kodu.
Nayram - No, neni mi to jasne, co kde mas ulozene. Mozna, kdybys udelal export databaze kazde te tabulky a vypsal, co potrebujes z kazde ziskat. Prijde mi, ze to mas cele nejak spatne.
<?php
$q1 = "
SELECT
army_power AS attack,
army_def AS defense,
army_power AS health
FROM
game_army_units_attacking
WHERE
army_attack = '%0'
AND army_enabled = 1
";
$query = vsprintf($q1, $_GET['id'] * 1);
$result = mysql_query($query);
echo '<pre>';
while (($unitinfo = mysql_fetch_assoc($result)) != NULL)
{
print_r($unitinfo);
}
?>
Ten kod ti preci vytahne to same, co sem pracne skladas z kousicku
$players_attacker = array(array('attack' => $unitsinfo['army_power'], 'defense' => $unitsinfo['army_def'], 'health' => $unitsinfo['army_power']));
Mozna by bylo dobre, kdyby sis to vypisoval, jestli je v kazdem poli presne to, co tam ma byt. Pouzivas phpmyadmin? Uloz si dotaz do promenne, vypis na obrazovku a zkopiruj do sql okenka v phpmyadminovu. on ti ukaze tabulku s vysledky dotazu
$query = "SELECT...";
echo $query;
Treba mi neni jasne, proc delas
$unit = mysql_fetch_assoc($query_unit_info); kdyz $unit uz nikde dal nepouzivas
SELECT
a.id_hrac1,
a.id_hrac2,
a.id_jednotkatyp,
a.pocet,
b.army_power AS attack,
b.army_def AS defense,
b.army_power AS health
FROM
tbl_utoky a
LEFT JOIN tbl_info b ON b.id_typ=a.id_jednotkatyp
-- pripoj info o jednotce
WHERE
a.id_hrac1 IN (1,5)
AND a.id_hrac2 IN (1,5)
-- cili utoci hrac1 proti hrac2 a
-- opacne, pobiji se jen utocici jednotky,
-- jednotky neposlane do utoku se ignoruji
ORDER BY
a.id_jednotkatyp
To by ti melo dat tabulku
id_hrac1, id_hrac2, id_jednotkatyp, pocet, attack, defense, health
1, 5, 1, 324, 5, 0, 2
5, 1, 1, 122, 2, 4, 1
1, 5, 2, 53, 3, 1, 2
5, 1, 2, 22, 4, 3, 1
1, 5, 3, 4, 3, 2, 2
5, 1, 3, 2, 4, 3, 1
1, 5, 4, 76, 2, 0, 2
5, 1, 4, 34, 1, 1, 1
Cyklem uz si to z te tabulky dokazes vycucat. Ja bych sel do toho jinak. udelam si pri kazdem cyklu pole se seznamem nenulovych typu a pro hrace 1, random udelam nad timto polem. Ale mozna to nebude tak rychle jako s unset.
typy = array()
for (i=0;i<4;i++) {if (data['typ'][i]>0) typy[] = i;} //typy = array(5,3,4) // vyber nenulove pocty z kazdeho typu
li = count(typy);
if li==0 break; // prerus cyklus
i = rnd(li)
i = typy[i]
info = data['typ'][i]]
data['typ'][i]['pocet']--