Autor Zpráva
Alastor_Kopal
Profil
Napsal jsem si php script - http://www.magic-quest.kx.cz/game/5.txt

Jak můžete vidět
Připojím se do databáze
Zobrazím všechny uživatele s 'misto' = 5
Potom pomocí klávesnice odešlu metodou get na jakou stranu mám jít
    case 37: location.href= '5.php?smer=1'; break; // bola stlačená šípka doľava

A tohle je už zpracování smeru 1
if($_GET['smer'] == 1){$vysledek1 = $sloupec - 10; mysql_query("UPDATE dobro SET sloupec=$vysledek1 where id='$id'");}

Myslím že by to měl být normální plně funkční script ale hodnota se mění různě (někdy musím šipku zmáčknout po páté než se to zpracuje - v čem je chyba ?)

Děkuji
___________________________________________________________________________
Omluvám se za přízpěvek http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=3&topic=96371 nechtěl jsem to sdělit takovou formou !

a děkuji za přízpěvek uživatele Bubáka - díky jeho přízpěvku jsem si začal připadat jako outsider a začal hledat chyby ve svých scriptech. Tím jsem zjistil kolik toho ještě o php nevím a začal jsem se učit PHP děkuji
Alphard
Profil
Ten kód (trochu očesaný) není tak dlouhý, aby se sem nemohl dát.
<?php
// připojení k databázi
      $vysledek=mysql_query("select * from dobro where misto=5");
      while ($zaznam=MySQL_Fetch_Array($vysledek)):
?>
<span style="position: absolute; top: <?php echo $zaznam["radek"]; ?>px; left: <?php echo $zaznam["sloupec"]; ?>px;"><img src="<?php echo $zaznam["vzhled"]; ?>" title="<?php echo $zaznam["jmeno"]; ?>" alt="<?php echo $zaznam["jmeno"]; ?>"></span>
<?php
      endwhile;


session_start(); //nastartujeme session
if($_SESSION['zdravi'] == 0){header("location: death.php");}
else{}

$sloupec = $_SESSION['sloupec'];
$radek = $_SESSION['radek'];
$zdravi = $_SESSION['zdravi'];
$id = $_SESSION['id'];


if($_GET['smer'] == 1)
	{$vysledek1 = $sloupec - 10; mysql_query("UPDATE dobro SET sloupec=$vysledek1 where id='$id'");}
elseif($_GET['smer'] == 2){$vysledek2 = $radek - 10; mysql_query("UPDATE dobro SET radek=$vysledek2 where id='$id'");}
elseif($_GET['smer'] == 3){$vysledek3 = $sloupec + 10; mysql_query("UPDATE dobro SET sloupec=$vysledek3 where id='$id'");}
elseif($_GET['smer'] == 4){$vysledek4 = $radek + 10; mysql_query("UPDATE dobro SET radek=$vysledek4 where id='$id'");}
elseif($_SESSION['radek'] == 100){$_SESSION['zdravi'] = $zdravi - 2; mysql_query("UPDATE dobro SET radek=$vysledek where id='$id'");}
else{}
if($_SESSION['radek'] == 80){$_SESSION['zdravi'] = 0;}
elseif($_SESSION['radek'] == 90){$_SESSION['zdravi'] = 0;}
elseif($_SESSION['radek'] == 100){$_SESSION['zdravi'] = $zdravi - 2;}
else{}
?>
<body onkeydown="prechod(event);" bgcolor="black">
<script>
function prechod(event)
{
  switch(event.keyCode) {
    case 37: location.href= '5.php?smer=1'; break; // bola stlačená šípka doľava
    case 38: location.href= '5.php?smer=2'; break; // bola stlačená šípka hore
    case 39: location.href= '5.php?smer=3'; break; // bola stlačená šípka doprava
    case 40: location.href= '5.php?smer=4'; break; // bola stlačená šípka dole
  }
}
</script>

<meta http-equiv="refresh" content="50;url=5.php">
<?php

session_start(); //nastartujeme session

$vzhled = $_SESSION['vzhled'];
$radek = $_SESSION['radek'];
$sloupec = $_SESSION['sloupec'];

//ted zařadíme uživatele do některého čtverce
if($_SESSION['misto'] == "5")
//kod pro místo 5
{echo"
<style type=\"text/css\">

</style>"; echo'
<div id="pozadi-hra"></div>
';}

else{echo'<br><br><br><p style="text-align: center; color: red; font-size: x-large;">Vaše teleportace na místo kde jste přestal hrát<br>se nepovedla prosím kontaktujte admina - GolemX2@centrum.cz</p>';}
// to co se zobrazí když uživatel bude mít v session místo číslici kterou nedokážeme odhalit

?>


Ten zdroj mi připadá zmatený, 2x session_start() atd. Různě si vypisujte proměnné, kontrolujte je a hledejte nesrovnalosti.

Např. na první pohled mi není jasné, proč $sloupec a $radek ukládáte do session, a navíc nikde nevidím jejich aktualizaci. Podle mě by mělo stačilo něco ve stylu:
elseif($_GET['smer'] == 3) mysql_query("UPDATE dobro SET sloupec=slouopec+10 where id=$id");



K té vaší poznámce. Nevidím důvod to tady vytahovat a zdůrazňovat. (Snad se zas tolik nestalo) Někdo o tom ví, někdo ne, a tak bych to nechal. S tímto tématem to nesouvisí.
Alastor_Kopal
Profil
a odkud mám brát výchozí hodnotu od které přičítám nebo odečítám - bez session se neobejdu
Alphard
Profil
Alastor_Kopal:
a odkud mám brát výchozí hodnotu od které přičítám nebo odečítám
Ta ukázka přičte 10 k současné hodnotě v databázi. Pochopil jsem to tak, že je to dostačující, ale může to být chybná úvaha.
Alastor_Kopal
Profil
Ano přičte nebo odečte 10 k 'sloupec' nebo 'radek'
Alastor_Kopal
Profil
if($_GET['smer'] == 1){mysql_query("UPDATE dobro SET sloupec=$sloupec-10 where id='$id'"); $_SESSSION['sloupec'] = $sloupec - 10;}


nic to nedělá nevim
Aesir
Profil
Alastor_Kopal:

nic to nedělá nevim
Buď se to do této větve vůbec nedostane nebo updatujete něco jiného, než si myslíte (neočekávaná hodnota $id?).
Projděte to nějakým debuggerem, tohle je hledání naslepo.

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: