« 1 2
Autor Zpráva
G3n3sis19
Profil
Asi 30 ? Vždyť to je -15 až 15 pro souřadnici x a to stejné pro y, + 0 A to je podle mne mnohem víc

10 201 záznamů DB mám na mapu 50x50 + souřadnice 0

Vytahuješ tedy celou mapu nebo jen vesnice na té mapě a přímo políčka mapy (např prázdné pole, les, kamení atd) až potom?
1Pupik1989
Profil
vytahuji všechno kromě prázdných polí, ty jsou nastaveny jako 0. SQL dotaz proběhne jen jeden :) Při zobrazení celé mapy (100x100), my proběhne SQL dotaz zase jen jeden. Výstup jsou dva vnořené cykly a v tom se kontroluje (právě z toho pole co si vytvořím) jestli dané pole je plné, nebo mu má nechat prázdno.
G3n3sis19
Profil
aha. Takže vybereš něco jako

$mapa = mysql_query("SELECT * FROM map WHERE type != 0;"); //id,x,y,occupied,type,img
while($pole = $db->fetch($mapa))
{
        $map[] = $pole;
}


for ($i=0;$i<10;$i++)
{
        echo "<tr>";
        for ($u=0;$u<10;$u++)
        {
                if (isset($map[/* ted co? */]['x']))
                {
                        echo "<td><img src='".$map[/* ted co? */]['img']."' />";
                }else{
                        echo "<td><img src='prazdnypole.png' /></td>";
                }
        }
        echo "</tr>";
}

ale jak víš který id máš kontrolovat?
& kam si to uložíš? Do session?
1Pupik1989
Profil
Já nemám
$map[] = $pole;

ale
$map[$pole[x]][$pole[y]] = $pole[type];


A pak zjistim, jestli takový index pole existuje.

Takže
if (isset($map[$u][$i]))
G3n3sis19
Profil
a to taháš do session nebo jak to při tom ajax reloadu bereš z toho pole?
1Pupik1989
Profil
Normálně to načtu znova
G3n3sis19
Profil
takže ten zbytek (těch 60 nezobrazených záznamů) vyhodíš do povětří?

takže když tam budeš tahat 2000 uživatelů krát 3 vesnice to máš 60 000 vesnic, to není málo

proč to tedy taháš komplet? Nechceš kontrolovat odkud kam máš tahat?
joe
Profil
G3n3sis19:
Není tohle jednodušší, než to co jsi napsal ve svém #23 příspěvku?

SELECT * FROM mapdata WHERE y IN (-8,-7,-6,-5,-4,-3,-2,-1,0,1,2) AND x IN (-1,0,1,2,3,4,5,6,7,8,9)
1Pupik1989
Profil
G3n3sis19:
Však já kontroluji. Posílám Ajax GET třeba "mapa_vypis.php?X=3&Y=5" a SELECT vypadá
SELECT * FROM Mapa WHERE X>=$_GET[X] AND Y>=$_GET[Y] AND X<=".($_GET[X] + $RozmerMapy)." AND Y<=".($_GET[Y] + $RozmerMapy)."
G3n3sis19
Profil
joe:
SELECT * FROM mapdata WHERE y IN (-8,-7,-6,-5,-4,-3,-2,-1,0,1,2) AND x IN (-1,0,1,2,3,4,5,6,7,8,9)
přesně tohle jsem hledal

1Pupik1989:
Však já kontroluji. Posílám Ajax GET třeba "mapa_vypis.php?X=3&Y=5" a SELECT vypadá
tady nekontroluješ ty prázdný pole. Navíc, tohle taky vybere vše ne?
1Pupik1989
Profil
Já nekontroluji vše, jen vybírá z databáze záznamy, co mají X větši nebo tovno třeba 3 a menší než 3+15. To samé dělám s Y. Pak to akorát dosadím do polí ve vnořených "for".
joe
Profil
G3n3sis19:
Možná by bylo lepší použít BETWEEN, ale nevím jak to zvládá čísla od - do +
G3n3sis19
Profil
1Pupik1989:
Já nekontroluji vše, jen vybírá z databáze záznamy, co mají X větši nebo tovno třeba 3 a menší než 3+15. To samé dělám s Y. Pak to akorát dosadím do polí ve vnořených "for".
ale proč? Vždyť těch pár výsledků, je zbytečných ne? Ikdyž v tomto případě je to jen 15x15
1Pupik1989
Profil
Však mám mapu 100x100 a koukám na výřez 15x15. Nemá cenu vybírat 100x100.
G3n3sis19
Profil
jo tak, myslel jsem že máš 15x15. Znamená to tedy, že z těch 15x15 políček (961 záznamů) vybereš třeba jen 20, kde se jedná o vesnice a zbytek si vygeneruješ/zobrazíš obrázek kamení, hor nebo prostě prázdného místa? Proč to tedy ale dáváš do toho pole a nekontroluješ to v tom cyklu rovnou?

Celou mapu bys mi tu asi nepředhodil že ? (kod)
1Pupik1989
Profil
Asi nevím jak to myslíš, zkus udělat takový cyklus, který má 15x15 a bylo tam náhodně rozmístěných třeba 50 objektů, jinak to asi nepochopím. Nechápu jak bych kontroloval pole, když bych neměl podle čeho.
G3n3sis19
Profil
aha. Už vím. Díky za rady.

Neví někdo náhodou, kolik je teda přibližný (chci další odhady, vím že už to bylo zodpovězeno) počet dotazů na stránku ?
joe
Profil
G3n3sis19:
Neví někdo náhodou, kolik je teda přibližný (chci další odhady, vím že už to bylo zodpovězeno) počet dotazů na stránku ?

Nikdo neví co potřebuješ a jak to potřebuješ, jejich počet se může na každé stránce lišit a taky se častokrát liší. Pokud něco potřebuješ z databáze, jinak než dotazem se k tomu nedostaneš, tak na co takové otázky?

Pokud chceš dělat něco pořádně a co bude mít smysl, pak bys o tom měl něco vědět. Takže ti doporučuju se raději pořádně naučit PHP a MySQL a teprve potom se do něčeho takového pouštět. Protože pokud místo jednoho dotazu napíšeš třeba těch jedenáct místo #8, tak si myslím, že se v tom moc neorientuješ... Fajn, každý někdy začíná a chce se to na něčem naučit, ale přečti si aspoň seriál o MySQL na Linuxsoftu, který není na jednu noc, ale určitě si z toho něco odneseš.
G3n3s!s
Profil *
už jsem to skolil na 2 díky BETWEEN, tzn.
2371 Query	SELECT SQL_CACHE * FROM global_ban WHERE (ip = '127.0.1.1' or username = '') and expired='0' LIMIT 1
		 2371 Query	SELECT SQL_CACHE * FROM s1_map WHERE y BETWEEN 2 and 12 and x BETWEEN 4 and 14 order by y asc,x asc
« 1 2

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: