php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.11.2008, 12:47  
Erfahrener Benutzer
 
Registriert seit: 04.09.2008
Beiträge: 297
martl666 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Smarty Assign mit klassen

Hallo,

ich baue zur Zeit an meiner neuen internet seite. Jetzt komm ich aber an folgendem problem nicht mehr weiter.
Ich habe ein klasse die alles steuert und ein paar templates und die index.php.
PHP-Code:
<?    
class PageOutput
{
    protected 
$_current_page 'news';
    
    private static 
$_allowed_pages = array( 
        
'news''live''media''guest''contact''impressum''links''shop''bio''streetteam' 
    
); 
    
    public function 
__construct$page )
    {
        if ( 
in_array$pageself::getAllowedPages() ) )
            
$this->_current_page $page;
    }
    
    public function 
get()
    {        
        
$smarty $this->_getSmarty();
        
$smarty->assign('auswahl'$this->_getContent());
        
$smarty->assign('title'$this->_current_page);        
        return 
$smarty->fetch('index.tpl');
    }
    
    public function 
display()
    {
        echo 
$this->get();
    }
    
    public static function 
getAllowedPages()
    {
        return 
self::$_allowed_pages;
    }
    
    protected function 
_getContent()
    {
        
$smarty $this->_getSmarty();
        return 
$smarty->fetch("{$this->_current_page}.tpl");
    }
    
    protected function 
_getSmarty()
    {            
        static 
$smarty null;
        if ( 
is_null$smarty ) )
            
$smarty = new Smarty_Extended();            
            
        
$smarty->clear_all_assign();
        
        return 
$smarty;
    }
}
?>
index.php
PHP-Code:
<?
require_once 'classes/PageOutput.php';

$page_output = new PageOutputpreg_replace"/[^a-z0-9_]/i"''$_GET['page'] ) );
$page_output->display();

?>
mein problem ist es jetzt. Ich hab in einer datenbank die daten stehen die ich brauche. Das auslesen funktionert auch schon super nur wie kann ich sie jetzt dem richtigen Template zuweisen?

Hier noch ein bsp Template:
PHP-Code:
?>
<table cellspacing="0" cellpadding="0" width="350">
    <tbody>
        <tr>
            <th>
                Date
            </th>
            <th>
                Event
            </th>
            <th>
                Location
            </th>
            <th>
                Info
            </th>
        </tr>
        <tr align="center">
            <td>
                {$date2}
            </td>
            <td>
                {$event}
            </td>
            <td>
                {$location}
            </td>
            <td>
                {$info}
            </td>            
        </tr>            
    </tbody>
</table> 
Ich weis einfach nicht genau wo hin mit der sql abfrage und wie dann das ganze assignen.
martl666 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.11.2008, 13:58  
Erfahrener Benutzer
 
Benutzerbild von zwerg
 
Registriert seit: 12.08.2005
Beiträge: 437
zwerg
Standard

PHP-Code:
    public function get()
    {        
        
$smarty $this->_getSmarty();
        
$smarty->assign('auswahl'$this->_getContent());
        
$smarty->assign('title'$this->_current_page);
        
$smarty->assign('data2',$sql_query);
        return 
$smarty->fetch('index.tpl');
    } 
zwerg ist offline  
Alt 04.11.2008, 14:06  
Erfahrener Benutzer
 
Registriert seit: 04.09.2008
Beiträge: 297
martl666 befindet sich auf einem aufstrebenden Ast
Standard

Ok, aber wo sollte ich die sql abfrage hinpacken soll die in eine extra datei oder wie sollte ich das angehen?
martl666 ist offline  
Alt 04.11.2008, 15:34  
Erfahrener Benutzer
 
Registriert seit: 04.09.2008
Beiträge: 297
martl666 befindet sich auf einem aufstrebenden Ast
Standard

Ich hab das ganze jetzt mit einer extra datei gemacht. Nur leider wird es mir nicht in dem gewünschten div angezeigt sondern am seitenanfang.
Das mach ich jetzt in der Funktion

PHP-Code:
public function get()
    {
        
$smarty $this->_getSmarty();
        
$smarty->assign('auswahl'$this->_getContent());
        
$smarty->assign('title'$this->_current_page);
        
$smarty->assign('date2', include '/data/apache/sql.php' );
        return 
$smarty->fetch('index.tpl');
    } 
was mach ich falsch warum wird es am seitenanfang ausgegeben und nicht in dem div wie gewünscht?
martl666 ist offline  
Alt 04.11.2008, 15:51  
Erfahrener Benutzer
 
Benutzerbild von zwerg
 
Registriert seit: 12.08.2005
Beiträge: 437
zwerg
Standard

Entweder du löst das ganze mit einer externen Klasse:
PHP-Code:
  $smarty->assign('date2',MySqlClass::GetDate()); 
Oder du musst den Query an die Funktion übergeben oder ihn direkt in die Funktion packen.
zwerg ist offline  
Alt 04.11.2008, 15:57  
Erfahrener Benutzer
 
Registriert seit: 04.09.2008
Beiträge: 297
martl666 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Oder du musst den Query an die Funktion übergeben oder ihn direkt in die Funktion packen.
Und wie soll ich das machen? Ich hab keine idee hierzu.
martl666 ist offline  
Alt 04.11.2008, 16:26  
Erfahrener Benutzer
 
Benutzerbild von zwerg
 
Registriert seit: 12.08.2005
Beiträge: 437
zwerg
Standard

PHP-Code:
$sql mysql_query("SELECT date2 FROM table");
$row mysql_fetch_array($sql);

$smarty->assign('date2',$row['date2']); 
zwerg ist offline  
Alt 04.11.2008, 16:40  
Erfahrener Benutzer
 
Registriert seit: 04.09.2008
Beiträge: 297
martl666 befindet sich auf einem aufstrebenden Ast
Standard

keinen plan warum. aber es will einfach nicht. Vielleicht sollt ich jetzt einfach was anderes machen. Ich bring es einfach nicht in mein live.tpl
Auf index.tpl hab ich es zum laufen gebracht aber nicht auf live! Also jetzt weis ich wirklich nicht mehr was ich machen kann. Vielleicht morgen nochmal versuchen. Aber schonmal danke bis jetzt
martl666 ist offline  
Alt 19.11.2008, 16:09  
Erfahrener Benutzer
 
Registriert seit: 04.09.2008
Beiträge: 297
martl666 befindet sich auf einem aufstrebenden Ast
Standard

Ich hab mal wieder ein problem mit dem zuweisen.
Ich haber mehrer klassen und templates:

hier die hauptklasse:

PHP-Code:
<?    
class PageOutput
{
    protected 
$_current_page 'news';
    
    private static 
$_allowed_pages = array( 
        
'news''live''media''guest''contact''impressum''links''shop''bio''streetteam' 
    
);    
    
    public function 
__construct$page )
    {
        if ( 
in_array$pageself::getAllowedPages() ) )
            
$this->_current_page $page;
    }    
    
    public function 
get()
    {        
        
$smarty $this->_getSmarty();                              $smarty->assign('auswahl',$this->_getContent());                
        
$smarty->assign('title'$this->_current_page);
        return 
$smarty->fetch('index.tpl');
    }
    
    public function 
display()
    {                
           echo 
$this->get();
    }
    
    public static function 
getAllowedPages()
    {
        return 
self::$_allowed_pages;
    }
    
    protected function 
_getContent()
    {
        
$smarty $this->_getSmarty();
        
        
$classname "PageOutput" ucfirst$this->_current_page );        
        if ( !
class_exists$classnametrue ) )
            require_once 
"/data/tenside/classes/{$classname}.php";
            
        if ( !
class_exists$classname ) )
            throw 
Exception"Klasse existiert nicht: {$classname}" );
        if ( 
method_exists$classname'handle' ) )
            
call_user_func( array( $classname'handle' ) );
        
$assigns call_user_func( array( $classname'getAssignments' ) );
            
        
$smarty->assign$assigns );
        
        return 
$smarty->fetch("{$this->_current_page}.tpl");
    }
    
    protected function 
_getSmarty()
    {    
        require 
'/data/smarty/Smarty.class.php';        
        static 
$smarty null;
        if ( 
is_null$smarty ) )
            
