Variable wird irgendwie geleert
Jan
- php
0 dedlfix
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!
echo $begrüßung;
ich habe diese Ablauf:
Für einen Außenstehenden nicht nachvollziehbar, da wesentliche Teile des Codes fehlen. Jemand der in der Lage ist, das Problem zu lösen, ist meist nicht allwissend und hellsehend, kennt aber die geeigneten Werkzeuge, um es am konkreten Beispiel analysieren zu können.
Warum??? Und wie kann ich das ändern?
Für "nicht zu findende" Probleme in einem komplexen Code hat es sich bewährt, den Code soweit zu reduzieren, dass das Problem gerade noch auftritt, aller anderer Code aber, der sich entfernen lässt, ohne dass das Problem dabei mit verschwindet, gelöscht wird. Das macht man natürlich mit einer Kopie des aktuellen Zustands. Nun sollte der resultieren Code nicht länger als "kurz" sein, damit überschaubar und der Fehler leichter nachvollziehbar zu ermitteln sein.
echo "$verabschiedung $name";