Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: CMS -> Erster Anfang

  1. #1
    minder
    Gast

    Standard CMS -> Erster Anfang

    Hi

    Ich wollt wissen ob ihr verbesserungsvorschläge für diesen Code habt:
    PHP-Code:
    <?php

        
    function load_content ()
        {
            include (
    './config/database.inc.php');
            include (
    'nofile.php');

            
    $database mysql_connect($db['host'], $db['user'], $db['pwd']);

            if(
    $database)
            {
                
    mysql_select_db($db['db']) or die(mysql_error());

                
    // Anzeige von Sektionen, Kategorien und Artikeln
                
    if (isset($_GET['sec_id']))
                {
                    
    $load['sec_id'] = $_GET['sec_id'];

                    
    // Ist eine Kategorie ausgewählt?
                    
    if (isset($_GET['cat_id']))
                    {
                        
    $load['cat_id'] = $_GET['cat_id'];

                        
    // Ist eine art_id gesetzt? Ja - Anzeige dieses Artikels
                        
    if (isset($_GET['art_id']))
                        {
                            
    $load['art_id'] = $_GET['art_id'];

                            
    $sql "SELECT sec_id, cat_id, art_id, name, w_short, w_long, writer, w_date, front, news, active FROM article WHERE art_id='".mysql_real_escape_string($load['art_id'])."'";
                            
    $result mysql_query($sql) or die(mysql_error());
                            
    $row mysql_fetch_object($result);

                            if (
    $row->name == NULL OR $row->active == 0)
                            {
                                
    not_found('Dieser Artikel wurde nicht gefunden.');
                            }
                            else
                            {
                                echo 
    '
                                    <div id="con_module">
                                        <div class="art_item">
                                            <div class="title">'
    .$row->name.'</div>
                                            <div class="intro">'
    .$row->w_short.'</div>
                                            <div class="article">'
    .$row->w_long.'</div>
                                        </div>
                                    </div>
                                '
    ;
                            }
                            
    mysql_close();
                        }
                        
    // Nein - Anzeige der Kategorie mit der Übersicht der Artikel
                        
    else
                        {
                            
    $sql "SELECT sec_id, cat_id, name, description, w_order, active FROM category WHERE cat_id='".mysql_real_escape_string($load['cat_id'])."'";
                            
    $result mysql_query($sql) or die(mysql_error());
                            
    $row mysql_fetch_object($result);

                            if (
    $row->name == NULL OR $row->active == 0)
                            {
                                
    not_found('Diese Kategorie wurde nicht gefunden.');
                            }
                            else
                            {
                                echo 
    '
                                    <div id="con_modul">
                                        <div class="about_box">
                                            <div class="title">'
    .$row->name.'</div>
                                            <div class="description">'
    .$row->description.'</div>
                                        </div>
                                        <div class="art_item">
                                '
    ;
                                    
    // Hier werden die einzelnen Artikel ausgegeben die in der Kategorie sind.
                                    
    $sql "SELECT sec_id, cat_id, art_id, name, w_short, writer, w_date, front, active FROM article WHERE cat_id='".mysql_real_escape_string($load['cat_id'])."' AND active='1' ORDER BY w_date";
                                    
    $result mysql_query($sql) or die(mysql_error());
                                    
    $a_count mysql_num_rows($result);

                                    if (
    $a_count == 0)
                                    {
                                        echo 
    '
                                            <div class="message">
                                                Keine Artikel vorhanden.
                                            </div>
                                        '
    ;
                                    }
                                    else
                                    {
                                        while(
    $row mysql_fetch_object($result))
                                        {
                                            
    $link NULL;
                                            
    $link $_SERVER['PHP_SELF'].'?sec_id='.$load['sec_id'].'&cat_id='.$load['cat_id'].'&art_id='.$row->art_id;

                                            echo 
    '
                                                <div class="item">
                                                    <div class="info">
                                                        <span class="date">'
    .$row->w_date.'</span>
                                                        <span class="autor">'
    .$row->writer.'</span>
                                                        <span class="name">'
    .$row->name.'</span>
                                                    </div>
                                                    <div class="intro">
                                                    '
    .$row->w_short.'
                                                    </div>
                                                    <div class="read_on"><a href="'
    .$link.'">Mehr...</a></div>
                                                </div>
                                            '
    ;
                                        }
                                    }
                                
    // Abschluss der div Box con_module und art_item
                                
    echo '
                                        </div>
                                    </div>
                                '
    ;
                                
    mysql_close();
                            }
                        }
                    }

                    
    // Nein - Anzeige der Sektion mit allen Kategorien
                    
    else
                    {
                        
    $sql "SELECT sec_id, name, description, w_order, active FROM section WHERE sec_id='".mysql_real_escape_string($load['sec_id'])."'";
                        
    $result mysql_query($sql) or die(mysql_error());
                        
    $row mysql_fetch_object($result);

                        if (
    $row->name == NULL or $row->active == 0)
                        {
                            
    not_found('Diese Sektion wurde nicht gefunden!');
                        }
                        else
                        {
                            echo
    '
                                <div id="con_modul">
                                    <div class="about_box">
                                        <div class="title">'
    .$row->name.'</div>
                                        <div class="description">'
    .$row->description.'</div>
                                    </div>
                                    <div class="cat_item">
                            '
    ;

                            
    // Hier werden die einzelnen Kategorien angezeigt die in der Sektion vorhanden sind
                            
    $sql "SELECT sec_id, cat_id, name, description, w_order, active FROM category WHERE sec_id='".mysql_real_escape_string($load['sec_id'])."' AND active='1' ORDER BY w_order";
                            
    $result mysql_query($sql) or die(mysql_error());
                            
    $a_count mysql_num_rows($result);

                            if (
    $a_count == 0)
                            {
                                echo 
    '<div class="message">Keine Kategorie vorhanden.</div>';
                            }
                            else
                            {
                                while(
    $row mysql_fetch_object($result))
                                {
                                    
    $link NULL;
                                    
    $link $_SERVER['PHP_SELF'].'?sec_id='.$load['sec_id'].'&cat_id='.$row->cat_id;

                                    echo 
    '
                                        <div class="item">
                                                <div class="name">
                                                    <a href="'
    .$link.'">'.$row->name.'</a>
                                                </div>
                                                <div class="description">'
                                                    
    .$row->description.
                                                
    '</div>
                                        </div>
                                    '
    ;
                                }
                            }

                            
    // Abschluss der Div boxen con_module und cat_item
                            
    echo '
                                    </div>
                                </div>
                            '
    ;
                        }
                        
    mysql_close();
                    }
                }
                
    // Wenn keine Sektion, Kategorie oder Artikel ausgewählt sind, werden alle artikel mit den Attributen front='1' und active='1' angezeigt.
                
    else
                {
                    
    $sql "SELECT id, cat_id, art_id, sec_id, name, w_short, writer, w_date FROM article WHERE front='1' AND active='1' ORDER BY w_date";
                    
    $result mysql_query($sql) or die(mysql_error());

                    
    $a_count mysql_num_rows($result);

                    echo
    '<div id="con_modul">';

                        if (
    $a_count == 0)
                        {
                            echo 
    '
                                    <div class="about_box">
                                        <div class="title">Neue Artikel</div>
                                    </div>
                                    <div class="art_item">
                                        <div class="message">Keine Beitr&auml;ge vorhanden.</div>
                                    </div>
                                '
    ;
                        }
                        else
                        {
                            echo 
    '<div class="art_item">';

                                while(
    $row mysql_fetch_object($result))
                                {
                                    
    $link NULL;
                                    
    $link $_SERVER['PHP_SELF'].'?sec_id='.$row->sec_id.'&cat_id='.$row->cat_id.'&art_id='.$row->art_id;

                                    echo 
    '
                                        <div class="item">
                                            <div class="info">
                                                <div class="date">'
    .$row->w_date.'</div>
                                                <div class="autor">'
    .$row->writer.'</div>
                                                <div class="name">'
    .$row->name.'</div>
                                            </div>
                                            <div class="intro">
                                                '
    .$row->w_short.'
                                            </div>
                                            <div class="read_on"><a href="'
    .$link.'">Mehr...</a></div>
                                        </div>
                                    '
    ;
                                }

                            echo 
    '</div>';

                            
    mysql_close();
                        }

                    echo
    '</div>';
                }
            }
        }

    ?>
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    minder
    Gast

    Standard AW: CMS -> Erster Anfang

    *push* Hat niemand was dazu zu sagen?

  3. #3
    Interessierte/r
    Registriert seit
    12.01.2009
    Ort
    nähe Trier
    Alter
    35
    Beiträge
    131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: CMS -> Erster Anfang

    Hallo,

    zu deinem Code kann ich im Moment nichts sagen.
    Bevor du dein Thema pushst, sollstest du ruhig noch etwas Geduld haben. Dein Code hat schon ein paar Zeilen mehr, da muss man schon etwas Zeit haben, wenn man sich den anschaut.

    Da ist nach einem Tag pushen doch etwas schnell.

    Gruß

    Sascha

  4. #4
    Bandit
    Gast

    Standard AW: CMS -> Erster Anfang

    PHP-Code:
    $database mysql_connect($db['host'], $db['user'], $db['pwd']); 
    Das finde ich nicht so gut gelöst. Besser ist
    PHP-Code:
    $database = @mysql_connect($db['host'], $db['user'], $db['pwd'])
           or die(
    "Connection failed"); 
    So bekommst du nicht die hässliche Fehlermeldungangezeigt, wenn mal was nicht mit dem DB-Server stimmt.
    PHP-Code:
    if ($row->name == NULL OR $row->active == 0
    Da würde ich eher auf mysql_num_rows zurückgreifen.

    $_SERVER['PHP_SELF'] würde ich austauschen gegen $_SERVER['SCRIPT_NAME']

    Und reine Geschacksache sind solche Zeilen:
    PHP-Code:
    $sql "SELECT sec_id, cat_id, name, description, w_order, active FROM category WHERE sec_id='".mysql_real_escape_string($load['sec_id'])."' AND active='1' ORDER BY w_order"
    ich meine, soetwas ist immer schwer zu lesen, ich bevorzuge
    PHP-Code:
    $sql "SELECT 
               sec_id, 
               cat_id, name, 
               description, 
               w_order, 
               active 
             FROM 
               category 
             WHERE 
               sec_id='" 
    mysql_real_escape_string($load['sec_id']) . "' 
              AND 
               active='1' 
             ORDER BY 
               w_order"

    Wenn dein gesamtest Script nur diese DB-Zugriffe macht, ok, aber ansonsten würde ich ein DB-Connect nicht in so eine Funktion packen.

  5. #5
    Interessierte/r
    Registriert seit
    12.01.2009
    Ort
    nähe Trier
    Alter
    35
    Beiträge
    131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: CMS -> Erster Anfang

    Mit welcher PHP-Version arbeitest du?
    Ich persönlich würde das ganze etwas object-orientierter programmieren. So hast du nicht so einen riesigen if-else-Block.

    Ich würde dir auch empfehlen dieses Design-Pattern zu nutzen.
    http://de.wikipedia.org/wiki/Data_Access_Object

    Zusammen mit dem Factory-Pattern ist deine Anwendung dann ziemlich flexibel, was die Persistence-Schicht angeht.
    http://de.wikipedia.org/wiki/Factory-Pattern


    Ich persönlich würde ein CMS eher in Java schreiben, da man durch ein OSGI-Framework das CMS sehr leicht erweitern könnte.

    Gruß

    Sascha

  6. #6
    minder
    Gast

    Standard AW: CMS -> Erster Anfang

    Ich pack vieleicht die Ganzen Db abfragen in eine Klasse oder so.

  7. #7
    Interessierte/r
    Registriert seit
    12.01.2009
    Ort
    nähe Trier
    Alter
    35
    Beiträge
    131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: CMS -> Erster Anfang

    Mal kurz erklärt wie du das DAO-Pattern umsetzen könntest.

    Du schreibst dir ein Interface. Dieses definiert die Methoden die du zum speichern, löschen, updaten, suchen benötigst.

    Dann schreibst du dir eine Klasse, die dieses Interface implementiert. Diese Klasse kannst du dann ausprogrammieren.

    Dann solltest du überall nur noch das Interface nutzen, wenn Sachen laden, speichern usw möchtest. Das DAO solltest du auch nur über eine Factory anlegen.

    So kannst du leicht das DAO austauschen.
    Als Beispiel:

    Du willst in eine Datenbank speichern. Schreibst die ein entsprechendes DAO. Dieses wird in deinem CMS überall mit der Factory angelegt.

    Später kommst du auf die Idee alles in XML-Dateien zu speichern. Dann brauchst du dir nur eine neue DAO-Klasse zu schreiben, das entsprechende in der Factory zu ändern und schon speichert dein ganzes CMS in einer XML-Datei. Und das ohne, dass du den restlichen Code verändert hast.

    Gruß

    Sascha


    Wenn du das ganze dann auf einer anderen Datenbank haben möchtest, brauchst du nur eine neue Klasse zu schreiben.

  8. #8
    minder
    Gast

    Standard AW: CMS -> Erster Anfang

    Noch ne Frage:

    Soll ich so machen, dass ich in der Template index.php Plazhalter habe die nacher von der normalen index.php durch die php funktion ersetzt werden oder gleich in der index.php die Template datei einbinden in der die Funktionen schon per <?php function() ?> eingebunden sind?

    PHP-Code:
    <?php

        
    include ('components/components.php');
        include (
    'config/main.inc.php');

        include (
    $main['page']);

    ?>

  9. #9
    minder
    Gast

    Standard AW: CMS -> Erster Anfang

    Hab jetzt mal mit Klassen angefangen das ganze zu strukturieren, aber jetzt geht das nicht:
    PHP-Code:
        public function read_entry($table$where)
        {
            
    $this->sql "SELECT * FROM ".$table." WHERE ".$where;

            
    $this->result mysql_query($this->sql) or die('Fehler beim Lesen der Datenbank Tabelle '.$table.'!');

            for (
    $i=0$i mysql_num_rows($this->result); $i++)
            {
                
    $this->row mysql_fetch_object($this->result);
                
                
    $this->things[i] = $this->row;
                echo 
    $this->things[i]->id// hier gibt es die Werte noch korrek an
            
    }
            
            echo 
    $this->things[0]->id// hier nicht mehr
            
    return $this->things;
        } 

  10. #10
    Interessierte/r
    Registriert seit
    12.01.2009
    Ort
    nähe Trier
    Alter
    35
    Beiträge
    131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: CMS -> Erster Anfang

    Wenn ich nachher etwas Zeit hab, werde ich mal etwas Code vorbereiten, wie man das mit so einem DAO lösen könnte.

    Gruß

    Sascha

    EDIT:
    Ich hab mal nach OR-Mappern in PHP gesucht. Ich muss sagen, die funktionieren etwas anders als ich es kenne. Ok, ich bin eigentlich Java-Programmierer. Aber die Syntax von Java und PHP5 ist fast gleich.

    Worauf ich hinaus möchte ist, dass du deine Daten als Object definierst.
    BSP:

    Code:
    class Article{
    	
    	private $id;
    	
    	private $title;
    	
    	private $description;
    	
    	private $content;
    	
    	public function getId(){
    		return $this->id;
    	}	
    	
    	public function setId($id){
    		$this->id = $id;
    	}
    	
    	public function setTitle($title){
    		$this->title = $title;
    	}
    	
    	public function getTitle(){
    		return $this->title;
    	}	
    	
    	public function setDescription($description){
    		$this->description = $description;
    	}
    	
    	public function getDescription(){
    		return $this->description;
    	}	
    	
    	public function setContent($content){
    		$this->content = $content;
    	}
    	
    	public function getContent(){
    		return $this->content;
    	}	
    		
    }
    So könnte die Klasse zu einem Artikel aussehen.

    Als OR-Mapper könntest du dann das verwenden
    http://cakephp.org/

    Das erleichtert dir das Speichern der Objecte in der Datenbank. Du musst dich eigentlich gar nicht mehr um SQL-Statements kümmern oder wie du deine Objecte zusammen bekommst.
    Es hilft die auch, deine Anwendung etwas strukurierter zu bekommen, da es das MVC-Pattern benutzt.

    Ich würde dir empfehlen das mal anzuschauen.

    Gruß

    Sascha
    Geändert von sashs (16.02.2009 um 23:06 Uhr)

Ähnliche Themen

  1. Anfang
    Von Smarty im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 01.09.2008, 14:55
  2. JavaScript - Anfang
    Von im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 04.07.2008, 21:14
  3. C++ Anfang
    Von Adlerr im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 18.06.2006, 21:50
  4. HTML - Anfang
    Von Adlerr2000 im Forum HTML & CSS Forum
    Antworten: 8
    Letzter Beitrag: 13.04.2006, 14:27
  5. von anfang an falsch
    Von mel im Forum HTML & CSS Forum
    Antworten: 19
    Letzter Beitrag: 13.12.2005, 13:16

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •