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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
18.07.2008, 22:59:26
|
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
|
19.07.2008, 00:13:15
|
|
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
|
19.07.2008, 02:55:38
|
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 02:57:19 Uhr)
|
19.07.2008, 03:00:42
|
|
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
|
19.07.2008, 18:20:37
|
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 18:24:11 Uhr)
|
19.07.2008, 18:34:46
|
|
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
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 18:36:56 Uhr)
|
19.07.2008, 18:42:50
|
Junior Member
|
|
Registriert seit: Jul 2007
Beiträge: 225
|
|
AW: smarty problem
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?
|
19.07.2008, 18:48:24
|
|
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 18:53:15 Uhr)
|
20.07.2008, 01:20:39
|
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?
|
20.07.2008, 12:30:54
|
|
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
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:33:13 Uhr.
|