Seite Laden (Modular)

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

  • eArtis
    antwortet
    Ok hab das jetzt wegen der Ladezeit,.. gelöst, es lag daran:
    PHP-Code:
    //GET PageID
        
    if(isset($_GET['pageID'])){ 
          
    show_page($_GET['pageID']); 
        }
        else{
        } 
    Hab das rausgetan.

    Nun zu meiner zweiten frage, kann mir da jemand vll. tipps geben.

    Einen Kommentar schreiben:


  • eArtis
    antwortet
    Hallo,

    Ich danke euch, ich hab das ganze jetzt so gemacht:
    PHP-Code:
      #FUNCTION show_page // Hole die Pages aus der Datenbank
      
    function show_page($param) {
      global 
    $db$smarty;
      
       
    $param mysql_real_escape_string($param); //(sql-I)
       
    $result $db->query("
            SELECT
                pageTitle as title, pageContent as content
            FROM
                d3b_pages
            WHERE
                pageID = '
    $param'
            LIMIT 1
        "
    );
        
    $row $db->fetch_array($result);
        
    $db->free_result($result);
        
        
    //ganze smarty-assignment-zeugs
        
    $smarty->assign('content'$row['content']);
        
    $smarty->assign('title'$row['title']);

        
    //GET PageID
        
    if(isset($_GET['pageID'])){ 
          
    show_page($_GET['pageID']); 
        }
        else{
        }

        
    //Output index.tpl
        
    $smarty->display('index.tpl');
        
      }
    //Ende Function
      
      
      
    $pageID = isset($_GET['pageID']) ? intval($_GET['pageID']) : 1//Seite 1 wird immer angezeigt
      
    show_page($pageID); 
    Das funktoniert auch wunderbar, nur wenn ich pageID=2 aurufe habe ich ne lange Ladezeit, kann das an xampp liegen?

    Kann ich das jetzt auch eigentlich so einstellen, wenn page.php aufgerufen wird soll statt:
    Code:
    {include file="pages.tpl"}
    die main.tpl angezeigt werden:
    Code:
    {include file="main.tpl"}

    Edit:
    Xampp schmiert ab wenn cih immer pages.php=id=$id aufrufe, muss es danach immer neu starten.
    Zuletzt geändert von eArtis; 03.06.2006, 13:30.

    Einen Kommentar schreiben:


  • phoenix20
    antwortet
    unsinn:
    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']);
      }
      } 
    sinn:
    PHP-Code:
    function show_page($param) {
      global 
    $db$smarty;
       
    $param=mysql_real_escape_string($param); //(sql-I)
       
    $result $db->query("
            SELECT
                pageContent
            FROM
                d3b_pages
            WHERE
                pageID = '
    $param'
            LIMIT 1
        "
    );
        
    $row $db->fetch_array($result)) 
        
    $smarty->assign('content'$row['pageContent']);
        
    mysql_free_result($result);

    Fehlerfang mal weggelassen.
    EDIT:
    noch schutz gegen sql-I ergänzt, um nicht nach DDSIG schuld zu sein.
    Zuletzt geändert von phoenix20; 02.06.2006, 15:47.

    Einen Kommentar schreiben:


  • phoenix20
    antwortet
    Was ich empfehle? ein einfaches tutorial, leider in englisch http://www.w3schools.com/php/default.asp

    ich dachte mal es gibt sie auch in deutsch aber finde es nicht mehr.

    für den anderen poster, ich setze alles in einer query in '...' , auch Zahlen.
    genauer '\\'' . mysql_real_escape_string($x) . '\\'' . mysql muss es immer vom text
    her konvertieren, egal ob es mit oder ohne ' ist.

    So zerreisst es die query nicht, wenn mal eine zahl $x es nicht ist.
    Zuletzt geändert von phoenix20; 02.06.2006, 15:39.

    Einen Kommentar schreiben:


  • closure
    antwortet
    Original geschrieben von eArtis

    Nein, sodern int(11), why?
    Weil in deinem query einfache anführungszeichen um den wert gesetzt werden.
    Daraus folgere ich, dass es sich um eine zeichenkette handelt.
    AFAIK folgert mysql das ebenfalls. Die müssen da weg.

    Ich müsste das dann einfach so machen oder?
    PHP-Code:
    function show_page($id 1) {

    Nein, entweder so wie phoenix es geschrieben hat, oder du speicherst
    den getparameter in einer variablen namens id, der du einen default-wert
    verpasst, falls der getparameter nicht gesetzt ist.

    page_shower.php
    PHP-Code:
    function show_page($id){
    global 
    $db,$smarty;

    $result $db->query"SELECT * FROM ` bla`  WHERE `pageID` = {$id});
    if(!
    $result){
         
    //tu was
    }

    //hier kommt das ganze smarty-assignment-zeugs

    //die rekursion die hier steht nimmst du raus
    //if(isset($_GET['pageID'])){ show_page($_GET['pageID']); }else{}

    //und noch anzeigen
    $smarty->display('index.tpl');

    page.php
    PHP-Code:
    require_once 'page_shower.php';

    $id = isset($_GET['pageID']) ? intval($_GET['pageID']) : 1//oder was auch immer default ist

    //$smarty erzeugen
    //$db  erzeugen

    show_page($id); 
    greets

    Einen Kommentar schreiben:


  • eArtis
    antwortet
    Hi,
    Das hier war nur als Test
    $_GET['id'] = $_GET['pageID'];
    Das is jetzt weg.

    Dein feld pageID ist vom typ varchar/text ?
    Nein, sodern int(11), why?

    Ich müsste das dann einfach so machen oder?
    PHP-Code:
    function show_page($id 1) {

    Einen Kommentar schreiben:


  • closure
    antwortet
    Original geschrieben von eArtis


    PHP-Code:
    function show_page($param) {
      global 
    $db$smarty;
      
    $id $_GET['pageID'];
      
    $_GET['id'] = $_GET['pageID']; 
    Sehr interessant. Was soll das ?


    Original geschrieben von eArtis
    PHP-Code:
      $result $db->query("
            SELECT
                pageID as id, pageNAME as pname, pageTitle as ptitle, pageContent as pcontent
            FROM
                d3b_pages
            WHERE
                pageID = '
    $id'
        "
    ); 
    Dein feld pageID ist vom typ varchar/text ?

    Original geschrieben von eArtis
    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.
    Ist beides kein wunder. Erstens brauchst du offensichtlich die id damit
    du ein ergebnis aus der db bekommst. Wenn die pageID nicht übergeben
    wird kanns ja auch nicht klappen. Zweitens ist die ausgabe von "Errrooooor"
    nunmal vor der ausgabe der restlichen inhalte. Du hast es doch selbst
    geschrieben. Die seite wird erst ausgegeben wenn du smarty's display methode
    aufrufst.

    Du kannst doch einfach einen default-wert für pageID setzen wenn du
    keinen übergeben bekommst. Dann noch den query anpassen und
    es sollte zumindest mal laufen.

    greets

    Einen Kommentar schreiben:


  • eArtis
    antwortet
    Hm und was empfielst du du mir?

    Einen Kommentar schreiben:


  • phoenix20
    antwortet
    PHP-Code:
    if (isset($_GET['pageID'])) {
      
    show_page($_GET['pageID']);
      } else {
      
    show_page('1');

    Aber die Funktion show_page ist ein elendes CCC HHHHHHH AAAAAAAAAAAA OOOOOOOOOOOOOOOO SSSSSSSSSSSSSSSSSS. Dem Autor fehlt es am elementaren logischen Denken, bzw. Grundkurs. Ist das hier eine gratis Informatikschule eins-zu-eins?

    Einen Kommentar schreiben:


  • eArtis
    antwortet
    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.

    Einen Kommentar schreiben:


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

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

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    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.

    Einen Kommentar schreiben:


  • eArtis
    antwortet
    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

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    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.

    Einen Kommentar schreiben:


  • eArtis
    antwortet
    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?

    Einen Kommentar schreiben:

Lädt...
X