Autor | Zpráva | ||
---|---|---|---|
G3n3sis19 Profil |
#1 · Zasláno: 14. 3. 2011, 14:46:19
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 |
#2 · Zasláno: 14. 3. 2011, 14:49:19
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 |
#3 · Zasláno: 14. 3. 2011, 15:16:49 · Upravil/a: G3n3sis19
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 |
#4 · Zasláno: 14. 3. 2011, 15:39:29 · Upravil/a: 1Pupik1989
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 |
#5 · Zasláno: 14. 3. 2011, 16:17:19
a to taháš do session nebo jak to při tom ajax reloadu bereš z toho pole?
|
||
1Pupik1989 Profil |
#6 · Zasláno: 14. 3. 2011, 17:09:46
Normálně to načtu znova
|
||
G3n3sis19 Profil |
#7 · Zasláno: 14. 3. 2011, 17:19:53 · Upravil/a: G3n3sis19
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 |
#8 · Zasláno: 14. 3. 2011, 17:45:02
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 |
#9 · Zasláno: 14. 3. 2011, 18:07:48
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 |
#10 · Zasláno: 14. 3. 2011, 18:27:13
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 |
#11 · Zasláno: 14. 3. 2011, 18:58:38
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 |
#12 · Zasláno: 14. 3. 2011, 19:51:39
G3n3sis19:
Možná by bylo lepší použít BETWEEN, ale nevím jak to zvládá čísla od - do + |
||
G3n3sis19 Profil |
#13 · Zasláno: 14. 3. 2011, 20:49:52
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 |
#14 · Zasláno: 14. 3. 2011, 20:53:37
Však mám mapu 100x100 a koukám na výřez 15x15. Nemá cenu vybírat 100x100.
|
||
G3n3sis19 Profil |
#15 · Zasláno: 14. 3. 2011, 21:02:58 · Upravil/a: G3n3sis19
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 |
#16 · Zasláno: 14. 3. 2011, 21:39:31
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 |
#17 · Zasláno: 14. 3. 2011, 22:11:58
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 ? |
||
Časová prodleva: 4 dny
|
|||
joe Profil |
#18 · Zasláno: 18. 3. 2011, 16:50:10
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 * |
#19 · Zasláno: 18. 3. 2011, 17:33:07
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 |
||
Časová prodleva: 14 let
|
0