Ahnungsloser: unterschiede mysql online zu mysql offline(xamp)

Also ich hab folgendes Problem ... habe ein kleines Browsergame gecoded
ich weiss es ist noch einiges an kaputtem html mit drinne und ich lerne den Kram erst seit ca 4 Wochen, aber ich denke man kann den guten willen sehen

Auf jedenfall hab ich das ganze ausgiebig offline mit xamp getestet und die Datenbank bzw deren Eintragungen immer via phpMyAdmin kontrolliert

Offline funktioniert das ganze einwandfrei, nun habe ich das ganze online gestellt und teste es wieder ausgiebig und habe diverse Probleme festgestellt, was die Eintragung in die Datenbank betrifft, welche einfach nicht ausgeführt werden, sowie diverse Probleme bei der Übergabe von arrays an $_SESSION['name'], was wohl nicht verwaltet werden kann, das mit den sessions ist quasi zu 90% erledigt, da ich es nun mehr oder weniger über Umwege umgangen hab nun hab ich noch die Problematik mit der DB was teilweise einfach nicht funktioniert, obwohl es vom Code her eigentlich sollte. Ich habe sogar die MySQL Version des Servers überprüft, welche die selbe ist die ich offline verwende.

Die Tests sind noch nicht abgeschlossen und die Page auch an sich noch nicht fertig, aber vielleicht hat ja einer fun und schaut sich das ganze mal an

Imageshier der Link zum Code als *.rar natürlich nur mit den nötigsten

wie gesagt offline funktionieren die getesteten Funktionen einwandfrei

  1. Hi!

    Offline funktioniert das ganze einwandfrei, nun habe ich das ganze online gestellt und teste es wieder ausgiebig und habe diverse Probleme festgestellt, was die Eintragung in die Datenbank betrifft, welche einfach nicht ausgeführt werden, sowie diverse Probleme bei der Übergabe von arrays an $_SESSION['name'], was wohl nicht verwaltet werden kann, das mit den sessions ist quasi zu 90% erledigt, da ich es nun mehr oder weniger über Umwege umgangen hab nun hab ich noch die Problematik mit der DB was teilweise einfach nicht funktioniert, obwohl es vom Code her eigentlich sollte.

    Zum Programmieren gehört immer auch das Debugging. Hellsehen gehört nicht dazu, weswegen ich dir nicht aus dem Stegreif sagen kann, was die Ursachen sind. Überprüfe mit Kontrollausgaben an stratigeisch wichtigen Stellen, ob Wunsch und Wirklichkeit übereinstimmen - Variablen haben den geplanten Inhalt - Ausdrücke liefern das richtige Ergebnis. Viele Funktionen (besonders die DBMS-Funktionen) signalisieren Fehler über ihren Rückgabewert. Ignorier diesen nicht, wenn du den Fehlern auf die Spur kommen willst. Zudem hab ich bei dem kurzen Blick in zwei oder drei der PHP-Dateien die üblichen Versäumnisse und unnötiges Variablen-Umkopieren ($_GET/$_POST) festgestellt.

    Lo!

    1. Also mir geht es jetzt speziell um diese function hier, sie ist Teil einer Klasse database und wird aufgerufen wenn der user den Kampfstatus abfragen will... wie gesagt offline funktioniert das ganze online nur soweit das die Daten der User über sieg oder niederlage aktualisiert werden, aber das eintragen in die Liste geführter Kämpfe funktioniert irgendwie nicht ... probier es grad mal aus und lass mir mit echo $q den die mysql query und den string bestätigen ... aber vielleicht sieht man ja schonwas auf anhieb

      // Checkt den aktuellen Kampfstatus  
      	function checkFights($username) {  
      		$q = "SELECT user, vs, endtime FROM ".TBL_FIGHTS." WHERE user='$username' OR vs='$username'";  
      		$res = mysql_query($q, $this->connection);  
      		$erg = mysql_num_rows($res);  
      		if($erg <= 0) return 0;	// kein Kampf eingetragen  
      		else {  
      			$data = mysql_fetch_object($res);  
      			if(time() < $data->endtime) return 1;	// kampf noch im gange  
      			else {  
      				$user = $this->getFightPts($data->user);	// Kampfpunkte User laden  
      				$vs   = $this->getFightPts($data->vs);		// Kampfpunkte Gegner laden  
      				  
      				// Fight aus Liste löschen  
      				$q = "DELETE FROM ".TBL_FIGHTS." WHERE user='$data->user' OR vs='$data->user'";  
      				mysql_query($q, $this->connection);			  
      				  
      				if($user > $vs) { // Kampf gewonnen ******************************************************					  
      					$userdata = $this->getUserStatObj($data->user, 'fightpts, wins');  
      					$vsdata	  = $this->getUserStatObj($data->vs, 'money, pts, fightpts, looses');  
      					  
      					// userdaten anpassen  
      					$userdata->fightpts += $vsdata->pts*0.1;  
      					$userdata->wins++;  
      					  
      					// Gegnerdaten anpassen  
      					if($vsdata->fightpts > $vsdata->pts*0.1) 	$vsdata->fightpts -= $vsdata->pts*0.1;  
      					else $vsdata->fightpts = 0;  
      					  
      					$winmoney = $vsdata->money*0.1;  
      					  
      					$vsdata->looses++;  
      					$time = time();  
      					// Aktualisieren der Userstats  
      					$q = "UPDATE ".TBL_STATS." SET fightpts=$userdata->fightpts, wins=$userdata->wins, money=money+$winmoney WHERE user='$data->user'";  
      					mysql_query($q, $this->connection);  
      					$q = "UPDATE ".TBL_STATS." SET fightpts=$vsdata->fightpts, looses=$vsdata->looses, money=money-$winmoney WHERE user='$data->vs'";  
      					mysql_query($q, $this->connection);  
      					// Aktualisieren der Fightlist				  
      					$rnd = md5($data->vs.Rand(0, time()).time());  
      					$q = "INSERT INTO ".TBL_FIGHTLIST." VALUES('$rnd', '$data->user', '$data->vs', 1, $time)";  
      					echo $q;  
      					mysql_query($q, $this->connection);  
      					$a = array ("win" => 1, "vs" => $data->vs);  
      					return $a;	// gewonnen  
      				} else { // Kampf verloren ***************************************************************  
      					$userdata = $this->getUserStatObj($data->user, 'pts, fightpts, looses, money');  
      					$vsdata	  = $this->getUserStatObj($data->vs, 'fightpts, wins');  
      					  
      					// userdaten anpassen  
      					$vsdata->fightpts += $userdata->pts*0.1;  
      					$vsdata->wins++;  
      					  
      					// Gegnerdaten anpassen  
      					if($userdata->fightpts > $userdata->pts*0.1) 	$userdata->fightpts -= $userdata->pts*0.1;  
      					else $userdata->fightpts = 0;  
      					  
      					$loosemoney = $userdata->money*0.1;  
      					$userdata->looses++;  
      					$time = time();  
      					// Aktualisieren der Userstats  
      					$q = "UPDATE ".TBL_STATS." SET fightpts=$vsdata->fightpts, wins=$vsdata->wins, money=money+$loosemoney WHERE user='$data->vs'";  
      					mysql_query($q, $this->connection);  
      					$q = "UPDATE ".TBL_STATS." SET fightpts=$userdata->fightpts, looses=$userdata->looses, money=money-$loosemoney WHERE user='$data->user'";  
      					mysql_query($q, $this->connection);  
      					  
      					// Aktualisieren der Fightlist  
      					$rnd = md5($rvs = $data->vs.Rand(0, time()).time());  
      					$q = "INSERT INTO ".TBL_FIGHTLIST." VALUES('$rnd', '$data->user', '$data->vs', 0, $time)";  
      					echo $q;  
      					mysql_query($q, $this->connection);  
      					$a = array ("win" => 0, "vs" => $data->vs);  
      					return $a;	// verloren  
      				}  
      			}  
      		}		  
      	}
      
      1. Hi!

        ... aber vielleicht sieht man ja schonwas auf anhieb

        Ja, auf Anhieb sehe ich das schon erwähnte: Kontextwechsel nicht beachtet, keine Auswertung der Rückgabewerte der mysql_*-Funktionen. Vermutlich steht auch noch das error_reporting nicht auf E_ALL und/oder display_errors nicht auf on.

        Lo!