• 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

OP
Y

Yehudi

Guru
Ich habe gerade was gefunden:
http://de2.php.net/mysql

Da habe ich den Code mal angepasst, so wie Du es mir erklärt hast:

Code:
<?php
/* Verbindung aufbauen, auswählen einer Datenbank */
$link = mysql_connect("192.16.3.1", "yehudi", "mysql_password")
    or die("Keine Verbindung möglich: " . mysql_error());
echo "Verbindung zum Datenbankserver erfolgreich";
mysql_select_db("joomla") or die("Auswahl der Datenbank fehlgeschlagen");

/* ausführen einer SQL Anfrage */ 
$query = "SELECT created FROM jos_content WHERE id = created";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());

/* Ausgabe der Ergebnisse in HTML */
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($line as $col_value) {
        echo "\t\t<td>$col_value</td>\n";
    }
    echo "\t</tr>\n";
}
echo "</table>\n";

/* Freigeben des Resultsets */
mysql_free_result($result);

/* schliessen der Verbinung */
mysql_close($link);
?>

Und ich bekomme am Ende zwar nicht ein Datum raus, aber im Browser wird an der Stelle
Verbindung zum Datenbankserver erfolgreich
angezeigt.

Die Zeile
Code:
"SELECT created FROM jos_content WHERE id = created"
funktioniert weder mit x noch mit $x. Frag mich nicht warum.

Danach weiß ich erst mal nicht mehr weiter.
 

nbkr

Guru
Das $x musst Du irgendwo mit der SeitenID füllen. Ich kennen Mambo/Jomola nicht, aber ich vermute irgendwie kann es Dir die SeitenID zur Verfügung stellen. Das baust Du dann ein:

Code:
$x = $seiten_id_von_jomola
 

beleg

Member
Gut, versuchen wir es mal anders.
Wenn Du z.B. die Abfrage
Code:
SELECT created FROM jos_content WHERE id = 1
an die Datenbank sendest, wird sie Dir als Ergebnis das Datum des Datensatzes mit der id 1 zurückgeben. Du kannst diese Abfrage ja so mal ausprobieren, sofern schon was in der Tabelle drinsteht.
Da man aber nun auch die anderen Datensätze anschauen möchte übergibt man mit dem Seitenaufruf eine Zahl, die dann in die Variable $x übergeben wird.
So sehen z.B. auch die URL hier im Linuxclub aus. Jeder Thread hat eine Nummer, anhand derer der Inhalt des Threads aus einer Datenbank geholt wird.

Um die Abfrage nochmal zu erklären:
"SELECT created" fragt das Feld 'created' ab
"FROM jos_content" aus der Tabelle 'jos_content'
"WHERE id = 1" und zwar aus dem Datensatz, in dem der Wert des Feldes 'id' gleich 1 ist.
 
OP
Y

Yehudi

Guru
Ich habe was:

Code:
<?php
global $database;

$id = mosGetParam( $_REQUEST, 'id' );

if ($id) {
    $query = "SELECT created FROM #__content WHERE id='$id'";
    $database->setQuery( $query );
    $database->loadObject( $row );
    echo "<div class='small'>" . $row->created . "</div>";
}
?>

wie bekomme ich da noch die beiden Sachen noch reingefriemelt :
"d. F Y"
setlocale("LC_TIME","de_DE")
 

beleg

Member
Code:
setlocale("LC_TIME","de_DE")
kannst du am Anfang des Scripts einbauen.
Und dann das Ergebnis Deiner Abfrage, welches ja ein Datum ist formatierst Du mit
Code:
$datumausgabe = strftime("%d.%B %Y",$datum)
wobei für $datum dann das ermittelte Datum eingesetzt wird.
Dann noch an der Stelle, wo das Datum dann angezeigt werden soll ein
Code:
echo $datumausgabe;
und dann sollte es das sein.
 

beleg

Member
Äh noch mal eine kleine Ergänzung, nachdem ich nochmal auf Deinen Code geschaut habe.
Code:
<?php
global $database;
setlocale("LC_TIME","de_DE");

$id = mosGetParam( $_REQUEST, 'id' );

if ($id) {
    $query = "SELECT created FROM #__content WHERE id='$id'";
    $database->setQuery( $query );
    $database->loadObject( $row );
    echo "<div class='small'>" . strftime("%d.%B %Y",$row->created) . "</div>";
}
?>
So könnte das ganze aussehen.
 
OP
Y

Yehudi

Guru
Hallo beleg,

irgendwie scheint die Datenbankabfrage auf der Art anders zu funktionieren, als bei dem Code den Du vorgeschlagen hast, welcher ja auch auf der Basis von http://de2.php.net/mysql beruht, die Aufteilung ist ja sehr ähnlich. Sobald ich aber hier die SELECT Zeile einfüge gibt es dort einen Fehler.
Der letzten Code stammt aus einem entpackten Mambo-Module. Das Mambo-Modul kann in Joomla/Mambo unentpackt geladen werden, und plaziert sich automatisch an eine bestimmte Stelle. Diese Stelle war über dem Mainmenü, das entspricht nicht meinen Vorstellungen, und so habe ich den Code aus dem Module über einen Editor in das index.php vom template an der von mir vorgesehenen Stelle gepackt.
Sobal ich aber
Code:
setlocale("LC_TIME","de_DE");
einsetze, wird eine Fehler meldung von einer Seite im Dokument angezeigt, die ist aber völlig blödsinnig, denn in der Zeile die angezeigt wird ist allles i.O. Das Datum wird angezeigt. Bei der anderen Zeile wird dann der 1. January 1970 angezeigt.

Danke Dir für Deine ganze Mühe.
 

beleg

Member
Keine Ursache.
Aber ich hab's auch noch nicht aufgegeben. Einfacher wäre es natürlich, wenn ich die entsprechenden Dateien komplett sehen könnte. Ich muß mal sehen, vielleicht such ich mir in den nächsten Tagen mal Joomla und guck mir das an.
 
OP
Y

Yehudi

Guru
Hallo beleg,

hier http://www.joomla.com/ gibt es Joomla, ich sehe gerade schon die Version 1.0.7 muss wohl mal updaten.
Hier habe ich eine Menge an Links zusammengetragen:
http://www.linux-club.de/viewtopic.php?p=288973#288973
die alle mit dem Thema zumindest in meiner Konfiguration zu tun haben. Cero hat dort auch einige wichtige Links und Aussagen zu dem Thema gemacht.
 

beleg

Member
Dann lade ich's mir gleich mal runter. Kann aber bis zum Wochenende dauern, bis ich mir das ansehe.
 
OP
Y

Yehudi

Guru
Das ist kein Problem, das created Date läuft uns nicht weg. :wink:

Ich bastel eh noch an anderen Teilen der dynamischen Seite rum.

An dem Code habe ich noch was geändert:

Code:
<div class='small'>
ist zu
Code:
<div class='moddate'>
geworden, da ich dann damit über CSS an dem Datum Einstellungen fürs Aussehen machen kann.
 
OP
Y

Yehudi

Guru
Ich habe den Code jetzt noch mal geändert:

Code:
<?php
global $database;
  
$id = mosGetParam( $_REQUEST, 'id' );
  
if ($id) {
     $query = "SELECT created FROM #__content WHERE id='$id'";
     $database->setQuery( $query );
     $database->loadObject( $row );
     echo "<div class='moddate'>" . date("d. F Y",$row->created) . "</div>";
}
?>

Date habe ich auf Grund von:
http://selfphp.de/funktionsreferenz/datums_und_zeit_funktionen/date.php
benutzt.

Angezeigt wird aber immer noch:

Und ich habe so gerade eben erfolgreich das Update von Joomla 1.0.7 durchgeführt.
 

beleg

Member
Das bedeutet, daß das Script kein gültiges Datum zum Umformatieren hat. Die Datumsfunktion erwartet eine Zeit angabe als Unix-Timestamp. Probier also folgendes:
Code:
date("d. F Y",strtotime($row->created))
Dabei wird zuerst der String $row->created durch strtotime() in das Timestamp-Format gebracht. Wenn kein gültiges Format zum Formatieren da ist, wird der Timestamp auf Null gesetzt und das ist dann der 1.1.1970.
 
OP
Y

Yehudi

Guru
Joop das wars Danke. Fehlt eigentlich nur noch die lokale Ausgabe dafür, ich mag ja gar nicht fragen.
Und danke, dass Du nicht die Hoffnung aufgegeben hast.
 
OP
Y

Yehudi

Guru
Hallo beleg,

Ich habe jetzt noch im Netz eine Zeile gefunden, zum formatieren des Datums:

Code:
$mosConfig_locale = de_DE.ISO_8859-1;

Diese habe ich an die Stelle gestzt, wo Du
Code:
setlocale("LC_TIME","de_DE");
hingesetzt hattest. Insgesammt sieht das ganze dann so aus:

Code:
<?php
global $database;
$mosConfig_locale = de_DE.ISO_8859-1;

$id = mosGetParam( $_REQUEST, 'id' );

if ($id) {
    $query = "SELECT created FROM #__content WHERE id='$id'";
    $database->setQuery( $query );
    $database->loadObject( $row );
    echo "<div class='moddate'>" . strftime("%d.%B %Y",strtotime($row->created)) . "</div>";
}
?>

Und funktioniert, zumindest auf meinem Server. Ohne Deine Hilfe hätte ich das nicht hin bekommen. Über google habe ich immer nur diese ganzen Schnitzel gefunden. Und durch Dich ist mir der Aufbau klar geworden.

Danke Dir nochmals.
 

beleg

Member
Freut mich, daß ich Dir helfen konnte. Und wenn das ganze fertig ist, sag Bescheid, damit man sich's auch angucken kann.
 
OP
Y

Yehudi

Guru
klar mach ich, wird aber noch dauern, da ich das ja gegen meine statische website austauschen werde. Und da muss wirklich vorher alles stimmen.
 
Oben