Frage zu einer Klasse + Script

SantaCruze

Erfahrenes Mitglied
Moin :) Und zwar habe ich ein kleines Problemchen mit einer Klasse und deren Funktionen. Und zwar meldet er mir sobald ich die Klasse aufrufe


(Funktion set Data) Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp2\xampp\htdocs\buildclass\buildclass.php on line 31

(Funktion set Data) Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp2\xampp\htdocs\buildclass\buildclass.php on line 34

Nun ist mir klar was das heißt, aber es ergibt keinen Sinn. Die Connect.php ist richtig ausgerichtet und die Tabellen und Spalten bestehen auch alle.

Die Klasse ist folgende:

PHP:
<?php
include("connect.php");

$uid=1;
class Planet {

var $planetId;

//rohstoffe
var $gold;
var $holz;
var $stein;
var $eisen;

//gebäude
var $zentrale;
var $steinbruch;
var $goldmine;
var $kaserne;

//data
var $gTime; //timestamp des baus
var $gArt; //gebäudeart des baus

function setData($uid)
   {
      include("connect.php");
      
      //man ermittelt die id des hauptplanetes der users mit der id $uid,
      //die man per $_GET, session oder sonst was übergibt
      $userData = mysql_fetch_array(mysql_query("SELECT hauptplanetId FROM $bg_user WHERE id = '$uid'"));
      
      //ermittelt die daten des planets
      $planetData = mysql_fetch_array(mysql_query("SELECT * FROM $bg_karte WHERE id = '$userData[hauptplanetId]'"));
      
      //variablen deklarieren
      
      $this->planetId = $planetData[id];
       
        $this->gold = $planetData[gold];
        $this->holz = $planetData[holz];
        $this->stein = $planetData[stein];
        $this->eisen = $planetData[eisen];

        $this->zentrale = $planetData[zentrale];
        $this->steinbruch = $planetData[steinbruch];
        $this->goldmine = $planetData[goldmine];
        $this->kaserne = $planetData[kaserne];
       
        $this->gTime = $planetData[gTime];
        $this->gArt = $planetData[gArt];
   }
   
   
    //$techName, der später einfach als parameter übergeben wird
   function checkAnforderung($techName)
    {
        require('config.inc.php');
      
      //holt die anforderung aus der datenbank und packt sie in $anf
      $techData = mysql_fetch_array(mysql_query("SELECT anforderung FROM $db_techs WHERE name = '$techName'"));
      $anf = $techData[anforderung];
      
      //kontrollierende arrays
        $arrayAnf = array();
        $sendArray = array();
       
        //man trennt die anforderungen
        $anf = explode("|",$anf);

      $c=count($anf);
        for($i=0; $i<$c;$i++){

           switch($anf[$i]{0})
           {
              //wenn die techart g ist, also gebäude
              case 'g':
                 //zerlegt die anforderung in teile
                 $g = explode(":",$anf[$i]);
                 
                 //name der technologie
                 $gName = $g[1];
                 
                 //geforderter techlevel
                 $gStufe = $g[2];
                 
                 
                 if($gStufe>$this->$gName)
                 {
                    //wenn gefordertes level größer ist, als das vorhandene auf dem planeten
                    //wird die tech im "index" nicht angezeigt
                    $check = 'unsichtbar';
                 }else{
                    //wenn nicht, dann anforderung erfüllt
                    $check = 'true';
                 }
                 //das ergebniss wird in das kontrollierende array eingetragen
                 $arrayAnf[] = $check;
                 break;
              
              //wenn die techart g ist, also rohstoffe, unser sonderfall
              case 'r':
                 //zerlegt die anforderung in teile
                 $r = explode(":",$anf[$i]);
                 
                 //name der technologie
                 $rName = $r[1];
                 
                 //geforderte rohstoffanzahl
                 $rStufe = $r[2];
                 
                 
                 if($rStufe>$this->$rName)
                 {
                    //wenn geforderter anzahl größer ist, auf dem planeten vorhanden ist
                        //wird die tech im "index" zwar angezeigt, aber mit der farbe gekennzeichnet,
                        //dass nicht genug rohstoffe vorhanden sind
                       $check = 'false';
                 }else{
                    //wenn nicht, dann anforderung erfüllt
                    $check = 'true';
                 }
                 
                 //trägt die rohstoffanforderung in das array
                 //warum wird das eingetragen? um später auf der "index" die anforderung anzuzeigen
                 //sonst müsste man die anforderung wieder spliten und auswerten
                 $sendArray[$rName] = $rStufe;
                 
                 //das ergebniss wird in das kontrollierende array eingetragen
                 $arrayAnf[] = $check;
                 break;
           }
      }
         
         //wenn eine der anforderung nicht erfüllt worden ist und 'unsichtbar' im array steht,
         //wird der array $sendArray zurückgegeben
         //unsichtbar wird mit dem index 0 in das array eingetragen
         if(in_array('unsichtbar',$arrayAnf))
            {
                $sendArray[0] = 'unsichtbar';
                return $sendArray;
           
            //sollten nur nicht genug rohstoffe vorhanden sein, wird false in das array eingetrage
            //und $sendArray zurückgegeben
            }elseif(in_array('false',$arrayAnf))
            {
                $sendArray[0] = 'false';
                return $sendArray;
               
         //sollten alle forderung erfüllt worden sein, dann wird 'true' eingetragen
            //und $sendArray zurückgegeben
            }elseif(!in_array('false',$arrayAnf) && !in_array('unsichtbar',$arrayAnf))
            {
               $sendArray[0] = 'true';
                return $sendArray;
            }

    }
   
   };
?>
 
PHP:
//man ermittelt die id des hauptplanetes der users mit der id $uid,
      //die man per $_GET, session oder sonst was übergibt
      $userData = mysql_fetch_array(mysql_query("SELECT hauptplanetId FROM $bg_user WHERE id = '$uid'"));
      
      //ermittelt die daten des planets
      $planetData = mysql_fetch_array(mysql_query("SELECT * FROM $bg_karte WHERE id = '$userData[hauptplanetId]'"));

// MySQL Fehler ermitteln
echo mysql_error();

Und du solltest um einiges schlauer werden.
 
Zurück