dynamisches Datum der Seite anzeigen

diepeter

Grünschnabel
Ich blick nicht mehr durch,

habe mehrfach die Suchfunktion benutzt - das was ich fand paßte nicht so ganz zu dem was ich suche - habe damit aber schon etwas erreicht - bekomme wenigstens etwas angezeigt.

meine Webseite wird über eine index.php angezeigt, die Inhalte kommen dynamisch aus der Datenbank (pageContent) ich möchte auf der Webseite anzeigen, wann die (gerade angezeigte Seite - pageID)Seite erstellt, bzw. zuletzt bearbeitet wurde.

habe folgende Tabelle mit den Spaltenüberschriften

pageID pageAuthorID pageTitle pageContent pageCreateDate visible parentPageID displayInMenu usePageTreeMenu

zur Abfrage nutze ich folgendes Query:

$z=mysql_query("SELECT pageID,pageTitle,pageCreateDate FROM acp_content LIMIT 1"); //Auswahl ausführen und Ergebnis in Variable z speichern
while($unter=mysql_fetch_array($z)) //nun wird das Ergebnis welches in $z steht in ein Array $unter umgewandelt und so lange durchlaufen wie Zeilen die Abfrage ausgibt.
{
echo "$unter[pageID] - $unter[pageTitle] - $unter[pageCreateDate]"; //da $unter nun ein Array ist, muss es dementsprechend mit Feldbezeichungen ausgegeben werden
}
//mysql_close(); //Verbindung zum Server schließen

?>


als Ausgabeergebnis gibt er mir:

1 - Startseite - 1252331883 - wenn ich LIMIT nicht auf 1 setzte bekomme ich natürlich alle Seiten angezeigt.

wenn ich die Seite wechsel werden aber die Daten der Startseite weiter angezeigt und nicht die der Aktuellen Seite.


<b>1 </b><br />Startseite</b><br />1252331883<br />
<br />

<b>2 </b><br />Impressum</b><br />1252331883<br />
<br />

<b>3 </b><br />AGB</b><br />1252331883<br />
<br />
.....

<b>178 </b>Forum</b>1280426491<br /><br />


Wie kann ich es realisieren, das nur die Daten der angezeigten Seite sichtbar sind - steh echt auf´m Schlauch und blick nicht mehr durch.
Wahrscheinlich denke ich zu kompliziert.
 
Das was da als pageCreateDate ausgegeben wird, ist ein Zeitstempel. Das sind die seit dem 1.1.1970 vergangenen Sekunden. Du kannst das mittels date()-Funktion in ein menschen-lesbares Format umwandeln:

PHP:
echo date("Y-m-d H:i:s", $unter[pageCreateDate]);
 
hallo saftmeister,

erst mal - DANKE - für die schnelle Antwort

ich möchte, das ich wenn eine Seite aufgerufen wird, auch nur zu der Seite mit der Seiten ID das Datum angezeigt wird - wenn Du noch bock hast - schau bitte mal auf:

http://www.pro-blem.de/index_dbabfrage.php

dort werden alle seiten mit ID | Seitenname | Erstelldatum gelistet - entsprechend der Abfrage

egal, auf welchen Punkt ich klicke bleibt aber immer das Datum der Startseite in der Anzeige egal, welche pageID er im Browser anzeigt - kannst Du nachvollziehen, wenn Du auf Startseite klickst und dann durch die einzelnen links weitergehst

Gruß Peter
 
Der Code von Saftmeister ist richtig, der Fehler muss also irgendwo bei dir liegen, zeige dochmal die dein Script bis jetzt aussieht.
 
hallo timestamp,
hier der code:

<?php

$z=mysql_query("SELECT pageID,pageTitle,pageCreateDate FROM acp_content LIMIT 1"); //Auswahl ausführen und Ergebnis in Variable z speichern
while($unter=mysql_fetch_array($z)) //nun wird das Ergebnis welches in $z steht in ein Array $unter umgewandelt und so lange durchlaufen wie Zeilen die Abfrage ausgibt.
{
echo "$unter[pageID] - $unter[pageTitle] - $unter[pageCreateDate] ";
echo date("Y-m-d H:i:s", $unter[pageCreateDate]); //da $unter nun ein Array ist, muss es dementsprechend mit Feldbezeichungen ausgegeben werden
}
//mysql_close(); //Verbindung zum Server schließen

?>

ich sag´s ja, denke ich zu kompliziert wenn ich nur das Erstelldatum, bzw. datum der letzten bearbeitung pasend zu seitenID ausgeben lassen will?

Gruß Peter
 
Die Abfrage die du oben geschrieben hast enthält keinen WHERE Abschnitt, es wird also nur durch "LIMIT 1" die Ausgabe beschränkt. Wenn auf den verlinkten Seiten immer der falsche Wert angezeigt wird, müsste es also daran liegen das du in der Abfrage nicht nach der ID filterst!?

Wenn der Code formatiert wäre, wäre es einfacher zu lesen, hoffe mal nicht das ich was übersehen habe.
 
hallo tombe,
danke für deine hilfreiche Antwort!
genau an dieser Zuordnung fehlt es mir vom Verständnis her d.h. wie kann ich es gestalten, das die pageID1 auch genau den Timestamp aus der dazugehörenden Zeile bekommt oder wie kann die Filterung nach pageID umgestetzt werden?

Gruß Peter
 
Du übergibst ja bei jedem Link die pageID, dann muss die SQL Anweisung so aussehen:

PHP:
$sql = "SELECT pageID, pageTitle, pageCreateDate FROM acp_content WHERE pageID = '" .mysql_real_escape_string($_GET["pageID"]) ."' LIMIT 1";

bzw. so:

PHP:
$z=mysql_query("SELECT pageID, pageTitle, pageCreateDate FROM acp_content WHERE pageID = '" .mysql_real_escape_string($_GET["pageID"]) ."' LIMIT 1");
 
Zuletzt bearbeitet:
Übrigens, bei assoziativen arrays (mit STRINGS als index) müssen diese in Anführungszeichen stehen (ansonsten wir ein Fehler der Stufe e_notice oder warning erzeugt)
Bitte schreibe deine PHP Codes doch auch in [code=php] [/code] tags :)

Ich habe deinen Code mal ein wenig verschönert (z.b. unnötige Kommentare entfernt ;) )
PHP:
<?php
$result=mysql_query("SELECT pageID,pageTitle,pageCreateDate FROM acp_content ORDER BY pageCreateDate DESC"); //Auswahl ausführen, neueste Beiträge zuerst
while($row = mysql_fetch_array($result) ){
  echo $row['pageID'].' - '.$row['pageTitle'].' - ';
  echo date('H:i:s d.m.Y', $row['pageCreateDate']);
  echo '<br />';
}
mysql_close(); 

?>
 
@timestamp: Nein, das stimmt nicht ganz. Zuerst sucht PHP nach einer Konstanten und wenn es keine Konstante gibt, dann werden die Zeichen in einen String verwandelt.

Der Link: PHP-Performance.de
 
Zuletzt bearbeitet:
Zurück