• Psst! Ano, Ty! Ještě nejsi zaregistrovaný na našem herním fóru? Přicházíš tak o možnost zapojit se do diskuzí a navíc si tu můžeš zkrátit čekání například při výstavbě nové budovy či jednotek. Zaregistruj se ještě dnes pomocí následujícího odkazu:

    » Vytvořit účet na fóru

barbarske vesnice v externich datech

DeletedUser2029

Guest
.. jen pro upřesnění ...
... points nemuzou byt nulove ...
Pravda, moje chyba, u vesnice nemohou být body mulové. Asi ne. Možná.

Jen pozor na testovací vsi /supportu/.U DKMapa s tím měl settler (autor DKMapa) jednou problém. Ale už nevím, které hodnoty byly "mimo". Takže NOT NULL bych tam prostě raději nedával, pokud nemusím.

Ale pozor u tabulky hráčů - hráč může mít nulové body. (to mne zblblo).
 

DeletedUser2029

Guest
Napadla mne další testovací hovadina. Doplnit:

$name = urldecode($name);
$player++;
$name = addslashes($name);
... Nebo někam tam kolem ...

A pak otestovat, jestli něco vrátí:
Kód:
SELECT * FROM villages WHERE player = 1
[I]případně [/I]
SELECT count(*) FROM villages WHERE player = 1
 

DeletedUser2029

Guest
A tady jsem udělal chybu ... village ->villages

Kód:
DROP TABLE village[B]s[/B]

CREATE TABLE village[B]s[/B] (id INTEGER PRIMARY KEY,x SMALLINT,y SMALLINT,name CHAR(64),player INTEGER,points SMALLINT,bonus TINYINT) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci engine=myisam
Jestli jsi nesahal jinam, do původní (nesmazané) databáze. Sorry.
 

DeletedUser

Guest
A tady jsem udělal chybu ... village ->villages
Jestli jsi nesahal jinam, do původní (nesmazané) databáze. Sorry.

tak uz jsem zpet. samozrejme jsem si ohlidal, co do databaze posilam za sql. takze takovahle chyba nehrozila. ted mi chvili potrva nez si odehraju kmeny a pak hned vyzkousim to s tim inkrementem $player, to je dobrej napad.
 

DeletedUser

Guest
Napadla mne další testovací hovadina. Doplnit:

$name = urldecode($name);
$player++;
$name = addslashes($name);
... Nebo někam tam kolem ...

A pak otestovat, jestli něco vrátí:
Kód:
SELECT * FROM villages WHERE player = 1
[I]případně [/I]
SELECT count(*) FROM villages WHERE player = 1

tak bohuzel, toto nepomohlo, v db neni ani jedna vesnice s player 1, ani 0.
 

DeletedUser2029

Guest
To není bohužel. To je dobře. Teď víme, že chyba není v uložení hodnot v DB - bez ohledu na číslo.

Popřemýšlím.
 

DeletedUser2029

Guest
$name = urldecode($name);
if(!$player) echo $player;
$name = addslashes($name);

... případně pak bez z if

jestli Ti import vypíše nuly (a to bez if, jen natvrdo 'echo $player;' že tam opravdu vidíš že se něco vypisuje).
 

DeletedUser

Guest
tak sem to dal rovnou bez if.
vypsalo to spousty nul.
takze chyba opravdu musi bejt pri vkladani do db.
PHP:
f ($_POST["what"]=="villages")
{
$lines = gzfile('http://cs13.divokekmeny.cz/map/village.txt.gz');
if(!is_array($lines))
{
 echo "Villages failed.<br>";
}
else
 {
 mysql_query("truncate table villages");
 foreach($lines as $line)
  {
    list($id, $name, $x, $y, $player, $points, $type) = explode(',', $line);
    $name = urldecode($name);
    $name = addslashes($name);
    echo $player.'<br>';
    mysql_query("INSERT INTO villages SET id='$id', name='$name', x='$x', y='$y', player='$player', points='$points', bonus='$type'");
  }
 echo "Villages done.<br>"; 
 }
}
 

DeletedUser2029

Guest
if(!$player) $player=448941;

a pak se podívej, jestli Ti přibyly vesnice

SELECT * FROM villages WHERE player = 448941

/zjistíme, jestli DB nepotřebuje mít ID reálného hráče (foreign key) a zda povolí více zápisů, více stejných hodnot, pro takové ID/
 

DeletedUser2029

Guest
A vyzkoušej tam i doslova to "if(!$player) echo $player;", jestli vypíše nuly.

Jestli php nemá nějaké divné problémy s 0 při explode a neudělá z toho string či podobně jiný objekt
 
Nahoru