Jan: Variable wird irgendwie geleert

Beitrag lesen

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!