• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Fehler im PHP Code?

Icener

New member
Bin gerade dabei ein kleines Browser RPG zu schreiben weiß das mein Code sehr unsauber ist und alles aber mir geht es erstmal um die funktionalität, da ich später wenn alles fertig ist ehh nochmal alles neu schreiben und ein wenig abändern werde.

Irgendwie funktioniert das Script nicht richtig es aktualisiert nach elseif wie gewünscht, bleibt dann aber stehen. Aktualisiert man den Browser danach, läuft das Script bis zum Ende... ansonsten funktioniert alles wunderbar auch wenn es vllt nicht so aussieht :D

Code:
<?php
session_start();
if(!isset($_SESSION['user_res']) || $_SESSION['user_res'] == "")
	die("Required Session not found!");
       if($user_data->questdo == 0)
        {
            if($user_data->questid == 0)
              {
              echo "<meta http-equiv='refresh' content='0; URL=index.php?go=quest'>";
              }     
            else
              $sql = "SELECT * FROM quest WHERE id = '$user_data->questid' LIMIT 1";
              $quest_data = mysql_fetch_object(mysql_query($sql));
              $timestamp = time();
              $questtime = $timestamp + $quest_data->time;
              $questnr = $user_data->quest +1;
              {
              $set = "UPDATE user SET quest = 1, questdo = 1, questtime = $questtime WHERE id = '$uid' LIMIT 1";
              $setnow = mysql_query($set);
              sleep(1);
              echo "<meta http-equiv='refresh' content='0; URL=index.php?go=questgo'>";
              }
          
            }
        elseif($user_data->questdo == 1)
            { 
              $sql = "SELECT * FROM user WHERE id = '$uid->id' LIMIT 1";
              $quest_data = mysql_fetch_object(mysql_query($sql));
              $timestamp = time();
              $timequest = $user_data->questtime - $timestamp;
            if($timequest > 0)
              {
              include 'questtimer.php';
              }
            else
              {
              $setqdo = "UPDATE user SET questdo = 2 WHERE id = '$uid' LIMIT 1";
              $setquest = mysql_query($setqdo);
              sleep(1);
              echo "<meta http-equiv='refresh' content='0; URL=index.php?go=questgo'>";
              }
            }
        else
            {
            $sql = "SELECT * FROM quest WHERE id = '$user_data->questid' LIMIT 1";
            $quest_data = mysql_fetch_object(mysql_query($sql));
            $gold = $user_data->gold + $quest_data->gold;
            $honor= $user_data->honor + $quest_data->honor;
            $set = "UPDATE user SET questdo = 0, gold = $gold, honor = $honor WHERE id = '$uid' LIMIT 1";
            $setu = mysql_query($set);
            echo "Sie haben den Auftrag ausgeführt";
            echo "Sie haben $quest_data->gold erbeutet und erhieten $quest_data->honor Ruhm";
            }

?>

Wäre sehr dankbar wür jede Hilfe bin schon seid Stunden am verzweifeln und es bestimmt irgend ein offensichtlicher Fehler den ich einfach nicht sehen will, oder ein Denkfehler von mir. :(

LG
Icener
 
Zuletzt bearbeitet:
Als erstes schau dir mal deine geschweiften Klammern an, wo du sie wo gesetzt hast.

Ansonsten denke ich, dass du Im $timequest>0 hängen bleibst. Und deshalb manuell reloaden musst.
 
Zuletzt bearbeitet von einem Moderator:
@ Tom80 also hab die geschweiften Klammern paar mal nachgesehen sehe darin kein Fehler und am $timequest > 0 sollte es auch eigentlich auch nicht stehen bleiben.

@ZeitGeist genau bei der 1. else konnte ich das Problem mit sleep(1); lösen was ich leider auch nicht wirklich verstehen kann. Werde mal versuchen das ganze nochmal neu und anderst zu schreiben. Muss es nur hinbekommen das der User nicht schummeln kann und sich einfach ein Quest aussucht oder ohne die Zeit einzuhalten ein neuen Quest startet ;)

Vielleicht hat ja jemand von euch eine Idee :)

Ansonsten läuft bis jetzt auch alles Super und werde wenn ich mit allem fertig bin auch mal das komplette Game Script posten, denn denke gerade mit Browsergames haben ja viele ihre Schwierigkeiten

Viel Dank schon einmal für eure Hilfe

LG
Icener
 
z. B.
PHP:
            else
              $sql = "SELECT * FROM quest WHERE id = '$user_data->questid' LIMIT 1";
              $quest_data = mysql_fetch_object(mysql_query($sql));
              $timestamp = time();
              $questtime = $timestamp + $quest_data->time;
              $questnr = $user_data->quest +1;
              {
 
Zurück
Oben