Datum formatieren in der Ausgabe

fnbalu

Grünschnabel
Hallo zusammen,

ich bin gerade dabei eine kleine Vereinshomepage zu erstellen.
WYSIWYG möchte ich nicht und Baukästen auch nicht.
Da ich noch nicht zig Homepages programmiert habe, versuche ich aus Fehlern zu lernen und den Code nach und nach zu verstehen.
Bei HTML geht das auch einigermassen, aber PHP stehe ich etwas dolle auf dem Schlauch.

Ich möchte die HP, welche dynamischen Inhalt hat, wie in dem Beispiel News, auch nicht statisch programmieren sondern später mal anderen über eine Subdomain etc die Möglichkeit geben den Inhalt zu aktualisieren.
Deshalb gleich Datenbank.

Und da ich frisch anfange direkt PDO


Nun war ich beim Newsfeld und das schmeißt mir das Datum falsch aus.
Ich habe bisher HTML und PHP gemischt.
Ist davon abzuraten? Funktionieren turt es und ist in der css auch recht einfach zu bedienen.

So ist der Iststand.

hp.jpg
Die 2 Farben wechseln immer hin und her der Übersicht halber.
Da gefällt mir das Datum nicht.
Ich lesse es direkt als Timestamp hinzufügen in die Spalte created_at.
Mir würde da 31.01.2017 vorschweben.


Im Quelltext sieht das so aus.

quellcode.jpg


Diesen String habe ich hier im Forum gefunden, kann ich das einfach 1:1 umsetzen?
Ich frage doch * ab, ist es dann egal???

Sollte ich Abstand nehmen vom durcheinander?

PHP:
$abfrage = "SELECT *, DATE_FORMAT(feldname_des_datumsfelds, '%d.%m.%Y %T Uhr') AS datum_neu FROM news";
 
Zunächst einmal die Spalten mittels * Abfragen ist wenig Professionell und maximal während der Entwicklung gut. Ich würde ansonsten die Spalten die ich will direkt ansprechen.

Für die Datumsformatierung ist es nicht ausreichend mittels * Abzufragen, da ansonsten das Datum nur unformatiert ausgegeben wird.

Für dein Beispiel würde ich den Query so aufbauen:
SQL:
SELECT info, DATE_FORMAT(created_at, '%d.%m.%Y') AS datum_neu FROM news
Durch das Date_Format wird das Datum, was im Feld created_at formatiert und zwar nach dem Format.
Eine erklärung für die Formatierung findest du hier: http://www.w3schools.com/sql/func_date_format.asp.

Anschließend kannst du im Template so das Formatierte Datum einfügen:
PHP:
<?=$row['datum_neu'] ?> erstellt.

Von welchen durcheinander willst du Abstand nehmen?
 
Danke für Deine Antwort.
Also jeden Wert, den ich auch wirklich benötige einzeln abfragen ist besser und leichter zu editieren, ja?

Das ist auch PDO oder?


Abstand meine ich von der Ausgabe über Html
Es funktioniert.
Aber man könnte doch auch mit php Echo arbeiten.

Oder bin ich da auf dem Holzweg?


Das, was Du geschrieben hast, versuche ich morgen mal umzusetzen.


Kann PHP eigentlich alte Werte verbergen?
Sprich ein Jahresplaner.
Ist der in SQL übertragen, so bräuchte er vereinfacht gesagt im Februar nicht mehr die Termine vom Januar anzeigen.
Sprich, ist der 19. Des Monats, fliegt der 18. Schon raus, so dass es schön übersichtlich ist und man den nächsten Termin direkt sieht.
Aber eins nach dem anderen
 
Bei dem einzelnen und direkten Abfragen geht es weniger um das Editieren, sondern um die Performance.
Dadurch wird der Datenbankserver nur nach den Daten abgefragt, die auch wirklich benötigt werden.

PHP kann nur Texte ausgeben wie den Quellcode für HTML, der vom Browser geparst wird.
Dabei spielt es keine Rolle, ob man die Ausgabe über den Echo Befehl im PHP macht also nach dem Beispiel:
PHP:
<?php echo $row['datum_neu']; ?>

Oder wenn man die Shorttag Variante nutzt, wie in diesen Beispiel:
PHP:
<?= $row['datum_neu'] ?>

Bis zur PHP Version 5.4 musste man da nur sicher gehen, das short_open_tag in der PHP.ini aktiviert ist, mittlerweile ist das unabhängig von der Einstellung möglich.

Mittels PHP könnte man veraltete Einträge rausfiltern, was aber unnötig kompliziert wäre, da man jeden Eintrag abfragen müsste, ob der Monat und das Jahr vor dem Heutigen Datum liegt.
Einfacher ist es die Veralteten Einträge mittels SQL auszufiltern.

Zum Beispiel mit einem Vergleich mit dem Heutigen Tag:
SQL:
SELECT info1, info2, info3, DATE_FORMAT(mydate, '%d.%m.%Y') AS date_formated
    FROM table
    WHERE mydate >= CURDATE();
 
Sodele,

das mit dem Datum habe ich etwas abgewandelt und angepasst zwecks DESC Sortierung usw.
Es klappt wunderbar, danke dafür.


Den Jahresplaner gehe ich als nächstes an, nur dann drücken noch 2 Schuhe bzw. frage ich mich nach dem richtigen Ansatz.
Zum einen ein Download.
Es ist ja eine Vereinshomepage und da soll man sich auch den Aufnahmeantrag usw herunterladen können.

1.
Die Daten dazu auch in eine Datenbank?
Gestern sah ich einen Thread darin stand etwas von dateien in einem Ordner ermitteln und dann darstellen.
Ich weiß nicht ob ich das richtig verstehe, dass PHP Ordner sortieren könnte und die Dasteien einzeln zur Verfügung stellen würde,
oder halt Tabelle. Name, Link, Größe etc
Es wäre halt immer schön die Dasteigröße anzufügen, aber das wird man wohl händisch machen müssen nehme ich an.

2.
Eine Preisschießendatenbank.
Es findet einmal im jahr ein Preisschießen statt über 2 Wochen und da werden an den 10 Tagen jeweils die Listen geändert.
Klar, wenn eine Homepage existiert, sollten diese Werte auch abrufbar sein finde ich.

Nun werden die Auswertungen seit jahren in Excel gemacht.
Eigentlich recht schön gestylt und einfach aufgeführt die Excel Geschichte mit Buttons usw, damit auch Vereinsmitglieder mit weniger
Erfahrung die Eintragungen vornehmen können.

Es liegen die Daten also in Excel vor.

Nun frage ich mich was der richtige Ansatz ist.
Fakt ist, es kann immer erst der komplette alte Inhalt gelöscht werden und dann neu angelegt werden.
- Via VBA versuchen aus Excel heraus die Datenbank zu aktualisieren?
- Mittels CSV und Batchdatei, wobei alles irgendwie DAUsicher via Doppelklick passieren müsste, das wäre ideal.

Oder gibt es noch andere Wege?
In welche Richtung sollte ich da scheun???
 
Zu 1.
Ja mit PHP kann man Verzeichnisse auslesen und daraus einen "Dateidownload" bauen.
Es gibt da sogar verschiedene Funktionen, die das realisieren.

Die erste wäre scandir.
Scandir hat den Vorteil, das man die Sortierreihenfolge bestimmen kann.
Es liefert allerdings alle Elemente des Ordners, also auch Unterordner.

Eine weitere wäre glob.
Glob ermöglicht das suchen nach Dateien nach einen Suchfilter. Außerdem kann setzen eines Flags die Ergebnisse beeinflusst werden.
Nachteil wäre das man die Sortierreihenfolge nur bedingt beeinflussen kann.

Die Dateigröße musst du nicht manuell anfügen, dies kann man ebenfalls PHP machen lassen.
Der Befehl dazu ist filesize.

Zu 2.
Ja es ist Möglich mittels VBA Daten aus der Exceltabelle in die Datenbank zu schreiben.

Falls die Datenbank eine Mysql Datenbank ist auch möglich eine CSV mittels Batchdatei in die Datenbank zu schreiben
Der Befehl, die Funktion die man dazu benötigt heisst mysqlimport.

Es ist aber auch Möglich per PHP die Exceldatei auszulesen und dann in die Datenbank zu schreiben.
Zum auslesen der Exceldatei kann man Frameworks wie z.B. PHPExcel nutzen.
Hätte den Vorteil, das man auch bestimmte Zeilen direkt ausschließen könnte, ohne das die Exceldatei vorher bereinigt wird.
Dies wäre ja z.B. interessant bei den Zeilen mit den Überschriften usw.
Außerdem müsste der Nutzer die Datei nicht erst in eine CSV umwandeln.
Außerdem könnte man so auch die Datei nach Fehlern durchsuchen, wie z.B. durch fehlerhafte Eingaben.

Bei dieser Variante wäre es auch Möglich ein Formular zum hochladen der Datei zu bauen, damit der Nutzer es etwas komfortabler hat.

Soweit erst mal von mir.
Einen schönen Abend noch!
 
Donnerwetter.
Respekt und Danke für die sehr ausführliche Antwort.

Zu 1.
Da es nur wenige Dateien sind, weniger 10 und die jeder haben darf, würde ich einfach scandir nehmen und einen Ordner Downloads erstellen.

Vorteil für mich, einfaches Austauschen der Dateien.
Man kann hinzufügen, entfernen, ändern und PHP aktualisiert die Dateigröße automatisch.

Kann man dabei auch definieren wie der angezeigte Text ist?
Oder einfach den Dateinamen passig wählen?

Zu 2.
Da gehe ich gerade in das Vereinsheim und erfahre das man überlegt die Auswertung zukünftig mit einer Software eines Bekannten zu erledigen, da es beim Update von Excel gerne mal Probleme gibt.
Werde ich mich mit dem Programmierer in Verbindung setzen ob man da was einbauen kann.
Mal sehen.

Nur dachte ich, möchte ich es so schnell wie möglich wissen
 
Was das Thema mit den Dateinamen betrifft, da ist es das Einfachste die Dateinamen einfach passen zu wählen.
Ansonsten müsstest du Irgendwo eine Liste von Texten pflegen die anstelle des Dateinamens genutzt wird.
Als Beispiel eine Textdatei wo drin steht:

Datei Beschriftungen.txt:
Code:
Dateiname1.endung=Text für die Datei
Dateiname2.endung=Text für die 2. Datei


PHP:
function getText( $filename ) {
   $HANDLE = fopen("Beschriftungen.txt", "r");
   if (FALSE === $HANDLE) {
       exit("Datei konnte nicht geöffnet werden!");
   }

   $TEXTE= array( );

   while (!feof($HANDLE)) {
      $zeile= fgets($HANDLE);
   
       if( mb_strpos($zeile, "=") !== FALSE ) {
          $BUFFER = explode("=", $zeile);
          $TEXTE[$BUFFER[0]]=$BUFFER[1];
       }
   }
   fclose($HANDLE);
   return $TEXTE[$filename];
}

getText( "Dateiname1.endung" );

Zum 2. das Erleichtert einiges, besonders wenn das Programm die Daten in eine Datenbank schreibt.
 
Kannst Du das alles aus der Hüfte schießen?

Würde da auch bei zig Dateien so funktionieren und die würden dann alle untereinander stehen?
 
Ja das war fast alles aus der Hüfte hatte mal nach der Reihenfolge der Parameter geschaut aber sonst alles frei.

Die Funktion gibt nur die Namen zur Datei zurück. Ob die nun untereinander oder nebeneinander stehen kannst du noch selber frei entscheiden.
 

Neue Beiträge

Zurück