Funktionsaufruf innerhalb einer Klasse

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

  • Funktionsaufruf innerhalb einer Klasse

    Hallo,

    in meiner Klasse artikel habe ich mehrere Funktionen verfasst. Die Eine ließt alle Oberartikel aus, die andere die Unterartikel. Die passenden Varianten werden von der Funktion variation_1 und variation_2 besorgt. Preise beinhaltet die Funktion preis.

    Nun dachte ich, wäre es schick, wenn ich nur eine Funktion der Klasse aufrufen müßte und alle anderen nach und nach abarbeitet werden. So, das ich alle Werte auf einen Schlag zurück bekomme. Ist das die richtige Lösung? Wie kann ich Funktionen innerhalb einer Klasse aufrufen?

    Hier meine Klasse Artikel (falls ich einen Denkfehler drin habe, wäre ich sehr dankbar wenn ihr mich darauf aufmerksam machen könnt):

    PHP-Code:
    <?php
    class artikel {
        function 
    get_oberartikel($warengruppe) {
            
    $oberartikel = array();
            
            
    $query "SELECT artikelnum, bezeichnun, zusatztext, bild ";
            
    $query.= "FROM artikel ";
            
    $query.= "WHERE hauptartikel = 1 ";
            
    $query.= "AND warengrupp = '$warengruppe' ";
            
    $query.= "ORDER BY bezeichnun ASC";
            
            
    $result mysql_query($query);

            while(
    $row mysql_fetch_array($result)) {
                
    $oberartikel[$row[artikelnum]][artikelnum] = "$row[artikelnum]";
                
    $oberartikel[$row[artikelnum]][bezeichnun] = "$row[bezeichnun]";
                
    $oberartikel[$row[artikelnum]][zusatztext] = "$row[zusatztext]";
                
    $oberartikel[$row[artikelnum]][bild] = "$row[bild]";
            }
            
            return 
    $oberartikel;
        }
        
        function 
    get_variation($oberartikelnum) {
            
    $variation_1 = array();
            
            
    $query "SELECT variation_1, wert_1 ";
            
    $query.= "FROM artikel ";
            
    $query.= "WHERE hauptartikel = 0 ";
            
    $query.= "AND hauptartikelnum = '$this->artikelnum' ";
            
    $query.= "ORDER BY wert_1 ASC";
            
            
    $result mysql_query($query);
            
            while(
    $row mysql_fetch_array($result)) {
                
    $variation[$row[wert_1]] = "$row[wert_1]";
            }
            
            return 
    $variation_1;
            
            
    $variation_2 = array();
            
            
    $query "SELECT variation_2, wert_2 ";
            
    $query.= "FROM artikel ";
            
    $query.= "WHERE hauptartikel = 0 ";
            
    $query.= "AND hauptartikelnum = '$this->artikelnum' ";
            
    $query.= "ORDER BY wert_2 ASC";
            
            
    $result mysql_query($query);
            
            while(
    $row mysql_fetch_array($result)) {
                
    $variation[$row[wert_2]] = "$row[wert_2]";
            }
            
            return 
    $variation_2;
        }
        
        function 
    get_unterartikel($oberartikelnum) {
            
    $unterartikel = array();
            
            
    $query "SELECT artikelnum, bezeichnun, zusatztext, bild ";
            
    $query.= "FROM artikel ";
            
    $query.= "WHERE hauptartikel = 0 ";
            
    $query.= "AND hauptartikelnum = '$oberartikelnum' ";
            
    $query.= "ORDER BY bezeichnun ASC";
            
            
    $result mysql_query($query);

            while(
    $row mysql_fetch_array($result)) {
                
    $unterartikel[$row[artikelnum]][artikelnum] = "$row[artikelnum]";
                
    $unterartikel[$row[artikelnum]][bezeichnun] = "$row[bezeichnun]";
                
    $unterartikel[$row[artikelnum]][zusatztext] = "$row[zusatztext]";
                
    $unterartikel[$row[artikelnum]][bild] = "$row[bild]";    
            }    
            
            return 
    $unterartikel;
        }
        
        function 
    get_preis($unterartikelnum) {
            
    $preis = array();
            
            
    $query "SELECT anzahl, preis ";
            
    $query.= "FROM preisliste ";
            
    $query.= "WHERE artikelnum = '$this->unterartikelnum' ";
            
    $query.= "AND preisstaffel = 1 ";
            
    $query.= "ORDER BY anzahl ASC";
            
            
    $result mysql_query($query);
            
            while(
    $row mysql_fetch_array($result)) {
                
    $preis[$row[anzahl]][anzahl] = $row[anzahl];
                
    $preis[$row[anzahl]][preis] = $row[preis];
            }    
            
            return 
    $preis;
        }
    }
    ?>
    » http://www.htaccess-generator.com

  • #2
    funktionen eine rklasse rufst du innerhalbder klasse mit $this->funktionsname auf

    mich iritieren übrigens die returnanweisungen mitten im funktionsocde
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Hallo und danke für deine schnelle Antwort.

      Wie meinst du das mit dem iritieren... ich muss doch aus jeder Funktion einen Wert zurückgeben, oder nicht?

      Habe nun in der Funktion Oberartikel, gleich die Funktion get_unterartikel mit aufgerufen.

      Kann man das so stehen lassen?

      PHP-Code:
      <?php
      class artikel {
          function 
      get_oberartikel($warengruppe) {
              
      $oberartikel = array();
              
              
      $query "SELECT artikelnum, bezeichnun, zusatztext, bild ";
              
      $query.= "FROM artikel ";
              
      $query.= "WHERE hauptartikel = 1 ";
              
      $query.= "AND warengrupp = '$warengruppe' ";
              
      $query.= "ORDER BY bezeichnun ASC";
              
              
      $result mysql_query($query);

              while(
      $row mysql_fetch_array($result)) {
                  
      $oberartikel[$row[artikelnum]][artikelnum] = "$row[artikelnum]";
                  
      $oberartikel[$row[artikelnum]][bezeichnun] = "$row[bezeichnun]";
                  
      $oberartikel[$row[artikelnum]][zusatztext] = "$row[zusatztext]";
                  
      $oberartikel[$row[artikelnum]][bild] = "$row[bild]";
                  
                  
      // HIER MEINE ÄNDERUNG
                  
      $unterartikel[$row[artikelnum]] = $this->get_unterartikel($row[artikelnum]);
              }
              
              
      // UND NOCH MAL NE ÄNDERUNG
              
      return array(oberartikel => $oberartikelunterartikel => $unterartikel);
          }
          
          function 
      get_variation($oberartikelnum) {
              
      $variation_1 = array();
              
              
      $query "SELECT variation_1, wert_1 ";
              
      $query.= "FROM artikel ";
              
      $query.= "WHERE hauptartikel = 0 ";
              
      $query.= "AND hauptartikelnum = '$this->artikelnum' ";
              
      $query.= "ORDER BY wert_1 ASC";
              
              
      $result mysql_query($query);
              
              while(
      $row mysql_fetch_array($result)) {
                  
      $variation[$row[wert_1]] = "$row[wert_1]";
              }
              
              return 
      $variation_1;
              
              
      $variation_2 = array();
              
              
      $query "SELECT variation_2, wert_2 ";
              
      $query.= "FROM artikel ";
              
      $query.= "WHERE hauptartikel = 0 ";
              
      $query.= "AND hauptartikelnum = '$this->artikelnum' ";
              
      $query.= "ORDER BY wert_2 ASC";
              
              
      $result mysql_query($query);
              
              while(
      $row mysql_fetch_array($result)) {
                  
      $variation[$row[wert_2]] = "$row[wert_2]";
              }
              
              return 
      $variation_2;
          }
          
          function 
      get_unterartikel($oberartikelnum) {
              
      $unterartikel = array();
              
              
      $query "SELECT artikelnum, bezeichnun, zusatztext, bild ";
              
      $query.= "FROM artikel ";
              
      $query.= "WHERE hauptartikel = 0 ";
              
      $query.= "AND hauptartikelnum = '$oberartikelnum' ";
              
      $query.= "ORDER BY bezeichnun ASC";
              
              
      $result mysql_query($query);

              while(
      $row mysql_fetch_array($result)) {
                  
      $unterartikel[$row[artikelnum]][artikelnum] = "$row[artikelnum]";
                  
      $unterartikel[$row[artikelnum]][bezeichnun] = "$row[bezeichnun]";
                  
      $unterartikel[$row[artikelnum]][zusatztext] = "$row[zusatztext]";
                  
      $unterartikel[$row[artikelnum]][bild] = "$row[bild]";    
              }    
              
              return 
      $unterartikel;
          }
          
          function 
      get_preis($unterartikelnum) {
              
      $preis = array();
              
              
      $query "SELECT anzahl, preis ";
              
      $query.= "FROM preisliste ";
              
      $query.= "WHERE artikelnum = '$this->unterartikelnum' ";
              
      $query.= "AND preisstaffel = 1 ";
              
      $query.= "ORDER BY anzahl ASC";
              
              
      $result mysql_query($query);
              
              while(
      $row mysql_fetch_array($result)) {
                  
      $preis[$row[anzahl]][anzahl] = $row[anzahl];
                  
      $preis[$row[anzahl]][preis] = $row[preis];
              }    
              
              return 
      $preis;
          }
      }
      ?>
      Jetzt funktioniert allerdings meine foreach-Schleife nicht mehr... ;-(

      PHP-Code:
      $artikel = new artikel;
      $oberartikel $artikel->get_oberartikel("Eins");

      #print_r($oberartikel);

      foreach($oberartikel as $items) {
          print 
      "$items[artikelnum] <br>";

      Vorher hat er mir die Artikelnummer ausgegen, jetzt ist alles leer. Was mache ich falsch?
      » http://www.htaccess-generator.com

      Kommentar


      • #4
        PHP-Code:
         function get_variation($oberartikelnum) {
          
        //code        
          
        return $variation_1;
          
        //code
          
        return $variation_2;

        bis wohin wird die funktion deiner meinung nach ausgeführt?
        bis zum ersten return?
        bis zum zweiten return?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Oh ja, stimmt... diese Funktion habe ich noch nicht aufgerufen. Deshalb ist es mir noch garnicht aufgefallen. Danke!
          » http://www.htaccess-generator.com

          Kommentar


          • #6
            was dein foreach angeht:

            nimm mal das kommentarzeichen vor dem print_r($oberartikel); weg und schau dir an was rauskommt
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Sorry, aber da steh ich wohl auf dem Schlauch... was ist daran falsch... ???
              » http://www.htaccess-generator.com

              Kommentar


              • #8
                Original geschrieben von mrhappiness
                was dein foreach angeht:

                nimm mal das kommentarzeichen vor dem print_r($oberartikel); weg und schau dir an was rauskommt
                du hast vergessen die ausgabe hier zu posten
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  So jetzt hab ich`s aber:

                  Hier die Ausgabe von print_r($oberartikel);

                  PHP-Code:
                  Array ( 
                      [
                  oberartikel] => Array ( 
                          [
                  1001] => Array ( 
                              [
                  artikelnum] => 1001 
                              
                  [bezeichnun] => Testartikel1 
                              
                  [zusatztext] => Dies ist eine Testtext 
                              
                  [bild] => 
                              ) 
                          [
                  1002] => Array ( 
                              [
                  artikelnum] => 1002 
                              
                  [bezeichnun] => Testartikel2 
                              
                  [zusatztext] => 
                              [
                  bild] => 
                              )
                          ) 
                      [
                  unterartikel] => Array ( 
                          [
                  1001] => Array ( 
                              [
                  1001a] => Array ( 
                                  [
                  artikelnum] => 1001a 
                                  
                  [bezeichnun] => Testartikel1a 
                                  
                  [zusatztext] => Dies ist der Testtext für 1a
                                  [
                  bild] => 
                                  ) 
                              [
                  1001b] => Array ( 
                                  [
                  artikelnum] => 1001b 
                                  
                  [bezeichnun] => Testartikel1b 
                                  
                  [zusatztext] => Der Testtext für 1b 
                                  
                  [bild] => 
                                  )
                              ) 
                          [
                  1002] => Array ( 
                              [
                  1002a] => Array ( 
                                  [
                  artikelnum] => 1002a 
                                  
                  [bezeichnun] => Zweia 
                                  
                  [zusatztext] => 
                                  [
                  bild] => 
                                  ) 
                              ) 
                          )
                      ) 
                  » http://www.htaccess-generator.com

                  Kommentar


                  • #10
                    So, also ich habe bereits an der SMARTY - foreach-Schleife gebastelt.

                    Mein Problem ist, dass ich einfach nicht peile wie ich innerhalb einer foreach Schleife erneut ein Array auslesen kann, was abhängig ist von dem Array aus der ersten Schleife.

                    In der ersten foreach-Schleife übergebe ich alle Oberartikel. Innerhalb eines Oberartikels gibt es mehrere Größen. Die Größe bekomme ich aber nur heraus wenn ich die Artikelnummer des Oberartikels habe.

                    Also kann das entsprechende Array, was von Smarty in der zweiten foreach Schleife abgearbeitet wird, ja erst zur Laufzeit erstellt werden. Genau dann wenn der ersten Oberartikel ausgelesen wird. Aber dann kann doch nichts mehr an Smarty übergeben, dann bin ich ja schon im Programm drinne...

                    Hilfe...!?! Ich peils net!
                    » http://www.htaccess-generator.com

                    Kommentar


                    • #11
                      Mein Problem ist, dass ich einfach nicht peile wie ich innerhalb einer foreach Schleife erneut ein Array auslesen kann, was abhängig ist von dem Array aus der ersten Schleife.
                      mit is_array prüfen und entsprechend darauf reagieren

                      Kommentar

                      Lädt...
                      X