Fehler in der Klasse

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

  • Fehler in der Klasse

    Hallo,

    habe folgende Funktion nun in eine Klasse geschrieben:

    PHP-Code:
    class menue
    {

    ///////// VARIABLEN /////////////////////////////////////////////////
        
    var $level_null[99]; // Level 0 des Menues
        
    var $level_eins[99]; // Level 1 des Menues
        
    var $level_zwei[99]; // Level 2 des Menues

    ///////// FUNKTIONEN ///////////////////////////////////////////////
      
    function menue_ausgeben($parent$level)
      {
        
    $x 0;
        
    // Alle Childs eines $parent abrufen
        
    $sql "SELECT id, name, action, parent FROM ftv_menue WHERE parent="$parent;
        
    $result mysql_query($sql);
        
        
    // Zeige jedes Child
        
    while ($row mysql_fetch_assoc($result))
        {
          if(
    $level == 0// Wenn der Level 0 ist, dann Eintrag in das Array 0
          
    {
            
    $level_null[$x] = $row['name'];
            
    $x += 1;
          }
          if(
    $level == 1// Wenn der Level 1 ist, dann Eintrag in das Array 1
          
    {
            
    $level_eins[$x] = $row['name'];
            
    $x += 1;
          }
          if(
    $level == 2// Wenn der Level 2 ist, dann Eintrag in das Array 2
          
    {
            
    $level_zwei[$x] = $row['name'];
            
    $x += 1;
          }
          
          
    menue_ausgeben($row['id'], $level+1);
        }
        
    print_r($level_null);
      }


    Allerdings gibt mir das Ganze den Fehler:

    Parse error: syntax error, unexpected '[', expecting ',' or ';' in C:\apachefriends\xampp\htdocs\ftv\index.php on line 13
    Kann es sein, dass ich in Klassen keine Arrays verwenden kann, oder liegt es an etwas anderem?

  • #2
    bist du dir sicher das du uns hier die index.php gepostet hast ?

    Kommentar


    • #3
      Ich habe nur diese eine Datei

      Da wird nix included und nix.

      Aber hier mal die komplette index.php:

      PHP-Code:
      <?php
      error_reporting
      (E_ALL);

      mysql_connect("localhost","*********","***********")
      or die(
      "Fehler bei Datenbankverbindung!");
      mysql_select_db("ftv")
      or die(
      "Fehler bei der Datenbankauswahl!");

      class 
      menue
      {

      ///////// VARIABLEN //////////////////////////////////////////
          
      var $level_null[99]; // Level 0 des Menues
          
      var $level_eins[99]; // Level 1 des Menues
          
      var $level_zwei[99]; // Level 2 des Menues

      ///////// FUNKTIONEN ////////////////////////////////////////
        
      function menue_ausgeben($parent$level)
        {
          
      $x 0;
          
      // Alle Childs eines $parent abrufen
          
      $sql "SELECT id, name, action, parent FROM ftv_menue WHERE parent="$parent;
          
      $result mysql_query($sql);
          
          
      // Zeige jedes Child
          
      while ($row mysql_fetch_assoc($result))
          {
            if(
      $level == 0// Wenn der Level 0 ist, dann Eintrag in das Array 0
            
      {
              
      $level_null[$x] = $row['name'];
              
      $x += 1;
            }
            if(
      $level == 1// Wenn der Level 1 ist, dann Eintrag in das Array 1
            
      {
              
      $level_eins[$x] = $row['name'];
              
      $x += 1;
            }
            if(
      $level == 2// Wenn der Level 2 ist, dann Eintrag in das Array 2
            
      {
              
      $level_zwei[$x] = $row['name'];
              
      $x += 1;
            }
            
            
      menue_ausgeben($row['id'], $level+1);
          }
          
      print_r($level_null);
        }

      }

      $menu = new menue;
      $menu->menue_ausgeben('0','0');
        
      switch (
      $_GET["action"]) {
        case 
      "index":
          echo 
      "<h1>INDEX!</h1>";
          break;
        case 
      "dummy":
          echo 
      "<h1>DUMMY!</h1>";
          break;
        default:
          echo 
      "<h1>INDEX!</h1>";
          break;
      }
      mysql_close();

      ?>

      Kommentar


      • #4
        PHP-Code:
        class menue
        {

        ///////// VARIABLEN //////////////////////////////////////////
            
        var $level_null[99]; // Level 0 des Menues
            
        var $level_eins[99]; // Level 1 des Menues
            
        var $level_zwei[99]; // Level 2 des Menues 
        Und die Zahlen in den Klammern sollen was genau darstellen ...?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          in php kannst du die größe eines arrays nicht deklarieren.

          Kommentar


          • #6
            Ah, mein Fehler

            War vorher noch am proggen mit ner anderen Sprache.

            Nun sieht das Script so aus:
            PHP-Code:
            <?php
            error_reporting
            (E_ALL);

            mysql_connect("localhost","**********","***********")
            or die(
            "Fehler bei Datenbankverbindung!");
            mysql_select_db("ftv")
            or die(
            "Fehler bei der Datenbankauswahl!");

            class 
            menue
            {

            ///////// VARIABLEN ///////////////////////////////////////////
                
            var $level_null// Level 0 des Menues
                
            var $level_eins// Level 1 des Menues
                
            var $level_zwei// Level 2 des Menues

            ///////// FUNKTIONEN ////////////////////////////////////////
              
            function menue_ausgeben($parent$level)
              {
                
            $x 0;
                
            // Alle Childs eines $parent abrufen
                
            $sql "SELECT id, name, action, parent FROM ftv_menue WHERE parent="$parent;
                
            $result mysql_query($sql);
                
                
            // Zeige jedes Child
                
            while ($row mysql_fetch_assoc($result))
                {
                  if(
            $level == 0// Wenn der Level 0 ist, dann Eintrag in das Array 0
                  
            {
                    
            $this->$level_null[$x] = $row['name'];
                    
            $x += 1;
                  }
                  if(
            $level == 1// Wenn der Level 1 ist, dann Eintrag in das Array 1
                  
            {
                    
            $this->$level_eins[$x] = $row['name'];
                    
            $x += 1;
                  }
                  if(
            $level == 2// Wenn der Level 2 ist, dann Eintrag in das Array 2
                  
            {
                    
            $this->$level_zwei[$x] = $row['name'];
                    
            $x += 1;
                  }
                  
                  
            $this->menue_ausgeben($row['id'], $level+1);
                }
                
            print_r($level_null);
              }

            }

            $menu = new menue;
            $menu->menue_ausgeben('0','0');
              
            switch (
            $_GET["action"]) {
              case 
            "index":
                echo 
            "<h1>INDEX!</h1>";
                break;
              case 
            "dummy":
                echo 
            "<h1>DUMMY!</h1>";
                break;
              default:
                echo 
            "<h1>INDEX!</h1>";
                break;
            }
            mysql_close();

            ?>
            Nun kriege ich diesen Fehler:

            Notice: Undefined variable: level_null in C:\apachefriends\xampp\htdocs\ftv\index.php on line 30

            Fatal error: Cannot access empty property in C:\apachefriends\xampp\htdocs\ftv\index.php on line 30
            Sorry für die vielleicht etwas einfachen Fragen, aber ich arbeite das erste mal mit Klassen.

            Woran liegt aber nun dieser Fehler?

            Danke schonmal

            Kommentar


            • #7
              Hi,

              der zugriff auf eine membervariable erfolgt ohne das dollarzeichen.

              PHP-Code:
              $this->level_null 
              Du solltest allerdings im konstruktor zunächst mal arrays aus
              den levels "machen".

              Wenn du dann soweit zufrieden mit deinem code bist,
              dann kannst du ja zur übung mal überlegen was man besser
              machen kann. Besonders in bezug auf die explizit vorgegebene
              tiefe und die rekursiven queries.

              greets
              (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

              Kommentar

              Lädt...
              X