Class ( ist das so richtig) ?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Class ( ist das so richtig) ?

    PHP Code:
    <?php

    class home
    {

    ####################################################################


        
    function client_auflisten() {
            
    //global vars
            
    global $tpl;            //smarty
            
    global $objDB;            //pear
            
    global $PHP_SELF;
            global 
    $prefix;
            
            
    //Titel
            
    $interntitel "Kundenverwaltung";
            
    //Internmenü
            
    $imenu "&raquo;<a href=\"".$PHP_SELF."?action=new\" class=\"subnavlink\">Neuer Kunde</a>";
            
    //a-z- navi
            
    $az range('a''z') ;
            
    // wird für die mysql abfrage benötigt    
            
    if (isset($_POST['search'])) {
                
    $filter "WHERE `name` LIKE '%".$_POST['search']."%'";
            } elseif (isset(
    $_GET['show'])) {
                
    $filter "WHERE `name` LIKE '".$_GET['show']."%'"
            } else {
                
    $filter "";
            }
            
    //blättern
            
    $sql "SELECT 
                        * 
                    FROM 
                        "
    .$prefix."_client";
            
    $result $objDB->query($sql);        
            if(
    DB::isError($result)) {        
                die(
    $result->getMessage());    
            }
            
    $count $result->numRows();
            
    //Wenn keine Seite gewählt Site = 0
            
    if (!isset($page)) {
                
    $page 0;
            }  
            
    $sql "SELECT 
                        cid, name 
                    FROM 
                        "
    .$prefix."_client 
                    
    $filter 
                    ORDER BY 
                        `name` ASC  
                    LIMIT 
                        
    $page , 10"
            
    $result $objDB->query($sql);    
            if(
    DB::isError($result)) {        
                die(
    $result->getMessage());    
            }
            
    //ausgabe der daten!
            
    $clientdata = array();
            while(
    $row $result->fetchrow(DB_FETCHMODE_ASSOC)) {  
                
    $clientdata[] = $row;
            }
            
    //Blätterfunktion
            
    $Seiten "" ;            //auf leer setzen
            
    $pages "";            //auf leer setzen
            
    if ($page 0) {
                
    $pages .= "<a href=\"$PHP_SELF?page=0\" class=\"subnavlink\">[erste Seite]</a> ";
                
    $back $page 10;
                if (
    $back 0) {
                    
    $back 0;
                }
                
    $pages .= "<a href=\"$PHP_SELF?page=$back\" class=\"subnavlink\">[zurück]</a> ";
            }
            if(
    $count>10) {
                
    $Seiten=intval($count/10);
                if(
    $count%10) {
                    
    $Seiten++;
                }
            }
            for (
    $i=1;$i<=$Seiten;$i++) {
                
    $fwd=($i-1)*10;
                
    $pages .= "<a href=\"$PHP_SELF?page=$fwd\" class=\"subnavlink\">$i</a> ";
            }
            if(
    $page $count-10) {
                
    $fwd=$page+10;
                
    $pages .= "<a href=\"$PHP_SELF?page=$fwd\" class=\"subnavlink\">[weiter]</a> ";
                
    $fwd=$count-10;
                
    $pages .= "<a href=\"$PHP_SELF?page=$fwd\" class=\"subnavlink\">[letzte Seite]</a>";
            }

            
    //Templates aufbereiten
            
    $tpl->assign('interntitel'$interntitel);
            
    $tpl->assign('imenu'$imenu);
            
    $tpl->assign('az'$az);
            
    $tpl->assign('pages'$pages);
            
    $tpl->assign('clientdata'$clientdata);
            
    $this->call_tpl "client.tpl";
        }
    ##################################################################################    
        
        
    function client_new() {
            
    //global vars
            
    global $tpl;            //smarty
            
    global $objDB;            //pear
            
    global $PHP_SELF;        //php_self
            
    global $prefix;            //prefix    
            
            //leere var erzeugen
            
    $error "";
                
            
    //Titel
            
    $interntitel "Neuen Kunden anlegen";
            
    //Internmenü
            
    $imenu "&raquo;<a href=\"".$PHP_SELF."\" class=\"subnavlink\">Kundenverwaltung</a>";
            
    //Datenbanken füllen nur wenn abgeschickt wurde
            
    if (isset($_POST['submit'])) {
                
    //checken ob es einen kundennamen schon gibt oder keiner eingetragen wurde
                
    $sql "SELECT 
                            * 
                        FROM 
                            "
    .$prefix."_client 
                        WHERE 
                            name='"
    .$_POST['clientname']."'";
                
    $result $objDB->query($sql);    
                if(
    DB::isError($result)) {        
                    die(
    $result->getMessage());    
                }
                
    //anzahl der clients
                
    $anz $result->numRows();    
                if (!isset(
    $_POST['clientname']) OR $anz "0" ) {
                    
    $error "Sie habe keinen oder einen schon vorhandenen Kundennamen eingegeben";
                    
    //Templates aufbereiten
                    
    $tpl->assign('eroor'$eroor);
                    
    $this->call_tpl "newclient.tpl";
                    exit();        
                } else {    
                    
    $timecode time();
                    
    $sql "INSERT INTO 
                                "
    .$prefix."_client 
                            VALUES (
                                '',
                                '"
    .$_POST['clientname']."',
                                '"
    .$_POST['clientpartner']."',
                                '"
    .$_POST['clientstreet']."',
                                '
    $timecode',
                                '"
    .$_POST['clientnr']."',
                                '"
    .$_POST['clienttown']."',
                                '"
    .$_POST['clientplz']."',
                                '"
    .$_POST['clienttelefon']."',
                                '"
    .$_POST['clientfax']."',
                                '"
    .$_POST['clientisdn']."',
                                '"
    .$_POST['clientemail']."',
                                '"
    .$_POST['clienturl']."',
                                '"
    .$_POST['clientinfo']."'
                                )"
    ;
                        
    $objDB->query($sql);
                    
    //header    
                    
    header('Location: client.php?show='.$_POST['clientname'].'');
                    exit();
                }
            } else {
                
    //normle ausgabe ohne submit
                
    $tpl->assign('interntitel'$interntitel);
                
    $tpl->assign('imenu'$imenu);
                
    $tpl->assign('error'$error);
                
    $this->call_tpl "new_client.tpl";
            }
        }
    ##################################################################################


        
    function home()
        {
            if(!isset(
    $_GET['action'])){ 
                
    $_GET['action'] = 'home'
            }
            switch(
    $_GET['action']) {            
                case 
    "home":
                
    $this->client_auflisten();
                break;

                case 
    "new":
                
    $this->client_new();
                break;
                
                case 
    "edit":
                
    $this->client_edit();
                break;
            
                default:
                
    $this->client_auflisten();
                break;
            }
        }
    }
    ?>

    und der aufruf:


    PHP Code:
    <?php
    require_once('inc/global.inc.php');
    //krams
    include('client.class.php');
    $instanz = new home();
    ?>

    Ist das so "professionell" "klug" aufgebaut.
    Ist für mich noch etwas neu mit den klassen.??

    Was sollte ich ändern, was ist schon gut.
    Danke für jeden tip
    thx Mukraker

  • #2
    ich hab das jetzt nur überflogen, aber deine Methoden sind relativ gross...

    versuch mal einzelne funktionen in extra methoden auszulagern (wiederkehrende abfragen, etc...)

    verbesserungsvorschläge:
    mehr kommentieren
    PHP Code:
    /**
     * template config object
     * Class to get template configurations for the current article or the current category
     *
     * example:
     * $tplCfg = new templateConfig($idart); //get template configuration for current article
     * $exampleAr = $tplCfg->getData(20); //get all informations for container 20 for this template
     *
     * $exampleAr:
     * $exampleAr[0] => ""
     *
     * "0" specifies the CMS_VALUE set in modules
     * "" contains the configuration data
     *
     * @author Marco Jahn <marco.jahn@4fb.de>
     * @version 0.1
     * @copyright four for business 2003
     */
    class templateConfig
    {
        
    /**
         * stores configuration data
         * @var array
         */
        
    var $data = array();
        
        
    /**
         * database object
         * @var object
         */
        
    var $db
    globale variablen als referenz nutzen (im konstruktor)
    PHP Code:
    <?php
    global $cfg$lang$client;
            
    $this->cfg = &$cfg;
            
    $this->lang = &$lang;
            
    $this->client = &$client;
    ?>
    methoden können kommentiert werden!!
    PHP Code:
    <?php
    /**
         * get cms_values
         * returns false if no configuration was found
         * 
         * @param integer $idcontainer id for the container which settings should be returned
         * 
         * @return array array with the settings for each cms_value of the specified container
         */
        
    function getData ($idcontainer)
        {
            if (
    $this->data[$idcontainer])
            {
                
    $tmpVar explode("&",trim($this->data[$idcontainer],"&"));
                foreach (
    $tmpVar as $string)
                {
                    
    $tmpData explode("="$string);
                    
    $tmpArray[$tmpData[0]] = $tmpData[1];
                }
                return 
    $tmpArray;
            }
            return 
    false;
        }
    ?>
    und immer daran denken, gleich kommentieren!!!

    gruss
    Last edited by MoRtAlAn; 08-10-2003, 12:33.

    Comment


    • #3
      wie meinste das mit den globals ? irgendwie versteh ich nicht wie ich das bei mir einbauen soll
      thx Mukraker

      Comment


      • #4
        per global holst du dir das ding in die klasse und arbeitest mit dem selben objekt...

        global $tpl;

        und verwendest es so:
        $tpl->blablabla

        global $tpl; bleibt, du erzeugst nur ne kopie für die klasse (sauberer)
        global $tpl;
        $this->tpl = &$tpl;

        Comment


        • #5
          gloabl mag ich bei klassen nich so, da die klasse dann nur läuft, wenn die variable im hauptskript genau diesen bestimmten namen hat

          übergeb die variablen lieber als referenzparameter


          was das kommentieren angeht: mein prof. sagt immer was von 2:1, soll heißen doppelt so viel kommentar wie code
          Ich denke, also bin ich. - Einige sind trotzdem...

          Comment


          • #6
            japp, wobei das zu erreichen sicherlich nicht immer einfach ist, muss mich selber hin und wieder zwingen zu kommentieren

            Comment


            • #7
              naja nun weiß ich noch immer nicht was "genau" ich wie ändern soll
              thx Mukraker

              Comment

              Working...
              X