php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.11.2004, 15:26  
Gast
 
Beiträge: n/a
Standard Daten einer Textdatenbank nach Datum sortieren

Hallo,

ich versuche mich grad mit PHP anzufreunden und hab mir eines der vielen freien Scripte umgebaut (Ganz nach dem Motto Learning-by-doing). Es soll Veranstaltungstermine anzeigen. Das funzt bisher wohl auch aber ich möchte die Daten, die aus einer Textdatei kommen, nach Veranstaltungsdatum sortieren lassen und da komme ich irgendwie nicht weiter.

Beispiel:
Datum: 1.1.2005 | Name: Mein Name | Thema: Nase bohren für Anfänger | Kommentar: Einsteigerseminar

Derzeit werden die Daten einfach von oben nach unten in das Textfile geschrieben und auch so wieder ausgelesen und angezeigt.

Hier mal der Code der Ausgabeseite:
Code:
<?php 
$datenbank = "termine.dat"; 
$datei = fopen($datenbank,"r"); 
$total=fread($datei,filesize($datenbank)); 
$eintraege = explode("\n", $total); 
$anzahl_eintraege = count($eintraege)-2; 

for ($i = 0; $i <= $anzahl_eintraege; $i++) { 
   $entry = explode("^", $eintraege[$i]); 

$termin=$entry[1];
$name=$entry[2]; 
$thema=$entry[3]; 
$kommentar=$entry[4];

echo "Hier folgt dann die HTML-Ausgabe"
Die Daten im Textfile sehen so aus:
^1.3.2005^Hitcher^Testthema3^Kommentar
^1.2.2005^Hitcher^Testthema2^Kommentar
^1.1.2005^Hitcher^Testthema1^Kommentar

Die Ausgabe soll nun in aufsteigender Reihenfolge angezeigt werden
(Termin Januar, Termin Februar, Termin März usw.)

Geht das mit einer Textdatenbank überhaupt oder funktioniert da nur über eine SQL Geschichte - mit MySql kenne ich mich allerdings noch nicht aus ;-(

Ich hoffe das jemand eine Idee hat

Gruß
Hitcher
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.11.2004, 15:42  
Gast
 
Beiträge: n/a
Standard

funktionieren tut das schon ..du musst nur zwischen schleife - ausgabe einen schritt ein-
bauen, weil du erst mal die kompletten daten in ein array einlesen musst, das sortieren
musst und dann das sortierte array ausgeben kannst .. php.net/sort & konsorten sollten
dir da helfen.
 
Alt 19.11.2004, 16:17  
Gast
 
Beiträge: n/a
Standard

Hmm, ich tret dabei noch ein wenig auf der Stelle. Ich hab mir das Handbuch bei PHP.net mal angeschaut aber irgendwie steckt in den Erklärungen wieder soviel Fachchinesisch, das ich nachher genausoviel wusste wie vorher.

Kannst du das mit dem Array mal anhand eines Beispiels erläutern?

Bin mit dem Script schon ne Weile zugange, mit viel herumprobieren hab ich es schon mal so weit, dass die Ausgabe so angepasst ist, wie ich es im Endeffekt haben will nur bei der sortiererei hab ich nen Klemmer.

Bin im Bereich PHP noch ziemlicher Newbie - aber ich arbeite dran es zu ändern

Gruß
Hitcher
 
Alt 19.11.2004, 16:42  
Gast
 
Beiträge: n/a
Standard

vermutlich musst du das Datum zum sortieren in sortierfähiges Format umwandeln, also

1.7.2004 in 20040701 (YYYYMMDD)

und ggf die Uhrzeit hinten dran hängen (HHMMSS). Dann hast du einen
einfachen String der richtig mach Datum sortiert. Evlt gibts da in PHP
eine spezielle Funktion, die auch andere Datumsformen richtig sortiert
(so wie date in Datenbanken, aber sowas kenne ich nicht).
 
Alt 19.11.2004, 22:22  
Gast
 
Beiträge: n/a
Standard

Auweia, das wird glaub ich doch ein etwas komplizierterer Eingriff
Wie krieg ich das denn umgewandelt?
 
Alt 20.11.2004, 08:00  
Gast
 
Beiträge: n/a
Standard

ist eher etwas Gefummel als wirklich kompliziert glaub ich.

Die Schritte wären

1) das alte Datum in die einzelnen Variablen ($year, $month, ...) zerlegen (mit preg_match, oder split ( "." ist Seperator).

" dann mit sprintf den neuen String aufbauen.
$sort_date = sprintf ("%04d%02d ... ", $year, $month, ..)
Es geht ja im wesentlichen die richtige Anzahl führender Nullen
einzufügen, das geht in sprintf mit %0<n>d (n = anzahl der digits)

evlt gehts auch eleganter, aber so würde ich das machen.
 
Alt 20.11.2004, 09:55  
Gast
 
Beiträge: n/a
Standard Re: Daten einer Textdatenbank nach Datum sortieren

Zitat:
Zitat von Hitcher
Geht das mit einer Textdatenbank überhaupt oder funktioniert da nur über eine SQL Geschichte - mit MySql kenne ich mich allerdings noch nicht aus ;-(
1. das ist keine Textdatenbank sondern bestenfalls ein Textfile.
2. ist es gerade für Anfänger leichter, sich besser grundlegend mit SQL zu beschäftigen als mühsam die Funktionalität eines Datenbankmanagementsystems mit PHP nachbasteln zu wollen.

Du scheiterst nämlich spätestens dann grundlegend, wenn zeitgleich 2 User auf das Teil schreibenderweise zugreifen wollen. Dann überschreibt User 2 das, was User 1 eingegeben hat, weil das Script nix von den Veränderungen weiß.
 
Alt 20.11.2004, 10:39  
Gast
 
Beiträge: n/a
Standard

Zitat:
2. ist es gerade für Anfänger leichter, sich besser grundlegend mit SQL zu beschäftigen als mühsam die Funktionalität eines Datenbankmanagementsystems mit PHP nachbasteln zu wollen.
@ meikel
Hmm, dazu muss ich mich nicht nur mit dem erlernen von PHP, sondern gleichzeitig SQL befassen und ich wäre froh, wenn ich erstmal verstehe wie ich das eine oder andere mit PHP zum laufen bekomme.

Vielleicht stelle ich es mir aber auch nur zu kompliziert vor - keine Ahnung.

Zitat:
... wenn zeitgleich 2 User auf das Teil schreibenderweise zugreifen wollen.
Das mag in dem Fall dann wohl stimmen, in meinem Fall greift aber immer nur einer schreibend auf das Textfile zu - nämlich ich. Und so kann ich das erstmal außer acht lassen

Ich versuche mich grad an der erstellung des Array und dem sortieren.
Soweit ist das nun:
Code:
<?php 
$datenbank = "termine.dat"; 
$datei = fopen($datenbank,"r"); 
$total=fread($datei,filesize($datenbank)); 
$eintraege = explode("\n", $total); 
$anzahl_eintraege = count($eintraege)-2; 

for ($i = 0; $i <= $anzahl_eintraege; $i++) { 
   $entry = explode("^", $eintraege[$i]); 

// Daten in ein Array übernehmen (hoffe das ist richtig so)
$daten=array("$entry[1]","$entry[2]", "$entry[3]", "$entry[4]");

// Daten nach entry[1] sortieren - aber da haperts schon wieder ;-(

$termin=$entry[1]; 
$name=$entry[2]; 
$thema=$entry[3]; 
$kommentar=$entry[4];
Ich dachte mir, wenn ich die Daten in das Array schreiben soll, muss ich die Variablen für die einzelnen Datensätze dazu verwenden, also entry[1] z.B.

Wenn ich das mit dem Array nun richtig verstanden hab, muss ich jetzt also irgendwie nach entry[1] sortieren lassen - aber da klemmt es dann wieder. Muss ich nun erst das Datum in eine zusammenhängende Zahl umwandeln und wenn ja, wie?

Auwei - Fragen über Fragen - sorry wenn das seeehr Newbie ist aber ich komme allein mit Büchern nicht weiter - oft fallen mir Fragen ein, die ich dann niemandem stellen kann - seufz.

Wenn das hier aber zu weit führt, dann sagt es - ich bin keinem böse wenn er keine Zeit/Lust hat einem blutigen Anfänger zu erklären wie das alles funzt.

Ich will´s gern verstehen aber wie gesagt allein krieg ich das nicht auf die Reihe ;-(

Gruß
Hitcher
 
Alt 20.11.2004, 10:53  
Gast
 
Beiträge: n/a
Standard

ja, du must einen String bausen aus dem Datum, so das er durch einfache Stringsortierung richtig nach dem Datum sortiert. Ich hab oben ne Anleitung geschrieben wie das geht und wie es aussehen muss. Du muss dann das $sort_date (z.B. 20040701 für 1.7.04) (s.o.) in das Arrar schreiben und danach dann sortieren.
 
Alt 20.11.2004, 11:07  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Hitcher
Zitat:
2. ist es gerade für Anfänger leichter, sich besser grundlegend mit SQL zu beschäftigen als mühsam die Funktionalität eines Datenbankmanagementsystems mit PHP nachbasteln zu wollen.
Hmm, dazu muss ich mich nicht nur mit dem erlernen von PHP, sondern gleichzeitig SQL befassen und ich wäre froh, wenn ich erstmal verstehe wie ich das eine oder andere mit PHP zum laufen bekomme.
Mehrere unterschiedliche Themen zu lernen, ist eigentlich kein Problem. Sowas erlebt jeder Schüler jeden Tag.

Zitat:
Vielleicht stelle ich es mir aber auch nur zu kompliziert vor - keine Ahnung.
Es ist definitiv kompliziert, die Daten aus einem Textfile zeilenweise zu lesen, in Arrays zu speichern und diese dann wunschgemäß zu sortieren. Es ist in Deinem Falle sogar noch komplizierter, weil Du die Daten in einem für eine Sortierung ungeeigneten Format abgelegt hast.

Wäre es SQL, wäre es kinderleicht:
Code:
SELECT spal,ten,lis,te FROM tabelle WHERE dies=das ORDER BY datum DESC
Ich persönlich wäre viel zu faul, stattdessen 100 und mehr Zeilen Code zu tippern, um diese Funktionalität mit PHP nachzubasteln.

Zitat:
Zitat:
... wenn zeitgleich 2 User auf das Teil schreibenderweise zugreifen wollen.
Das mag in dem Fall dann wohl stimmen, in meinem Fall greift aber immer nur einer schreibend auf das Textfile zu - nämlich ich. Und so kann ich das erstmal außer acht lassen
Dazu das:
Zitat:
Zitat von altes Bastelbuch
Nichts ist langlebiger als ein Provisorium.
Zitat:
Zitat von Murphys Gesetz
Wenn bei einer beliebigen mechanischen Einrichtung etwas falsch gemacht werden kann, so wird sich immer einer finden, der dies auch tut.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
sortieren nach datum, daten vor 1.1.1970 moose Datenbanken 2 21.07.2008 10:50
[JS] Divs nach Datum sortieren cycap JavaScript, Ajax und mehr 24 16.07.2008 18:48
Daten aus XML sortieren GSJLink HTML, Usability und Barrierefreiheit 13 09.12.2007 18:24
Nach Datum sortieren zoro Datenbanken 9 28.11.2007 14:00
MYSQL daten bei der ausgabe sortieren DrWeb Datenbanken 2 29.07.2006 10:09
Daten sortieren? Smily0412 Datenbanken 3 10.03.2006 21:09
Sortieren nach Datum flual2000 PHP Tipps 2005-2 2 18.10.2005 10:41
Daten nach Datum sortiert ausgeben LordAvalon Datenbanken 11 11.10.2005 16:24
Daten aus MYSQL nach Datum filtern Datenbanken 3 19.09.2005 16:09
Daten aus File sortieren Simon9990 PHP Tipps 2005-2 12 26.07.2005 09:06
[Erledigt] Datum RICHTIG sortieren Datenbanken 8 14.05.2005 22:52
News nach Datum sortieren maximus PHP Tipps 2005 2 10.02.2005 15:33
Sortieren nach Datum Datenbanken 2 30.01.2005 11:21
Daten sortieren ? nsane PHP Tipps 2004-2 3 29.12.2004 10:44
Daten sortieren und zusammenfassen ? PHP Tipps 2004-2 2 14.12.2004 20:08

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php textdatei nach datum sortieren, dateien nach datum sortieren, textdatenbank mit javascript, datenbank nach datum sortieren, textdatenbank beispiel, datenbank datum sortieren, termine textdatei php, daten aus db nach datum sortiert ausgeben, sql nach datum sortieren, datum aus textdatei sortieren, php xml sortierfähiges datumsformat, php textdatei explode sortieren, php nach datum sortieren textdatei, php text nach datum ordnen, datensatz nach datum sortieren in r, textdatenbank datumsformat php, textdatenbank nächsten termin, textdatenbank nach datum, termine textdatenbank, sortierfähige datenbank

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.