Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:1f7:f4d4:d0...–

peter
PHP › Problém s array a while loopom
13. 2. 2015   #199216

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 :)

peter
PHP › Problém s array a while loopom
13. 2. 2015   #199204

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... :)

peter
PHP › Problém s array a while loopom
13. 2. 2015   #199203

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']--

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý