Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: WebStyleBoard. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

Donnerstag, 12. Februar 2009, 20:30

Letztes Änderungsdatum ausgeben

Hallo Wsb'ler,

ich möchte einerseits das letzte Aktualisierungsdatum auf jeder Seite ausgeben, wirklich nur d M Y, H:m:s kein Schnickschnack wie Wochentag oder Westeuropäische Zeit....

Ich habe bisher mit einem lokalen Apache und shtml gearbeitet, funktioniert für mich ausreichend, aber online fehlen mir jetzt die über include einzulesenden Dateien für die Hauptnavi und den Footer.

Auf dem online-Server ist Apache installiert, allerdings kein ssi-modul. Auf telefonische Nachfrage beim Provider meinte man php wäre besser, toll, ja das kann ich mir auch denken. Hab die Dateien also in php umbenannt und per include die Hauptnavi und den Footer wieder drinnen. Doch das was ich unter .shtml mit

<!--#echo var="LAST_MODIFIED" --><!--#config timefmt="%d.%m.%Y, %H"-->

Ergebnis:
Thursday, 12-Feb-2009 19:28:44 Westeuropäische Normalzeit

gelöst hatte, obwohl mir damit auch zu viel überflüßiges drinstand, das bekomme ich jetzt nicht mehr hin.

Alles was ich bis jetzt gefunden habe ist für mich, einen php-analphabeten, leider absolut unverständlich.
Ich würde damit schon gerne lernen, aber ohne vernünftigen Anfang... der Tip von hier für HTML/CSS mit zuerst Jendrischek und dann Selfhtml war Klasse.

Zurück zu meiner Frage, hier kennt sicher jemand die Lösung für dieses Riesenproblem :-) und vielleicht auch Quellen im Internet, mit denen ein absoluter Einsteiger etwas anfangen kann.

Danke
Johanna

2

Freitag, 13. Februar 2009, 23:56

Hallo Johanna,

Dein Problem kannst Du folgendermaßen lösen:

PHP-Quelltext

1
2
3
4
5
<?php
$pfad explode("/",$_SERVER['PHP_SELF']);
$datei array_pop($pfad);
echo date("d.m.Y"filemtime($datei));
?>


Erläuterung:

PHP-Quelltext

1
$pfad explode("/",$_SERVER['PHP_SELF']);

Die Variable $_SERVER['PHP_SELF'] enthält den Dateinamen der aktuell aufgerufenen Datei. Liegt die Datei in einem Unterordner, wird dieser mit angegeben. Dies ist für den weiteren Verlauf aber störend. Daher verwenden wir zunächst die Funktion explode().

Diese Funktion teilt einen String anhand eines angegebenen Trennzeichens. Sie erwartet zwei Parameter: das Trennzeichen (in unserem Fall "/") und den zu trennenden String.

Mehr zu $_SERVER['PHP_SELF']

Mehr zu explode()

PHP-Quelltext

1
$datei array_pop($pfad);

Nach dem ersten Schritt enthält unsere Variable $pfad ein Array aus allen Elementen, das Teilstücken, die anhand von "/" getrennt wurden. Uns interessiert aber nur das letzte Element, nämlich der Dateiname selbst.

Mit der Funktion array_pop() speichern wir das letzte Element eines Arrays in einer eigenen Variablen. Der Vollständigkeit halber sollte erwähnt werden, dass dieses Element aus dem Array selbst dabei entfernt wird.

Mehr zu array_pop()

PHP-Quelltext

1
2
3
<?php
echo date("d.m.Y"filemtime($datei));
?>

Die Funktion date() gibt Datum und Uhrzeit eines angegebenen Zeitstempels zurück. Die Funktion erwartet zwei Parameter: die Angaben zur Formatierung und den Zeitstempel selbst. Letzterer ist optional, lässt Du ihn weg, verwendet date() die aktuellen Werte.

In diesem Beispiel bedeuten:

d = Tag mit führender Null
m = Monat mit führender Null
Y = Jahr vierstellig

Alle Formatierungsoptionen findest Du über den Link weiter unten.

Als Zeitstempel verwenden wir wiederum eine Funktion, und zwar filemtime(). Diese gibt das Datum der letzten Änderung einer angebenen Datei (einziger Parameter) aus. Hier verwenden wir den zuvor ermittelten Dateinamen.

Feddich... :approve:

Mehr zu date()

Mehr zu filemtime()

Schöne Grüße

LapisInfernalis
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

3

Samstag, 14. Februar 2009, 00:52

Hallo LapisInfernalis,

vielen Dank für deine Hilfe.

Hab das natürlich auch sofort ausprobiert.

PERFEKT

Ob ich das allerdings irgendwann einmal verstehen werde??


LG
Petra

4

Samstag, 14. Februar 2009, 18:45

Hallo WSB'ler,

lfunktioniert leider doch nicht so, wie ich es wollte :-(, :-(

ich war aber auch in der Darstellung meines Probs zu ungenau. das hier

<!--#echo var="LAST_MODIFIED" --><!--#config timefmt="%d.%m.%Y, %H"-->

war bereits in eine include enthalten. So war der vollständige Inhalt:

<li><p class="copyright"><i>Cinemino</i><span style="font-family:Lucida Sans Unicode;">®</span> GmbH<br /><i>  in Gründung</i><br />  aktualisiert <!--#echo var="LAST_MODIFIED" --><!--#config timefmt="%d.%m.%Y, %H"--><br />  optimiert für Firefox</p> </li>

heißt, die Rückmeldung zum letzten Aktualisierungsdatum kam in der Datei, die ich ansah. Aber was schreibe ich das, das seht ihr auch ohne meine Interpretation.

Jetzt ist es aber so, dass ich den neuen Code an die gleiche Stelle gesetzt habe und er bringt mir nun verständlicherweise nur das akt.-Datum der "include-Datei".

Das war es auch, was mir Kopfzerbrechen bereitet hat, denn ich weiß nicht wie ich die

filemtime($datei))

benennen soll, da es sich hierbei ja um alle 130 Dateien handelt, in denen ich das letzte akt.-Datum haben möchte (es nervt mich auf anderen HP's immer, wenn ich nicht auf den ersten Blick sehen kann, von wann der Beitrag ist, denn zu oft schon steinalt!!) deshalb will ich das anders!
Wenn ich jetzt noch wüßte, wie ich dieses kleine rote smiley gegen die Wand hier rein bekäme, dann würde das hier jetzt zu sehen sein!!!

Also bitte ich erneut um eure Unterstützung

LG
Petra

5

Samstag, 14. Februar 2009, 22:11

Hallo Petra,

das ist merkwürdig, denn eigentlich sollte eben nicht das Änderungsdatum der includierten Datei, sondern dass des Hauptscriptes erscheinen, unabhängig in welcher Datei Du den Footer includierst.

Daher sollte es auch kein Problem darstellen, dass Du viele Seiten hast, bei denen Du das Änderungsdatum anzeigen lassen willst.

Um den Fehler zu analysieren kannst Du mal bitte folgendes machen. Ändere den Code von:

PHP-Quelltext

1
2
3
$pfad explode("/",$_SERVER['PHP_SELF']);
$datei array_pop($pfad);
echo date("d.m.Y"filemtime($datei));

in

PHP-Quelltext

1
2
3
4
$pfad explode("/",$_SERVER['PHP_SELF']);
$datei array_pop($pfad);
echo "Diese Datei heißt: ".$datei."<br>";
echo date("d.m.Y"filemtime($datei));

es sollte dann immer der Dateiname der gerade aufgerufenen Datei angezeigt werden.

Um das zu verdeutlichen, habe ich Dir mal ein kleines Beispiel gebastelt:

Hier klicken um das Beispiel zu öffnen

Es handelt sich um drei Seiten, die miteinander verlinkt sind. Der Header und der Footer sind immer der gleiche.

Da die Dateien alle am gleichen Tag geändert wurden, habe ich mal die Uhrzeit mit ausgeben lassen, damit man die Änderung sehen kann.

Würde das Script das Änderungsdatum der Include-Datei anzeigen, dann wäre es auf allen drei Seiten gleich, ist es aber nicht.

Ich schreibe Dir mal zur Verdeutlichung des Beispiels den Quellcode aller Dateien aus der Demo:

index.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
<?php
$title "Das ist Seite 1";
require_once("header.php");
?>
<p>Das ist Seite 1,<br/>
<a href="index2.php">Gehe zu Seite 2</a></p>
<?php
require_once("footer.php");
?>



index2.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
<?php
$title "Das ist Seite 2";

require_once("header.php");
?>
<p>Das ist Seite 2,<br/>
<a href="index.php">Zurück zu Seite 1</a><br/>
<a href="index3.php">Gehe zu Seite 3</a></p>
<?php
require_once("footer.php");
?>



index3.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
<?php
$title "Das ist Seite 3";

require_once("header.php");
?>
<p>Das ist Seite 3,<br/>
<a href="index2.php">Zurück zu Seite 2</a></p>
<?php
require_once("footer.php");
?>



header.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title><?php echo $title?></title>
</head>

<body>
<?php
echo "<div style="background-color:#CCCCCC;">Das ist der Header</div>\n";
?>



footer.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
<?php
echo "<div style="color:#FFFFFF;background-color:#666666;">Das ist der Footer<br/>";
$pfad explode("/",$_SERVER['PHP_SELF']);
$datei array_pop($pfad);
echo "Diese Datei heißt: ".$datei."<br/>";
echo "Diese Seite wurde am ".date("d.m.Y (H:i:s)"filemtime($datei))." zuletzt geändert!</div>\n";
?>
</body>
</html>
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

6

Sonntag, 15. Februar 2009, 00:51

Hallo Lapis,

ja, beim ersten mal klappt das auch bei mir ganz toll. Ich vergleiche natürlich alle uhrzeiten also speicherzeit und wann ich es "rüberschiebe" und was beim Aufruf in der Datei steht und was dann in der Seiteninformation steht.

Dein sehr ausführliches Beispiel war sogar für mich verständlich. Doch Tatsache ist z. b., dass

http://www.cinemino.com/test/kino_malere…men_malerei.php

am 15.02.09 (heute) um 0:22 Uhr (ich hab mich nicht vertrippt) erneut lokalgespeichert und dann online gestellt wurde, lt derzeitiger Seiteninformation um 0:24:17 Uhr. Dennoch erscheint der vor-aktuelle Zeitstempel von 15.02.09 um 0.02 Uhr in der Datei. Die Veränderungen, wegen derer ich erneut gespeichert hatte um 0:22 Uhr sind da! Naja, vielleicht sehe ich das zu eng.
Vielen Dank jedenfalls noch einmal für deine Hilfe

LG
Petra

7

Sonntag, 15. Februar 2009, 09:21

Hallo Johanna,

das die Uhrzeit nicht ganz korrekt ist, kann an den Einstellungen Deines Webservers liegen. Was Du beachten musst ist, dass das Änderungsdatum der Datei nicht das Datum ist, das bei Dir auf dem Rechner angezeigt wird, sondern das Änderungsdatum des Servers.

Will heißen: In dem Moment, in dem Du die Datei auf den Server lädst, wird sie dort gespeichert. Dabei bekommt sie für den Server ein entsprechendes Änderungsdatum. Geht die "Uhr" auf dem Server aber anders, als bei Dir, können diese Differenzen zu Stande kommen.

Um dies zu testen, kannst Du folgendes machen: erstelle eine Datei namens uhr.php und schreibe folgenden Inhalt rein:

PHP-Quelltext

1
echo date("d.m.Y, H:i:s");


Wenn Du diese Datei auf dem Server ausführst, wird Dir das Datum und die Uhrzeit des Servers angezeigt. Ich habe diese Datei mal testweise auf den WSB-Files-Server geladen:

Zur Demo

Prüfe mal bitte, ob die Uhrzeit korrekt angezeigt wird.

Schöne Grüße

LapisInfernalis
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

8

Montag, 16. Februar 2009, 13:08

Hallo LapisInfernalis,

habe bemerkt, dass es an meinem lokalen Apache liegt. Der speichert jetzt komischerweise nur noch Zeiten mit korrekter voller Stunde und bei der Minuten- und Sekundenangabe 2 Minuten und die Sekunden auf und abwärts, ganz durcheinander aber immer nur Stunde x und Min 02:Sekunden rauf und aber auch wieder runter.

Da ich zwar von Webserver u.s.w. keine wirkliche Ahnung habe, ihn aber selbst "konfiguriert" habe (weil, wollte ja dazu lernen) statt xampp o.ä. zu nehmen, weiß ich natürlich trotzdem nicht wo ich sinnvoll anfangen kann diesen Fehler zu beheben. Da aber mehrere Dinge nicht funktionieren, wie php my admin, mit mysql einbinden u ä, habe ich dazu im Moment keinen Nerv.

Schade nur, denn mit der alten Funktion unter *.shtml hat das einwandfrei geklappt.
Ist aber jetzt auch egal

Ich werde deinen Rat natürlich auch noch befolgen, aber jetzt ist erst mal gut. http://www.webstyleboard.de/wsb/images/n…es/wallbash.gif
wallbash :wallbash:

Vielen Dank nochmal

LG
Petra