Ankündigung

Einklappen
Keine Ankündigung bisher.

XAMP gehts, auf realer server nicht: Fehler: Cannot use object of type ... as array

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XAMP gehts, auf realer server nicht: Fehler: Cannot use object of type ... as array

    Hallo Leute

    ich arbeite zurzeit an einem Projekt und ist eigentlich sogut wie fertig. Naja auf meinem Virtuellen Server (XXAMP) läuft und funktioniert alles nur auf dem realen Server gibt es ein problem mit dem Warenkorb class bzw darin ist ein array mit dem hat der irgendwie probleme.

    Ich hab es so gemacht wenn jemand ein Artikel kaufen will bestimmte Werte an die Class Warenkorb.php gesendet werden und dort die funktion checkOK starten. Um sicher zu gehen hab ich mal in der funktion CheckOK getestet ob er überhautp die Werte bekommt und test war erfolgreich.

    Die fehlermeldung ist immer: Fatal error: Cannot use object of type Warenkorb as array in ...class/warenkorb.php on line 67

    durch einige if abfragen mit is_array merkt man das meine Variable kein array ist und ich denk mal genau daswegen gibt de rmir ne fehlermeldung obwohl es eigentlich ein array ist. Was komnisch ist, ist das beim ersten Kauf wenn wenn mandie seite betritt alles funktioniert und aber dem zweiten kauf gibt es dann diese fehlermeldung.

    wenn ich $this->waren mal mit var_dump() ausgeben bekomme ich das hier gesagt:

    object(Warenkorb)#2 (1) { ["waren"]=> object(Warenkorb)#2 (1) { ["waren"]=> *RECURSION* } }


    Server Version ist aktuellste also PHP 5.2.5

    Das ist hier mein Warenkorb class, wäre schön wenn man mir helfen könnte sitze schon seit gestern an diesem Problem

    PHP-Code:
    <?php
    class Warenkorb{
     
     public 
    $waren;
     
     public function 
    getArtikelNr($param){ 
            if(
    is_array($this->waren)){ 
       return 
    $this->waren[$param][0]; 
            }Else{return 
    "Warenkorb Leer";} 
        } 
     
        public function 
    getOrdner($param){ 
            if(
    is_array($this->waren)) { 
       return 
    $this->waren[$param][1]; 
            }Else{return 
    "Ordner Leer";} 
        } 
     
        public function 
    getRubrik($param){ 
            if(
    is_array($this->waren)){ 
       return 
    $this->waren[$param][2]; 
            }Else{return 
    "Rubrik Leer";} 
        } 
     
        public function 
    getPreis($param){ 
            if(
    is_array($this->waren)) { 
             return 
    $this->waren[$param][3]; 
            }Else{return 
    "Preis Leer";} 
        } 
     
        public function 
    getMenge($param){ 
            if(
    is_array($this->waren)) { 
       return 
    $this->waren[$param][4]; 
            }Else{return 
    "Menge Leer";} 
        } 
     
     public function 
    setArraySession(){
      unset(
    $_SESSION['warenkorb']);
      
    $_SESSION['warenkorb'] = $this->waren;
     }
     
     public function 
    getArraySession(){
      return 
    $this->waren $_SESSION['warenkorb'];
     }
     
     public function 
    check($artikelNr$ordnerX$rubrik$preis){
       
    $this->getArraySession();
       if(
    count($this->waren) == 10){
        
    $_SESSION['warenkorbStatus'] = 'warenrkorbVoll';
       }else{
        
    $check 'true';
        
    $menge 1;
        for(
    $i=0$i count($this->waren); $i++){
         if(
    $artikelNr == $this->getArtikelNr($i)){
          
    $check 'false';
          
    $menge $this->waren[$i][4];
          
    $menge++;
          
    $this->waren[$i][4] = $menge;
          break;
         }
        }
        if(
    $check == 'true'){
         
    $this->waren[] = array($artikelNr$ordnerX$rubrik$preis$menge);
        }
        
    $this->setArraySession();
        
    $_SESSION['warenkorbStatus'] = 'einkaufOK';
       }
     }
    ?>

  • #2
    Du gehst vorher schon mit der Eigenschaft $waren so um als wäre es ein Array.
    Dies ist es aber erst nach einem Aufruf der Methode check. Wie wäre es denn wenn du es so machst?
    PHP-Code:
    <?php
    class Warenkorb{
     
     public 
    $waren = array();
    ...
    Zudem wäre es Hilfreich zu wissen was in $_SESSION['warenkorb']; steckt. Mach da mal bitte ein var_dump().

    Kommentar


    • #3
      Hi danke erstmal für deine Antwort,

      ich hab es aber bisher schon probiert oben waren glech als array zu deklarieren aber es hilft nicht

      und hatte oben schon reingeschrieben was der mit var_dump ausgibt:

      object(Warenkorb)#2 (1) { ["waren"]=> object(Warenkorb)#2 (1) { ["waren"]=> *RECURSION* } }

      Ich bin schon total am verzweifeln da alles auf dem xxamp version läuft aber auf dem realen server hat er irgendwie probleme mit dem array

      Kommentar


      • #4
        Zeile 67 posten

        Kommentar


        • #5
          Zeile 67 ist:

          $this->waren = array($artikelNr, $ordnerX, $rubrik, $preis, $menge);

          Allerding gibt der mit nun diese fehlermeldung nicht mehr an zeile 67 aus sondern 9 und zeile 9 ist :

          return $this->waren[$param][0];

          wenn ich mit var_dump($this->waren); ausgebe bekomme ich das heir angezeigt:

          object(Warenkorb)#2 (1) { ["waren"]=> object(Warenkorb)#2 (1) { ["waren"]=> *RECURSION* } }

          Kommentar

          Lädt...
          X