Seite Laden (Modular)

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

  • Seite Laden (Modular)

    Guten Abend,
    Ich arbeite grad an meiner Homepage und will eine modulare Seitennavigation bauen.... (Sry weiß nicht wie ich das nennen soll deswegen wusste ich nicht nach was ich suchen soll)

    Ich will das jede Seite von der Datenbank ausgelsen wird also nur die folgenden Sachen:
    + pagename
    + template (arbeite mit smarty)

    Dadurch soll eben ein Link generiert werden und das Link wird in der Navigation angezeigt. Wenn ich aufn Link klicke soll eben die entsprechende Template geladen werden.

    Ich hab leider keine Ahnung wie ich sowas relasieren kann/sollte.
    Vielleicht könnt ihr mir ja paar Links/Tips geben, würde mich freuen.

    mfg
    eArtis

  • #2
    wrong Forum! *move*

    Kommentar


    • #3
      Ups sry, wo hatte ich es den gepostet?

      Kommentar


      • #4
        Hi,

        Daten aus der DB auslesen, in einer Schleife die Navigation erzeugen lassen. Wo genau liegt dein Problem?

        Gruß Thomas

        Kommentar


        • #5
          Hi,
          Ja also ich will ca. sowas machen.

          Hab einen Ordner der heißt pages und dadrin sind weitere Ordner (sozusagen die Module)

          Schaut ca. so aus:

          ./pages
          ./pages/news
          ./pages/news/index.php

          Das schaut dann bei gbook auch so aus und so.

          Ich weiß leider nicht wie ich das am besten mit Funktionen lösen könnte.

          Ich hab hier ein Beispiel (Leider was ich nicht was genau die Befehle machen, zb. was macht get_param()...

          PHP-Code:
          function get_param($param$default '') {
              
          // $_GET, $_POST, $_COOKIE at once
              
          if(isset($_REQUEST[$param])) {
                  return 
          $_REQUEST[$param];
              
          // $_SESSION
              
          } elseif(isset($_SESSION[$param])) {
                  return 
          $_SESSION[$param];
              
          // Default-Wert
              
          } else {
                  return 
          $default;
              }
          }

          // Get the request
          $req get_param('req''page');

          // Does the module exists?
          if(!file_exists(DSCMS_ROOT '/module/' $req '/index.php')) {
              if(
          file_exists(DSCMS_ROOT '/module/' strtolower($req) . '/index.php')) {
                  
          $req strtolower($req);
              } else {
                  
          $req DEFAULT_MODULE;
              }
          }

          // Load it
          require_once(DSCMS_ROOT '/module/' $req '/index.php');
          $mdl = &new $req();
          // set the view-data
          $view->assign('page_name'PAGE_NAME);
          $view->assign('title'$mdl->getTitle());
          $view->assign('content'$mdl->getContent());
          $view->assign('submenu'$mdl->getSubMenu());

          // load the plugins
          load_dir('plugins', new FileIncluder());

          // display it
          $view->display($mdl->getTemplateName()); 
          Vielleicht kann mir das ja einer erklären...
          Zuletzt geändert von eArtis; 31.05.2006, 09:17.

          Kommentar


          • #6
            Das Skript ist eine Nummer zu gross für Dich, und für deine Frage auch.

            Schaust mal in ein Buch: OReilly - PHP Cookbook (2002), Kapitel 19 directories.
            Oder ins php manual, Abschnitt Functions->Directories, z.B. Funktion readdir().

            Kommentar


            • #7
              Hmm naja, aber ne Erklärung wäre trotzdem nett.

              Kommentar


              • #8
                Original geschrieben von eArtis
                Hmm naja, aber ne Erklärung wäre trotzdem nett.
                Im Abschnitt Directories des php online manuals hat es fertige Beispiele, zB auf der Seite von readdir(). scandir() ist überhaupt gerade "fertig".

                Kommentar


                • #9
                  Original geschrieben von Alrik
                  Hi,

                  Daten aus der DB auslesen, in einer Schleife die Navigation erzeugen lassen. Wo genau liegt dein Problem?

                  Gruß Thomas
                  Ich hab jetzt folgende Felder angelegt:
                  # ID
                  # PAGE_NAME
                  # PAGE_TITLE
                  # CONTENT
                  # MENULINK_NAME

                  Und habe die Felder gefüllt, wie sollte ich die Daten am besten jetzt von der DB auslesen? Die ganzen Links sollten da in etwa so auschauen
                  domain.de/page?id=1

                  Ok das hab ich schon mal verstanden aber ich würd gerne wissen wie es am besten wäre (Wie man das am besten realisieren könnte)

                  Kommentar


                  • #10
                    Sry für doppelpost
                    Also ich hab mal schnell was zusammen gebastelt....

                    pages.php
                    PHP-Code:
                        function showPage($pageID) {
                        global 
                    $db;
                        
                    $id $_GET['pageID'];
                        
                    $result $db->query("
                            SELECT
                                pageNAME as pname, pageTitle as ptitle, pageContent as pcontent
                            FROM
                                d3b_pages
                            WHERE
                                pageID = '
                    $id'
                        "
                    );
                        while(
                    $row $db->fetch_array($result)) {
                        echo 
                    "<title>".$row['pname']."</title>";
                        echo 
                    $row['pcontent'];
                        }
                        }
                        
                        
                    showPage($_GET['pageID']); 
                    Is das eine elegante Lösung? Oder könnte man das andersrum viel besser machen?

                    Kommentar


                    • #11
                      habs jetzt net mehr ganz verfolgt, aber du kannst es zumindest optimieren:

                      + LIMIT 1
                      + while()-schleife bei einem Datensatz überflüssig
                      + NIEMALS Variablen ungeprüft in die DB-Query einfügen.
                      + ID ist ne Zahl, also keine Quotes.

                      Kommentar


                      • #12
                        Original geschrieben von TobiaZ
                        habs jetzt net mehr ganz verfolgt, aber du kannst es zumindest optimieren:

                        + LIMIT 1
                        + while()-schleife bei einem Datensatz überflüssig
                        + NIEMALS Variablen ungeprüft in die DB-Query einfügen.
                        + ID ist ne Zahl, also keine Quotes.
                        Also könntest du mir noch paar Sachen erklären?

                        Auf was sollen die Variablen Überprüft werden?

                        Meinst du vll. mit ID, das ich hier:


                        PHP-Code:
                        showPage($_GET['pageID']); 
                        lieber pageName verwenden sollte?

                        Und wie include ich das ganze in die main.tpl?
                        mein index.tpl schaut so aus (wird von der index.php ausgegeben)
                        Code:
                        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
                        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
                        <head>
                        <title></title>
                        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
                        <link rel="stylesheet" type="text/css" href="./design/images/main.css" />
                        </head>
                        
                        <body>
                        
                         <div id="container">
                         
                        	{include file="header.tpl"}
                        	 <div id="main">
                        	 {include file="menu.tpl"}
                        		
                        	  <div id="content">
                        	   {include file="main.tpl"}
                        	  </div>
                        	 </div>
                        	 {include file="footer.tpl"}
                        	
                         </div>
                         
                        </body>
                        </html>
                        Es wird ja auch später nen newsscript geben und das is dann eine eigene Template.

                        mfg
                        eArtis

                        Kommentar


                        • #13
                          Auf was sollen die Variablen Überprüft werden?
                          Na auf was wohl? Auf BÖSE Inhalte natürlich. Oder besser auf freundliche (erlaubte) Inhalte Siehe SQL-Injection.

                          Meinst du vll. mit ID, das ich hier:

                          PHP:
                          showPage($_GET['pageID']);

                          lieber pageName verwenden sollte?
                          Nee, die ID heißt nicht umsonst ID!

                          Und wie include ich das ganze in die main.tpl?
                          Ich kenn deine Template-Engine nicht. Aber eigentlich sollte das nicht darein included werden. sondern vielmehr die funktion eine entsprechende "Ersetzung" in der TPL_Datei vornehmen.

                          Kommentar


                          • #14
                            Hi,
                            Ok danke dir, jetzt würde ich gerne wissen was du damit meinst:

                            Code:
                            + while()-schleife bei einem Datensatz überflüssig
                            mfg
                            eA

                            Kommentar


                            • #15
                              Guten Tag,

                              also ich hab das jetzt so gelöst

                              PHP-Code:
                              function show_page($param) {
                                global 
                              $db$smarty;
                                
                              $id $_GET['pageID'];
                                
                              $_GET['id'] = $_GET['pageID'];
                                
                              //$name = $_GET['pageName'];
                                
                              $result $db->query("
                                      SELECT
                                          pageID as id, pageNAME as pname, pageTitle as ptitle, pageContent as pcontent
                                      FROM
                                          d3b_pages
                                      WHERE
                                          pageID = '
                              $id'
                                  "
                              );
                                while(
                              $row $db->fetch_array($result)) {
                                
                              $smarty->assign('content'$row['pcontent']);
                                }
                                }
                                 
                                if (isset(
                              $_GET['pageID'])) {
                                
                              show_page($_GET['pageID']);
                                } else {
                                echo 
                              "ERRRRRRRRRRRRROOOOOOOOOOOOR";
                                }
                                
                              $smarty->display("index.tpl"); 
                              So funktoniert es wenn ich /pages.php?pageID=1 aurufe, aber wenn ich nur pages.php aufrufe wird ERROR aber nicht im Contentbereich angezeigt sondern übern header.

                              So schaut meine index.tpl aus:
                              Code:
                               <div id="container">
                               
                              	{include file="header.tpl"}
                              	 <div id="main">
                              	 {include file="menu.tpl"}
                              		
                              	  <div id="content">
                              	   {include file="main.tpl"}
                              	  </div>
                              	 </div>
                              	 {include file="footer.tpl"}
                              	
                               </div>
                              main.tpl:
                              {$content}

                              Wie kann ich das anders lösen? Und wie kann ich statt pageID, nur id verwenden ohne den Feldnamen umzuändern?

                              Danke schonmal
                              mfg
                              eA
                              Zuletzt geändert von eArtis; 02.06.2006, 12:00.

                              Kommentar

                              Lädt...
                              X