Autor Zpráva
karlanka
Profil *
ahoj,

mám flashové hry, u kterých počítám počet spuštění. Vždy při načtení hry se zapíše jeden řádek do tabulky STATS. Cronem mám nastaveno spouštění skriptu, který podle ID hry spočítá počet řádků s jejím ID (tedy počet spuštění hry). Součet pak přičte k číslu v hlavní tabulce HRY. Kód je následující:

$query  = "SELECT * FROM stats";
$result = mysql_query($query) or die('Chyba databáze.');
while($row = mysql_fetch_array($result))
{
$pocet = mysql_result(mysql_query("SELECT COUNT(idhry) FROM stats WHERE idhry='$row[idhry]'"), 0);
$dotaz = ("UPDATE hry SET spusteno=spusteno+'$pocet' WHERE id='$row[idhry]' ");
$zapis = mysql_query($dotaz);
}

mysql_db_query($db_name, "TRUNCATE TABLE stats") or die("chyba!");


Problém je, že mi to počítá nějak moc :(. Hra má třeba 100 spuštění, ale ten kód spočítá asi 1000, jakoby se to někde cyklylo ;). Nevidíte chybu?
orava
Profil
chyba je asi tu
spusteno=spusteno+'$pocet'
peta
Profil
ja bych to psal jednotne, jinak souhlas s ORAVA
spusteno=spusteno+'$pocet'
spusteno=spusteno+$pocet
$pocet je cislo,
kdezto puvodne: cislo + retezec = retezec -> prevod na cislo
12 + '3' = '123' -> 123

Mozna
$dotaz = ("...");

A mozna
"UPDATE hry SET spusteno=spusteno+'$pocet' WHERE id='--->$row[idhry]<---' ";
".$row[idhry]."
".$row['idhry']."


function sq($query,$text='') {$res = mysql_query($query) or die("<hr>MySQL Err".$text.": $query<hr>".mysql_error()); return $res;} //debug mode

$query = "SELECT * FROM stats";
$result = sq($query);
while($row = mysql_fetch_array($result))
{
$query1 = "SELECT COUNT(`idhry`) FROM `stats` WHERE `idhry`='".$row['idhry']."'";
$result1 = sq($query1);
$pocet1 = mysql_result($result1, 0);
$query2 = "UPDATE `hry` SET `spusteno`=`spusteno`+$pocet1 WHERE `id`='".$row['idhry']."' ";
$zapis = sq($query2);
}

$query = "TRUNCATE TABLE `stats`";
sq($query);


doporucuji pred cely script, nejlepe do configu jako prvni radky pridat:
@ini_set('error_reporting', E_ALL);
@ini_set("display_errors", "on");
error_reporting(E_ALL);

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: