SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 18.07.2008, 23:59:26
JuliusCaesar JuliusCaesar ist offline
Junior Member
 
Registriert seit: Jul 2007
Beiträge: 225
smarty problem

hey
ganz vorweg, ich weiß nicht ob das hier der richtige Bereich ist, falls nicht bitte verschieben ;)

ich hab mir smarty mal runtergeladen und mir die docu durchgesehen
jetzt hab ich aber ein problem:

meine index.php sieht ungefähr so aus

PHP-Code:
<?php
$klasse 
= new class();
if(
$_GET['page']==1)
{
$zeige_inhalt $klasse->seite_1();
}
elseif(
$_GET['page']==2)
{
$zeige_inhalt$klasse->seite_2();
}
?>
so nun mein Problem: ich weiß, dass man in smarty templates ein {if} und {elseif} benutzten kann, aber wie schauts mit klassen und funktionen aus?
Wie kann ich dem smarty template sagen, dass er auf Seite 1 die funktion seite_1() und auf seite 2 die funktion seite_2() aufrufen soll?


hoffe ihr könnt mir das weiterhelfen

mfg Julius
Mit Zitat antworten
  #2  
Alt 19.07.2008, 01:13:15
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: smarty problem

Hi,

also eigentlich läuft das andersrum. Du wertest alles in PHP und du entscheidest aus deinem normalem PHP-Code heraus welches Template du aufrufen willst. Mit assign übergibst du dann noch Variablen oder ganze Arrays und dann bewunderst du die Ausgabe.

Für dich würde das bedeuten:

PHP-Code:
<?php

    
// zurest musst du hier ein Objekt von Smarty erstellen

    
$klasse = new class();

    if(
$_GET['page']==1)
    { 

        
// hier bereitest du deine Daten vor die Wichtig für Seite 1 sind.

        // hier übergibst du alle relevanten Daten per assign

        // hier legst du fest welches Template du Laden willst

    
}
    elseif(
$_GET['page']==2)
    {

        
// hier bereitest du deine Daten vor die Wichtig für Seite 2 sind.

        // hier übergibst du alle relevanten Daten per assign

        // hier legst du fest welches Template du Laden willst


    
}


    
// hier lässt du das oben festgelegte template anzeigen

?>

Eine IF-Anweisung brauchst du dann wenn du zum Beispiel unter bestimmten Voraussetzungen das Design etwas anders anzeigen willst.

Smarty bietet übrigens viele Beispiele dazu.

Domi
__________________

the best way to be ready for the future is to invent it
Mit Zitat antworten
  #3  
Alt 19.07.2008, 03:55:38
JuliusCaesar JuliusCaesar ist offline
Junior Member
 
Registriert seit: Jul 2007
Beiträge: 225
AW: smarty problem

achso
wegen den funktionen
immoment hab ich alle funktionen in einer class.inc.php gespeichert
ist es sinnvoll für jede funktion ein eigenes template anzulegen oder kann man das alles in einer zentralen template datei für alle funktionen machen, wenn ja wie sag ich smarty welchem teil vom class.tpl template er laden soll?


achso, ist es möglich bestimtmen variablen automatisch zu übergeben sodass man das nicht mehr mit asign festlegen muss? (z.b $_SESSION, aber nur wenn der user eingeloggt ist...)

Geändert von JuliusCaesar (19.07.2008 um 03:57:19 Uhr)
Mit Zitat antworten
  #4  
Alt 19.07.2008, 04:00:42
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: smarty problem

Was heißt für die für jeden Funktion ein eigenes Template anlegen? Du kannst mit Templates arbeiten wie mit Frames. Somit kannst du z.B. für `das ganze` ein Template machen, dann die Navi als Template einbinden in `das ganze`, den Inhalt kannst du auch als eigenes Template machen.

Klar, ist es Sinnvoll für jede Art von Inhalt ein eigenes Template zu verwenden.

Zitat:
wie sag ich smarty welchem teil vom class.tpl template er laden soll?
Du könntest hier als einfachste Variante eine Variable mit assignen die angibt welcher Bereich ausgegeben werden soll und dann im Template mit IF Abfragen. Aber ob das so schön ist?

Domi
__________________

the best way to be ready for the future is to invent it
Mit Zitat antworten
  #5  
Alt 19.07.2008, 19:20:37
JuliusCaesar JuliusCaesar ist offline
Junior Member
 
Registriert seit: Jul 2007
Beiträge: 225
AW: smarty problem

hey
ich bin erstaunt wie gut der umstieg auf smarty geklappt hat,

bisher hab ich den funktionen zwar noch kein eigenes tempalte verpasst, dafür aber für die sachen drum herum 2 templates angefertigt

einziges Problem: umlaute werdne nicht angezeigt
hat smarty ein Problem mit UTF-8 ?
direkt am anfang wird
header("content-type: text/html; charset=utf-8"); in der index.php gesetzt
und als metatag hab ich zusätzlich
<meta http-equiv="content-type" content="text/html; charset=utf-8">

warum werden die umlaute trotzdem nicht angezeigt?

edit: habs selbst herausgefunden: die templates waren nicht als UTF-8 ohne BOM abgespeichert, jetzt gehts

danke erstmal für deine bisherige Hilfe ;)

Geändert von JuliusCaesar (19.07.2008 um 19:24:11 Uhr)
Mit Zitat antworten
  #6  
Alt 19.07.2008, 19:34:46
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: smarty problem

Sehr gern ;)

Zitat:
Zitat von JuliusCaesar Beitrag anzeigen
edit: habs selbst herausgefunden: die templates waren nicht als UTF-8 ohne BOM abgespeichert, jetzt gehts
Ah... http://de.wikipedia.org/wiki/Byte_Order_Mark und wie hast du das eingefügt?

Domi
__________________

the best way to be ready for the future is to invent it

Geändert von Domi (19.07.2008 um 19:36:56 Uhr)
Mit Zitat antworten
  #7  
Alt 19.07.2008, 19:42:50
JuliusCaesar JuliusCaesar ist offline
Junior Member
 
Registriert seit: Jul 2007
Beiträge: 225
AW: smarty problem

Zitat:
Ah... http://de.wikipedia.org/wiki/Byte_Order_Mark und wie hast du das eingefügt?
ich benutz notepad++, und unter "Formatierung" kann ich auswählen "Konvertiere zu UTF-8 ohne BOM"
das hab ich einfach ausgewählt, und dann das template nm abgespeichert, und fertig^^

aber jetzt mal ne reine php Frage:

ich möchte weiterhin in meinen funktionen die Berechnungen machen und nicht in der index.php

PHP-Code:
//aus class.inc.php
function further_stats()
    {
    
$sql "SELECT * FROM `tools_users`";
    
$query = new Query($sql);
    
    
$num_user $query->numRows();
    
    
$last_month strtotime(date("1.m.Y"));
    
    
$sql "SELECT * FROM `tools_users` WHERE UNIX_TIMESTAMP(register) > '{$last_month}'";
    
    
    
$query = new Query($sql);
    
$num_users_month $query->numRows();
    
    } 
so nun wollte ich in der index.php auf die variablen $num_user, $num_users_month zugreifen

wie krieg ich das hin?

ich hab bisher immer return benutzt, aber da hab ich imemr nur 1 Variable zurückgegeben und nicht mehere
oder funzt return auch mit mehr als 1 var?
Mit Zitat antworten
  #8  
Alt 19.07.2008, 19:48:24
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: smarty problem

return funktioniert nur mit einer Variable. Aber vielleicht sind für dich Übergabeparameter `called-by-reference` interessant? Hierbei wird direkt der Übergabeparameter verändert.

Hier, aus nem OpenBook:

PHP-Code:
<?php

   
function vtauschen($a$b)
   {
      
$temp $a;
      
$a $b;
      
$b $temp;
   }

   function 
