Hi,
ich habe diese Ablauf:
$test=new going;
if($test->is_going(1)==FALSE) {
$test->get_difference();
mysql_query("UPDATE user SET time=($test->time_now+($test->difference*10)) WHERE id='1'");
mysql_query("UPDATE user SET go='1' WHERE id='1'") or die(mysql_error());
$test->time_is_up(1);
}
else {
$test->time_is_up(1);
}
Der Code ist noch sehr unsauber, aber das wird verbessert. Ich lasse mir mehrmals zwischendurch test->difference ausgeben, damit ich den Inhalt der Variablen kenne, allerdings verändert sich der Inhalt ohne, dass ich weiß warum.
Hier die einzelnen Funktionen, die benutzt werden:
function is_going($id) {
$res = mysql_query("SELECT go FROM user WHERE id='$id'") or die(mysql_error());
while ($erg=mysql_fetch_assoc($res)) {
$is_going=$erg['go'];
}
if ($is_going==0) {
return FALSE;
}
else {
return TRUE;
}
}
function time_is_up($id) {
$res = mysql_query("SELECT time FROM user WHERE id='1'") or die(mysql_error());
while ($erg=mysql_fetch_assoc($res)) {
$this->time_future=$erg['time'];
}
echo $this->time_future . "<br>";
if($this->time_now<=$this->time_future) {
echo "Noch " . ($this->difference*10) . "Sekunden, bis der Spieler das Feld erreicht hat!";
}
else {
mysql_query("UPDATE user SET go='0' WHERE id='$id'") or die(mysql_error());
mysql_query("UPDATE user SET pos='$this->i,$this->j' WHERE id='1'") or die(mysql_error());
echo "<meta http-equiv="refresh" content="0; URL=main.php">";
}
}
function get_position($id) {
$res = mysql_query("SELECT pos FROM user WHERE id='$id'") or die(mysql_error());
while ($erg=mysql_fetch_assoc($res)) {
$this->position=$erg['pos'];
}
}
Gehen wir das mal alles durch (erster Code):
In der Zeile if($test->is_going(1)==FALSE) { ist alles ok. Hier wird die Variable $test->difference noch nicht beeinflusst. In der zweiten Zeile $test->get_difference(); wird sie beeinflusst. Wenn ich meinen Spieler um 1 Feld bewege ist der Unterschied auch 1 Feld. Das steht hier noch richtig in der Variablen. Nach den beiden mysql Querys wird time_is_up() ausgeführt. Lasse ich mir hier $test->difference ausgeben ist sie leer. Warum??? Und wie kann ich das ändern? Sie soll den Wert beibehalten!
Danke!