$smarty = new Smarty();            
            
        
$smarty->clear_all_assign();
        
        return 
$smarty;
    }    
}
?>
jetzt die Streetseite:

PHP-Code:
class PageOutputStreetteam 
{    
    protected static 
$error = array();
    
    public static function 
getAssignments()
    {                            
    }    
    
    public static function 
handle()    
    {        
        if (
$_POST['check'] == 'on')
            {                        
                
$firstname     self::firstname();
                
$lastname      self::lastname();
                
$street        self::street();
                
$zip        self::zip();
                
$city        self::city();
                
$birthday    self::birthday();
                
$phone        self::phone();
                
$email        self::email();                
            
                if (
self::$error && !empty ($_POST['check']))
                {                    
                    return;                        
                }
                
                require_once 
'/data/classes/mysql.php';
                
mysql::connect('xxxx');            
                
                
$insert "INSERT INTO streetteam (firstname, lastname, street, zip, city, birthday, phone, email, time)
                            VALUES ('{$firstname}', '{$lastname}','{$street}', '{$zip}',
                            '{$city}', '$birthday', '{$phone}', '{$email}', NOW())"
;
                                        
                
mysql_query($insert);            
    
                if ( !
headers_sent() )
                    
header'Location: /tenside/index.php?page=news' );
                else
                    echo 
'<script type="text/javascript">
                          window.location = "/tenside/index.php?page=news";
                          </script>'
;    
            }                
    }
    
    
// Methoden für die Verarbeitung der einzelnen Felder
    
    
protected static function firstname()
    {
        if (!empty (
$_POST['firstname'] ) )
        {
            
$firstname trim ($_POST['firstname']);
            
$firstname preg_replace"/[^a-zA-Z_]/i"''$_POST['firstname'] );
            
$firstname ucfirst($firstname);            
            return 
$firstname;            
        }
        else
        {            
            
self::$error[] = 'Fehler Sie haben keinen Vornamen eingetragen.';                                                        
        }        
    } 
so ich hab jetzt auch noch ein template für street. In diesem kann man sich für unser streetteam anmelden. Jetzt ist es aber so ich möcht natürlich schauen das wenn jemand ein eingabe vergesehen hat er nicht nochmal alles eingeben muss sondern nur das vergessene. Hier das template:

PHP-Code:
<b>STREETTEAM-Anmeldung</b>
<
form action="index.php" method="post">
    <
fieldset>
        <
legend><b>Daten</b></legend>
            <
table align="left">
                <
tr>
                    <
td colspan="2">
                        <
b>Name:<hr></b>
                    </
td>                
                    <
td>                                                    
                    </
td>
                </
tr>
                <
tr>
                    <
td width="100">
                        
Vorname:<small>*</small>                    
                    </
td>
                    <
td>
                         <
input type="text" size="30" name="firstname" value="{$firstname}">{$firstname}
                    </
td>
                </
tr>
                <
tr>
                    <
td>
                        
Nachname:<small>*</small>
                    </
td>
                    <
td>
                         <
input type="text" size="30" name="lastname">
                    </
td>
                </
tr>
                <
tr>
                    <
td colspan="2">
                        <
h4>Adresse:<hr></h4>
                    </
td>                
                    <
td>                                                    
                    </
td>
                </
tr>
                <
tr>
                    <
td>
                        
Strasse:<small>*</small>
                    </
td>
                    <
td>
                         <
input type="text" size="30" name="street">
                    </
td>
                </
tr>
                <
tr>
                    <
td>
                        
PLZ/Ort:<small>*</small>
                    </
td>
                    <
td>
                         <
input type="text" size="10" name="zip">&nbsp;<input type="text" size="30" name="city">
                    </
td>
                </
tr>
                <
td colspan="2">
                        <
h4>Infos:<hr></h4>
                    </
td>                
                    <
td>                                                    
                    </
td>
                </
tr>
                <
tr>
                    <
td>
                        
Geb.-Datum:<small>*</small>
                    </
td>
                    <
td>
                        <
input type="text" size="5" maxlength="2" name="day">&nbsp;<input type="text" size="5" maxlength="2" name="month">&nbsp;<input type="text" size="10" maxlength="4" name="year">
                    </
td>
                </
tr>
                <
tr>
                    <
td>
                        
Telefon:
                    </
td>
                    <
td>
                         <
input type="text" size="30" name="phone">
                    </
td>
                </
tr>
                <
tr>
                    <
td>
                        
Email-Adresse:<small>*</small>
                    </
td>
                    <
td>
                         <
input type="text" size="30" name="email">
                    </
td>
                </
tr>
                <
tr>
                    <
td>
                        &
nbsp;
                    </
td>
                </
tr>
                <
tr>
                    <
td>
                        * 
Pflichtfelder
                    
</td>
                </
tr>
                <
tr>
                    <
td>                    
                    </
td>
                    <
td align="center">
                        <
input type="reset" name="member" value="Eingabe löschen">
                        <
input type="hidden" name="page" value="streetteam">
                        <
input type="hidden" name="check" value="on">
                        <
input type="submit" name="member" value="Streetteam-Member">
                    </
td>
                </
tr>                    
            </
table>        
    </
fieldset>
</
form
vielleicht kann mir da jemand einen kleinen tip geben. Ich dachte ich muss es in der hautpklasse machen nur leider komm ich noch nicht ganz dahinter wie das gehen soll.

martl666 ist offline  
Alt 19.11.2008, 18:11  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo,

Zitat:
vielleicht kann mir da jemand einen kleinen tip geben. Ich dachte ich muss es in der hautpklasse machen nur leider komm ich noch nicht ganz dahinter wie das gehen soll.
Spätestens ab dem dritten Template, das du zusammenbasteln möchtest hätte ich dir eine andere Vorgehensweise empfohlen, aber da du jetzt schon danach fragst...

Aus der bisherigen Dokumentation entnehme ich, dass du für verschiedene Bereiche eigene Funktionen implementieren möchtest. Diese Vorgehensweise erfordert ein Tool, das dieses auch unterstützt. Wichtig ist an dieser Stelle auch, dass die gemeinsam genutzten Komponenten ausgelagert und wiederverwendet werden können.

Falls es es das ist, was du suchst, sag mir Bescheid, dann kann ich dir helfen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Smarty + MySQL = immer falsche Ausgabe m0use` PHP Tipps 2006 44 21.11.2008 20:30
smarty assign problem martl666 PHP Tipps 2008 57 29.10.2008 16:03
Was ist Aufgabe des Templates (Smarty), was nicht? agrajag PHP Tipps 2007 8 24.02.2007 13:19
Smarty => 1ste allgemeine Verunsicherung Canni PHP Tipps 2006 7 10.10.2006 17:56
Smarty + Oop Problem Komandar PHP Tipps 2006 5 25.07.2006 14:36
Smarty + Oop Komandar PHP Tipps 2006 17 30.05.2006 10:30
Fragen zu Klassen Kein Genie PHP Tipps 2006 3 08.05.2006 11:25
Sessions an includete Klassen übergeben Dr_Enquinox PHP Tipps 2006 4 29.04.2006 10:25
mit html klassen definieren und in php ausgeben PHP-Fortgeschrittene 4 16.01.2006 10:31
Smarty Error Simon9990 PHP Tipps 2005-2 8 07.07.2005 09:34
klassen und methoden anderer klassen in methoden.... PHP Tipps 2005 17 25.05.2005 09:46
[Erledigt] includepathproblem pear blockiert smarty und umgekehrt PHP Tipps 2005 1 08.05.2005 18:46
Klassen PHP Tipps 2005 5 09.04.2005 18:51
Klassen in Klassen verwenden PHP Tipps 2005 5 23.02.2005 14:08

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
assign call_user_func smarty, $smarty- assign, smarty if (self::, smarty public, ucfirst in smarty, wie komme ich auf assign, $smarty->assign und php code, smarty assign return static, smarty fetch, smarty eingaben ohne get, smarty static, smarty->fetch javascript, $smarty->assign(\'input_firstname\', class, smarty \public static\, smarty \{insert assign=\

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:13 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum