m8t Posted September 12, 2009 Report Share Posted September 12, 2009 tātad, man ir mysql datubāzē tubuliņa ar 4 vērtībām. CREATE TABLE IF NOT EXISTS `s1_map` ( `id` int(11) NOT NULL auto_increment, `absx` int(4) NOT NULL, `absy` int(4) NOT NULL, `private` int(1) NOT NULL default '0', `walkable` int(1) NOT NULL default '0', `img` int(2) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; INSERT INTO `s1_map` (`id`, `absx`, `absy`, `private`, `walkable`, `img`) VALUES (1, 1, 1, 0, 0, 6), (2, 2, 1, 0, 0, 7), (3, 2, 2, 0, 0, 3), (4, 1, 2, 0, 0, 4); Tātad, tagat mēģinu izvadīt laukā visu, lai viņš sastātots pareizi. $query = "SELECT * FROM {$tblprefix}map WHERE private='0' ORDER BY absy DESC"; $run = mysql_query($query); echo "<table border=\"0\">"; while($row = mysql_fetch_array($run)) { //funkcija izvadei, ik pa noteiktajām rindiņām: atstarpe $copy = "<td background=\"{$image}\" width=\"32\" height=\"32\">{$img}</td>"; if($count<=0) { $count++; echo "<tr>"; echo $copy; } else if($med>=$med) { $count=0; echo $copy; echo "</tr>"; } else { $count++; echo $copy; } //end } echo "</table>"; Tātad, ar tādu kodu man izvadās lūk šādi: Apakša itkā būtu pareizi, jo datubāzē arī pievienoju, pirmo 6 un otro 7, bet augšai es pievienoju pirmo 4, bet otro 3. Ir kādas idejas, kā varētu sakārtot visu smuki un izveidotos karte? Quote Link to comment Share on other sites More sharing options...
Kavacky Posted September 12, 2009 Report Share Posted September 12, 2009 "ORDER BY absy DESC, absx DESC"? Quote Link to comment Share on other sites More sharing options...
m8t Posted September 12, 2009 Author Report Share Posted September 12, 2009 (edited) paldies, ar to viss sanāca, bet tagat man ir šāda problēma: Vēlējos izveidot failu, ar kura palīdzību varētu viegli labot un pievienot jaunus kartes gabaliņus. Viss itkā sancāca, izprintējas veiksmīgi vajadzīgais daudzums un viss, tikai tad, kad mēģināju likt virsū veco karti (lai rāda ne tikai jautājuma zīmes, bet lai rāda arī vecos kartes gabaliņus, tajās vietās, kur tie atrodas). Nu lūk, šajā skriptā, es pats nezinu kādēļ man nesanāk izprintēt par vidu vecos kartes gabaliņus. http://paste.php.lv/1e7084f6297bd76a56702ccb1a2dcde2?lang=php ps.- ja jums prātā ir kāds labāks variants - būšu ar prieku uzklausīt! Paldies jau iepriekš Edited September 12, 2009 by m8t Quote Link to comment Share on other sites More sharing options...
waplet Posted September 12, 2009 Report Share Posted September 12, 2009 Varbūt kādu preview? Quote Link to comment Share on other sites More sharing options...
codez Posted September 12, 2009 Report Share Posted September 12, 2009 (edited) Ja karte ir pietiekami liela un nepieciešams iegūt tikai tās fragmentus, tad ,lai MYSQL varētu indeksēt ierakstus uzreiz pēc 2 parametriem, ir jāizmanto Spatial extension, jātaisa spatial indeks un x,y glabā vienā laukā, kuru sauc par Point. Edited September 14, 2009 by codez Quote Link to comment Share on other sites More sharing options...
m8t Posted September 12, 2009 Author Report Share Posted September 12, 2009 (edited) Preview - http://shizo0.exs.lv/game/admin/make_map.php Par to Spatial extension - palasīšos. // nesapratu neko daudz par viņu. Kā lai viņu izveido, un kā lai izvelk no datubāzes? Paldies. Edited September 12, 2009 by m8t Quote Link to comment Share on other sites More sharing options...
bubu Posted September 13, 2009 Report Share Posted September 13, 2009 codez tev iedeva linku, kur tas ir uzrakstīts. Kā to izveidot un kā izvilkt no datubāzes. Kāpēc tur neapskatījies? Quote Link to comment Share on other sites More sharing options...
codez Posted September 14, 2009 Report Share Posted September 14, 2009 (edited) Tajā linkā tiešām viss ir, veram vaļā apakšsadaļu: 11.12.4. Creating a Spatially Enabled MySQL Database Zem 11.12.4.1. MySQL Spatial Data Types saprotam, ka datiem pietiks ar datu tipu Point, kuru vienkārši mysql administrātorā raksta pie kolonnas izveides, manos piemēros xy. Tālāk veram apakšsadaļu: 11.12.4.4. Populating Spatial Columns Pirmais kverijs parāda kā ievietot datus Point tipa kolonnā. INSERT INTO geom VALUES (GeomFromText('POINT(1 1)')); , kur 1 1 ir X un Y koordinātes Tālāk ejam 11.12.5.5. Relations on Geometry Minimal Bounding Rectangles (MBRs) un tur aprasktītās funkcijas izmantojam, lai uzbūvētu kveriju SELECT *,AsText(xy) FROM q WHERE MBRContains(GeomFromText('Polygon((0 0,0 20,30 20,30 0,0 0))'),xy); šis kverijs atgriež visus punktus, kuri atrodas taisnstūrī 0,0 - 30,20 Edited September 14, 2009 by codez Quote Link to comment Share on other sites More sharing options...
Wuu Posted September 14, 2009 Report Share Posted September 14, 2009 Šitas joks defaultā mysql nāk līdzi? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.