rtauschen(&$a, &$b)
   {
      
$temp $a;
      
$a $b;
      
$b $temp;
   }


   
$x 12;   $y 18;
   echo 
"Methode 1, vorher: $x, $y <p>";
   
vtauschen($x,$y);
   echo 
"Methode 1, nachher: $x, $y <p>";

   
$x 12;   $y 18;
   echo 
"Methode 2, vorher: $x, $y <p>";
   
rtauschen($x,$y);
   echo 
"Methode 2, nachher: $x, $y <p>";

   
$x 12;   $y 18;
   echo 
"Methode 3, vorher: $x, $y <p>";
   
vtauschen(&$x,&$y);
   echo 
"Methode 3, nachher: $x, $y <p>";

?>
Zitat:
1. Der Wert der Variablen $x wird bei Aufruf der Funktion vtauschen() an die Variable $a übergeben. Der Wert der Variablen $y wird an die Variable $b übergeben. Innerhalb der Funktion vtauschen() werden $a und $b getauscht. Da aber nur die Kopien getauscht wurden, hat dies auf die Originale $x und $y keine Auswirkungen.

2. Den Unterschied sieht man im Funktionskopf function rtauschen(&$a, &$b). Die Variable $x wird bei Aufruf der Funktion rtauschen() per Verweis (Zeichen &) an die Variable $a übergeben. Die Variable $y wird per Verweis an die Variable $b übergeben. Innerhalb der Funktion werden $a und $b vertauscht. Dadurch werden auch die Originale $x und $y vertauscht.

3. Den Unterschied sieht man beim Aufruf der Funktion: vtauschen (&$x, &$y); Die Variable $x wird beim Aufruf der Funktion vtauschen() per Verweis (Zeichen &) an die Variable $a übergeben. Die Variable $y wird beim Aufruf per Verweis an die Variable $b übergeben. Innerhalb der Funktion werden $a und $b vertauscht. Dadurch werden auch die Originale $x und $y vertauscht.
Das sollte Erleuchtung bringen ;)

Domi
__________________

the best way to be ready for the future is to invent it

Geändert von Domi (19.07.2008 um 19:53:15 Uhr)
Mit Zitat antworten
  #9  
Alt 20.07.2008, 02:20:39
JuliusCaesar JuliusCaesar ist offline
Junior Member
 
Registriert seit: Jul 2007
Beiträge: 225
AW: smarty problem

Zitat:
Das sollte Erleuchtung bringen ;)
sorry, aber ich versteh nicht ganz, was da smit meinem Problem zu tun hat....
alles was diese 2 funktionen machen ist doch die variablen a und b zu vertauschen

aber in wievern hilft mir das bei Meinem problem weiter beide Variablen zurückzu erhalten?


PS: eine andere Möglichkeit wäre doch, die zurückzugebenen variablen mit einem platzhalter (z.b "..") zu verbinden zu einem einzigen string, und diesen dann in der index.php mit explode wieder aufzusplitten, wär das nicht einfacher?
Mit Zitat antworten
  #10  
Alt 20.07.2008, 13:30:54
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: smarty problem

.. da ist keine Lösung mit den Punkten..

Schau dir mal GENAU an was die Funktionen machen, achte auf das kaufmännische UND (&). So hast du ganz einfach die Möglichkeit den Wert mehrere Variablen zu Verändern.

Schaus dir nochmal genau an und meld dich obs verstanden hast.

Domi
__________________

the best way to be ready for the future is to invent it
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Smarty mentrio PHP Grundlagen 2 15.01.2006 12:53:52
smarty pfadvergabe... dirter PHP Grundlagen 0 21.10.2005 19:50:19
Problem mit Lokalisierung eines SESSION - Problems Fabian85 PHP für Fortgeschrittene und Experten 5 03.10.2005 21:17:54
problem mit smarty und Stylesheets dirter PHP Grundlagen 3 12.09.2005 13:04:50
OOP Problem: Übergabe von Variabeln Opendix PHP Grundlagen 3 04.08.2005 17:16:24


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:20:04 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt