Klassen Problem...

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

  • Klassen Problem...

    Hmpf, irgendwie raffis net. Ich habe folgende Codes:

    class.php:
    PHP-Code:
    <?php
    class cart{
    var 
    $items;
    var 
    $total;

        function 
    add_item($article$plus=1){
            
    $this->items[$article]+=$plus;
            
    $this->total+=$plus;
            return 
    TRUE;
        }
        
        function 
    del_item($article$minus=1){
            if(
    $items[$article]>=$minus){
                
    $this->items[$article]-=$minus;
                
    $this->total-=$minus;
                return 
    TRUE;
            }else{
                return 
    FALSE;
            }
        }
        
        function 
    del_all(){
            unset(
    $this->items);
            if(empty(
    $this->items)) return TRUE;
            else return 
    FALSE;
        }
        
        function 
    get_item($item){
            return 
    $this->items[$item];
        }
        
        function 
    get_total(){
            return 
    $this->total;
        }
        
        function 
    get_items(){
            
    $return="";
            if(
    $this->items!=""){
                foreach(
    $this->items as $itms=>$num){
                    
    $return.="Nr. $itms$num<br />";
                }
                
    $return.="Total: ".$this->total;
                return 
    $return;
            }else{
                return 
    FALSE;
            }
        }
    }
    ?>
    class_test.php:
    PHP-Code:
    <?php
    include_once("class.php");
    $cart=new cart;
    $_SESSION['on']=1;
    $action=$_GET['action'];
    $item=$_GET['item'];
    if(!empty(
    $action)) $cart->$action($item,1);
    ?>
    <a href='class_test.php?action=add_item&amp;item=1'>Item hinzuf&uuml;gen</a>
    <a href='class_test.php?action=del_item&amp;item=1'>Item l&ouml;schen</a>
    <a href='class_test.php?action=del_all'>Warenkorb leeren</a>
    <?php
    echo "<br />Items:<br />".$cart->get_items();
    ?>
    Das ist ja ne abgewandelste version von der Beispiel Klasse von php.net.

    Wenn ich jetzt add_item das erste mal benutze, gehts ganz gut.
    Beim 2. Mal wirds aber nimmer dazugezählt. Also der Wert beträgt imer noch 1. Was mach ich falsch???

  • #2
    Du speicherst ja auch nix von der Klasse in der Session.
    Jedes mal wenn du die datei neu aufrufst, ist die klasse leer, sprich items und total nicht gesetzt. Da kann sich auch nix vermehren...


    gruss

    rth
    H I L F E
    GD FreeType Antialising
    Gesuch PHP Entwicklungsumgebung
    ------------------------------------------
    Der Cmabrigde rael tset, sruf whoin du wlilst

    Kommentar


    • #3
      Jop Robert hat Recht.

      Das Script wird ja jedes Mal von neuem Ausgeführt, ohne irgendweleche Werte zu haben.
      tata
      moqui

      [COLOR=red]Ich will keine unaufgeforderten Mails über PHP Fragen. Es gibt ein Forum hier! Und ich bin nicht Scripter für jeden, der mir ne Mail schreibt![/COLOR]

      Kommentar


      • #4
        K, thx.

        Kommentar


        • #5
          Hm, ich hab den Code folgendermassen abgeaendert:

          PHP-Code:
          <?php
          session_start
          ();
          include(
          "class.php");
          $cart=new cart;
          $action=$_GET['action'];
          $item=$_GET['item'];
          if(!empty(
          $_SESSION['items'])) $cart->set_items($_SESSION['items']);
          if(!empty(
          $action)) $cart->$action($item,1);
          ?>
          <a href='class_test.php?action=add_item&amp;item=1'>Item hinzuf&uuml;gen</a>
          <a href='class_test.php?action=del_item&amp;item=1'>Item l&ouml;schen</a>
          <a href='class_test.php?action=del_all'>Warenkorb leeren</a>
          <?php
          echo "<br />Items:<br />".$cart->get_items();
          echo 
          $_SESSION['items'];
          $_SESSION['items']=$cart->get_items();
          ?>
          Jetzt bekomm ich folgenden Fehler:
          Code:
          Fatal error: Cannot use assign-op operators with overloaded objects nor string offsets in /kunden/solanki.ch/htdocs/page/class.php on line 7

          Kommentar


          • #6
            Ich denke du solltest die methoden der Klasse richtig benutzten.
            PHP-Code:
            $cart->set_items ... 
            set_items sehe ich nicht in der klasse, hast du das hinzugefügt ?
            Dann poste die klasse bitte nochmal. Und dann sag bitte wo line 7 ist
            (ohne zeilennumern oder kompletten source, ist das schlecht zu raten )

            gruss

            rth
            H I L F E
            GD FreeType Antialising
            Gesuch PHP Entwicklungsumgebung
            ------------------------------------------
            Der Cmabrigde rael tset, sruf whoin du wlilst

            Kommentar


            • #7
              Ups, da habi wohl etwas uebereilt ^^

              class.php:
              PHP-Code:
              <?php
              class cart{
              var 
              $items;
              var 
              $total;

                  function 
              add_item($article$plus=1){
                      
              $this->items[$article]+=$plus;
                      
              $this->total+=$plus;
                      return 
              TRUE;
                  }

                  function 
              del_item($article$minus=1){
                      if(
              $items[$article]>=$minus){
                          
              $this->items[$article]-=$minus;
                          
              $this->total-=$minus;
                          return 
              TRUE;
                      }else{
                          return 
              FALSE;
                      }
                  }

                  function 
              del_all(){
                      unset(
              $this->items);
                      if(empty(
              $this->items)) return TRUE;
                      else return 
              FALSE;
                  }

                  function 
              get_item($item){
                      return 
              $this->items[$item];
                  }

                  function 
              get_total(){
                      return 
              $this->total;
                  }
                  
                  function 
              set_items($set){
                      
              $this->items=$set;
                      return 
              TRUE;
                  }
                  
                  function 
              get_items(){
                      return 
              $this->items;
                  }

                  function 
              show_items(){
                      
              $return="";
                      if(
              $this->items!=""){
                          foreach(
              $this->items as $itms=>$num){
                              
              $return.="Nr. $itms$num<br />";
                          }
                          
              $return.="Total: ".$this->total;
                          return 
              $return;
                      }else{
                          return 
              FALSE;
                      }
                  }
              }
              ?>
              Zeile 7:
              PHP-Code:
              if(!empty($_SESSION['items'])) $cart->set_items($_SESSION['items']); 

              Kommentar


              • #8
                okay

                PHP-Code:
                function del_item($article$minus=1){
                        if(
                $this->items[$article]>=$minus){
                            
                $this->items[$article]-=$minus;
                            
                $this->total-=$minus;
                            return 
                TRUE;
                        }else{
                            return 
                FALSE;
                        }
                    } 
                hast das $this vergessen gehabt.

                Ansonsten klappt es dann bei mir, kann dir nicht sagen warum das bei dir nicht funzt. Sorry


                rth
                H I L F E
                GD FreeType Antialising
                Gesuch PHP Entwicklungsumgebung
                ------------------------------------------
                Der Cmabrigde rael tset, sruf whoin du wlilst

                Kommentar


                • #9
                  Hm, hatte glaub die neue class.php noch net oben -_-"
                  Tja, dumms kann passieren. Thx

                  Kommentar

                  Lädt...
                  X