• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] - Einzelnes Datum aus der Datenbank auslesen

Yehudi

Guru
Joomla/mambo haben das Problem, das sie das Datum im Artikel darstellen, und nicht getrennt von diesem. Ich möchte aber das Erstellungsdatum an einer anderen Stelle haben. So dass ich nur einen Php-Code an der Stelle setzen muss, und von Geisterhand, das Erstellungsdatum dort erscheint.

Edit: 27.01.06 gelöst
 
OP
Y

Yehudi

Guru
Sowas ähnliches suche ich, nur, dass das ganze nicht statisch ist, sondern sich immer auf das Erstellungsdatum des aufgerufenen Dokumentes bezieht.

Code:
<?php 
   $create_date = '23.01.2006'; 
   echo $create_date; 
?>

Nach dieser List:
http://www.phpbox.de/php_befehle/date.php

Liste der Platzhalter:
a - amerik. Tageszeit, klein geschrieben ("am" oder "pm")
A - amerik. Tageszeit, groß geschrieben ("AM" oder "PM")
d - Tag des Monats, zwei Ziffern mit führenden Null (z.B. "05")
j - Tag des Monats ohne führenden Null ("1" bis "31")
D - Tag der Woche mit drei Buchstaben in englisch (z.B. "Mon")
l (kleines L) - Tag der Woche, ausgeschrieben ("Monday")
w - Tag der Woche, Ausgabe als Zahl ("0" für Sonntag)
F - Ausgeschriebener Monat (z.B. "December")
h - Stunde im 12-Stunden-Format mit führender Null ("01" bis "12")
H - Stunde im 24-Stunden-Format mit führender Null ("00" bis "23")
g - Stunde im 12-Stunden-Format ohne führende Null ("1" bis "12")
G - Stunde im 24-Stunden-Format ohne führende Null ("0" bis "23")
i - Minuten ("00" bis "59") L - Flag für Schalttjahr ("0" oder "1")
m - Monat mit führender Null ("01" bis "12)
n - Monat ohne führende Null ("1" bis "12)
M - Monat mit drei Buchstaben (z.B. "Dec")
s - Sekunden ("00" bis "59")
S - Suffix der engl. Ordnungszahlen (z. B. "st","nd")
t - Anzahl der Tage des Monats ("28" bis "31")
U - Sekunden seit Beginn der Unix-Epoche
Y - Jahr, vierstellige Ausgabe (z.B. "2001")
y - Jahr, zweistellige Ausgabe (z.B. "01")
z - Tag im Jahr ("0" bis "365")
Z - Offset der Zeitzone gegenüber GMT in Minuten (z.B. "-43 200")
B - Swatch-Internet-Zeit
I - Sommerzeit ("1" bei Sommerzeit, sonst "0")
L - Schaltjahr ("1" bei Schaltjahr, sonst "0")
T - Zeitzoneneinstellung des Servers (z.B. "CET" für "Central European Time")

müßte die Ausgabe d- F-Y sein.
 

nbkr

Guru
In welcher Form ist das Datum in der Datenbank gespeichert und ist es eine MySQL Datenbank? Die date() Funktion von PHP formatiert die Ausgabe nur. Die Infos wann das Dokument erstellt wurde liefert sie nicht. Wenn Du folgendes reinhämmerst:
Code:
<?php
echo date('d-F-Y');
?>
wird auf der Seite immer das aktuelle Datum stehen.
 
OP
Y

Yehudi

Guru
Hallo nbkr,

Wie Du ja bereits mitbekommen hast benutze ich Joomla und Mambo, und habe da auch nach meiner html-Website mit ein Template erstellt, leider gibt es doch einige Sachen, die ich dann noch anpassen muß. Da führt dann kein Weg an php vorbei.

Ich habe jetzt einen Code von hier http://de2.php.net/manual/de/function.fileatime.php
umgeändert:
<?php
// Gibt z.B. aus: somefile.txt was last modified: 23. Januar 2006

$filename = 'somefile.txt';
if (file_exists($filename)) {
echo "$filename was created: " . date ("d. F Y", filemtime($filename));
}
?>

Nur wie ich das sehe, müßen wohl die Daten aus der Dokumente, die sich im MySQL befinden, in somefile.text rein. :?:
Wenn ich über meinen
http://localhost/phpMyAdmin/
gehe, kann ich dort jos_content aufrufen, dort habe ich alle Artikel als Tabelle angezeigt, und dort finde ich unter der Spalte created jeweils die Erstellungsdaten. Demnach müßte ich doch dort auch das Datum auslesen können, und über php für jedes Dokument entsprechend darstellen können.

Wahrscheinlich müßte ich für die Anzeige des Januars noch eine Umcodierung von Englische ins Deutsche haben.
 

beleg

Member
Wird das Datum des Textes aus der datenbank denn schon irgendwo angezeigt? Wenn ja, muß es nur an einer anderen Stelle platziert werden.
Das Umformatieren des Datums ins deutschsprachige Format geht mit
Code:
setlocale("LC_TIME","de_DE")
Dann musst Du allerdings statt
Code:
date()
die Funktion
Code:
strftime()
benutzen.
 
OP
Y

Yehudi

Guru
So wie ich das bisher verstanden habe, müßte ich eine Datenbankabfrage machen die Liste befindet sich unter
Code:
jos_content
und dort finde ich folgendes vor:
SQL-Befehl:
SELECT *
FROM `jos_content`
ORDER BY `created` ASC
LIMIT 0 , 30

Wie ich allerdings jetzt eine Datenbankabfrage in den php-code einfüge, ist bis jetzt für mich noch unklar.
 

beleg

Member
Zum Beispiel so:
Code:
$server = "Servername";
$user = "Username";
$pass = "Passwort";
$name = "Datenbankname";

$db = mysql_connect($server,$user,$pass);
$sql = "SELECT * FROM `jos_content` ORDER BY `created` ASC LIMIT 0 , 30";
$res = mysql_db_query($name,$sql,$db);
$zeile = mysql_fetch_array($res);

Mit dieser Abfrage holst Du aber alle Datensätze aus der Tabelle nach Datum geordnet.
 
OP
Y

Yehudi

Guru
Müßte ich vielleicht eine weitere Datei z.B. datum.php anlegen, dort die Abfrage reinlegen, und auf diese "Tabelle" von dem eigentlichen Dokument zugreifen, und die dem Dokument entsprechende Datumszeile raussuchen, oder ist dass zu kompliziert gedacht?
 

beleg

Member
Erstell einfach eine andere Abfrage. Z.B:
Code:
SELECT created FROM `jos_content`WHERE text_id = x
So ähnlich.
 
OP
Y

Yehudi

Guru
An der Stelle taucht jetzt bei der Abfrage mit dem Browser das auf:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/Joomla-mambo/templates/yehudi_de/index.php on line 218
Ich habe das ganze

Bei servername habe ich die ip des Rechners angegeben, über die kann ich den Rechner auch per localhost aufrufen.

Ansonsten kann ich mir keinen Fehler vorstellen.
 
OP
Y

Yehudi

Guru
Das gleiche Ergebnis. In Joomla habe ich dafür auch die 192.168.3.1 eingegeben. Sonst würde ich die Seite nicht von einem anderen Rechner aufrufen können. Bei dem Passwort für die Datenbank habe ich keins eingegeben, weil das ja erst mal offline läuft, und hier nur zum testen ist. Aus dem Grunde habe ich es weggelassen. Da müssen ja die Anführungszeichen bleiben oder?

Was ich aber vermute, ist dass der Datenbankabruf nicht funktioniert, weil ich das auf dem auf der index.php des Template gemacht habe.
 

beleg

Member
Nein, irgendwie stimmt die Abfrage so nicht. Was hast Du denn als Bedingung hinter WHERE eingesetzt?
 
OP
Y

Yehudi

Guru
Ich hatte das so übernommen:


Code:
SELECT created FROM `jos_content`WHERE text_id = x

ich habe das schon als Bedinnung gesehen.

In der Datenbank hatte ich sowas noch gefunden:
Code:
SELECT *FROM `jos_content`  ORDER BY `created` ASC

Ist aber das gleicher Ergebnis. created habe ich auch noch mal mit ` versehen, und vor WHERE noch eine Pause gemacht. Das ganze statt text_id nur mit id und `.
 
OP
Y

Yehudi

Guru
Wenn ich die Zeile
Code:
$zeile = mysql_fetch_array($res);
weglasse, kommt die Fehlermeldung nicht mehr.
Natürlich kommt dann auch kein Datum.
 

beleg

Member
Du musst hinter dem WHERE natürlich die entsprechende Bedingung setzen. Also text_id hatte ich einfach mal geschrieben quasi als Platzhalter für das Feld. Da nimmst Du halt den Namen des Schlüsselfeldes. Und das x steht für den Wert in dem Feld. Wie heißt denn das Feld in der Tabelle, das als Primary Key dient.
 
OP
Y

Yehudi

Guru
Die Nummern für den Text stehen in der Spalte
Code:
id
und das Datum welches ich haben will steht in
Code:
created
.
Dann würde die Zeile so aussehen:

Code:
SELECT created FROM `jos_content` WHERE `id` = x

wenn es sich darauf bezieht, dass es nach id sucht, die der Artikel hat, um daraus das Datum zu erstellen. In dem Fall habe ich beim zweiten Versuch created mit ` versehen.

Keine Änderung.


Wenn es aber nur das Datum raussucht:

Code:
SELECT created FROM `jos_content` WHERE `created` = x

Ergibt aber auch keine Änderung.
 

beleg

Member
Gut jetzt musst Du für das x noch einen entsprechenden Wert (Eine Zahl) einsetzen. Das ist genau die ID für die Du das Datum raussuchst.
Das ganze sieht dann so aus:
Code:
$SQL = "SELECT created FROM `jos_content` WHERE `id` = $x";
wobei Du den Wert für das $x dann noch an das Script übergeben musst. Ich kenn mich mit Joomla/Mambo nicht aus, aber ich denke wenn man einen Text aufruft, wird dafür eine ID an das Script übergeben, die dann auch für diese Abfrage verwendet werden kann.
 
OP
Y

Yehudi

Guru
Was Joomla/Mambo angeht, ist es einfach nur irgend ein "Rahmen" als grafische Darstellung, in der man relativ schnell eine dynamische Website gestallten kann, ohne überhaupt von html, Java-Script, css, php, MySQL und Apache Ahnung zu haben. Installation dauert gerade mal 2 Minuten.
Wenn aber dann so jemand wie ich ankommt, und sein Design, welches ich auf meiner statischen html Seite seit ca. 4 Jahren habe, dann bleibt nichts anderes übrig, als das was Joomla/Mambo nicht kann irgendwie per Hand zusammenzuschrauben, und da sollte dann alles möglich sein, was mit php 4.x und dem entsprechenden MySQL möglich ist.

Dieser $x Wert ist dann die Variable sozusagen. Ich hatte schon überlegt, ob es an den ` liegen kann, und diese durch ' ersetzt werden müssten. Im phpAdmin zeigt er die Zeichen so wie bei Dir an, im Quelltext hatte ich bisher immer nur ' gesehen.
 

beleg

Member
Ja das $x ist die Variable.
Im Prinzip ist es so, daß Du in der Tabelle in der Datenbank mindestens drei Felder hast, für die ID, das Datum und den Text selbst (wenn ich das jetzt alles richtig verstanden habe). Die ID ist der Schlüsselwert und identifiziert die Datensätze in der Tabelle eindeutig. Wenn man jetzt also eine Seite aufruft und dabei diese ID als Wert übermittelt, wird anhand dieser ID der richtige Text rausgesucht und angezeigt.
 
Oben