Einträge durch Wochentag ausgeben lassen

Alles, was PHP betrifft, kann hier besprochen werden.

Einträge durch Wochentag ausgeben lassen

Postby Echo » 11. June 2010 13:27

Hallo,
entschuldigt den nichts-sagenden Threadtitel, aber ich wusste nicht, wie ich es kurz formulieren soll ;D

Also ich habe eine MySQL Datenbank, in welche die Einträge mit einem Timestamp eingetragen werden.
Jetzt möchte ich gerne eine Suchfunktion, wo man alle Berichte anzeigen lassen kann, die z.B. Freitag geschrieben wurden. In das Suchfeld tippt man also Freitag ein und durch den Timestamp der Einträge sollen alle Einträge ausgegeben werden, die freitags verfasst wurden.

Derzeit fällt mir leider überhaupt kein Lösungsweg ein und wollte hier einfach mal nach ein paar Denkanstößen fragen. Eine weitere Datenbankspalte anlegen, wo der Wochentag direkt eingespeichert wird, ginge natürlich auch, möchte ich aber wennmöglich vermeiden.

Vielen Dank
Echo
Last edited by Echo on 16. June 2010 16:25, edited 1 time in total.
Echo
 
Posts: 8
Joined: 07. June 2010 13:19

Re: Einträge durch Timestamp-Wochentag ausgeben

Postby Stepke-DSL » 11. June 2010 13:32

Hallo,

Warum hast du die Spalte, in der du das Datum speicherst nicht als DATETIME angelegt?
Da kannst du dann mit den MySQL-Datumsfunktionen ganz einfach nach Wochentagen suchen...

MfG Stepke
Stepke-DSL
 
Posts: 313
Joined: 12. July 2007 16:08
Operating System: Win XP Pro SP3 + SuSe Linux

Re: Einträge durch Timestamp-Wochentag ausgeben

Postby Altrea » 11. June 2010 13:39

Man müsste noch unterscheiden, ob der Timestamp ein UNIX-Timestamp oder eine Spalte vom MySQL-Datentyp Timestamp ist.
Letztere ist ein DateTime und müsste demnach mit den MySQL Date Funktionen behandelt werden können.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Einträge durch Timestamp-Wochentag ausgeben

Postby Echo » 11. June 2010 14:53

Stepke-DSL wrote:Hallo,

Warum hast du die Spalte, in der du das Datum speicherst nicht als DATETIME angelegt?
Da kannst du dann mit den MySQL-Datumsfunktionen ganz einfach nach Wochentagen suchen...

MfG Stepke

Weil nicht immer das aktuelle Datum angegeben wird, sondern es auch möglich sein soll, dass ein Benutzer das Datum von z.B. gestern angeben kann. Desweiteren bin ich mit DATETIME nicht so vertraut wie mit dem Timestamp und möchte daher lieber zweiteres nutzen ;)

Altrea wrote:Man müsste noch unterscheiden, ob der Timestamp ein UNIX-Timestamp oder eine Spalte vom MySQL-Datentyp Timestamp ist.
Letztere ist ein DateTime und müsste demnach mit den MySQL Date Funktionen behandelt werden können.

Der Timestamp ist ein UNIX-Timestamp, welcher erst mittels PHP date "generiert" wird und danach in die DB gespeichert.

LG
Echo
Echo
 
Posts: 8
Joined: 07. June 2010 13:19

Re: Einträge durch Timestamp-Wochentag ausgeben

Postby Stepke-DSL » 11. June 2010 15:04

Echo wrote:
Stepke-DSL wrote:Hallo,

Warum hast du die Spalte, in der du das Datum speicherst nicht als DATETIME angelegt?
Da kannst du dann mit den MySQL-Datumsfunktionen ganz einfach nach Wochentagen suchen...

MfG Stepke

Weil nicht immer das aktuelle Datum angegeben wird, sondern es auch möglich sein soll, dass ein Benutzer das Datum von z.B. gestern angeben kann.


Das kannst du doch machen.
In einer Datetime Spalte kannst du jedes beliebige Datum speichern (solange es das Datum auch gibt...).

MfG Stepke
Stepke-DSL
 
Posts: 313
Joined: 12. July 2007 16:08
Operating System: Win XP Pro SP3 + SuSe Linux

Re: Einträge durch Timestamp-Wochentag ausgeben

Postby Echo » 11. June 2010 15:40

Stepke-DSL wrote:
Echo wrote:
Stepke-DSL wrote:Hallo,

Warum hast du die Spalte, in der du das Datum speicherst nicht als DATETIME angelegt?
Da kannst du dann mit den MySQL-Datumsfunktionen ganz einfach nach Wochentagen suchen...

MfG Stepke

Weil nicht immer das aktuelle Datum angegeben wird, sondern es auch möglich sein soll, dass ein Benutzer das Datum von z.B. gestern angeben kann.


Das kannst du doch machen.
In einer Datetime Spalte kannst du jedes beliebige Datum speichern (solange es das Datum auch gibt...).

MfG Stepke


Wie gesagt, ich würde es dennoch gerne mit dem Timestamp machen, sofern dies möglich ist :> sollte das überhaupt nicht funktionieren, würde ich auf das DATETIME umsteigen ;)
Echo
 
Posts: 8
Joined: 07. June 2010 13:19

Re: Einträge durch Timestamp-Wochentag ausgeben

Postby Knight1 » 11. June 2010 16:42

Wie wäre es mit einer der Datums- und Zeitfunktionen von MySQL?
Die können soweit ich weiß mit allen in MySQL gültigen Datums- und Zeittypen umgehen.
MySQL-Manual


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Re: Einträge durch Timestamp-Wochentag ausgeben

Postby Nobbie » 12. June 2010 11:14

Echo wrote:[Wie gesagt, ich würde es dennoch gerne mit dem Timestamp machen, sofern dies möglich ist :> sollte das überhaupt nicht funktionieren, würde ich auf das DATETIME umsteigen ;)


"Gehen" tut das - aber es ist sicherlich ein Designfehler und macht die Abfrage langsam. Wenn Du den Timestamp in MySQL Selects benötigst, solltest Du auch das passende Format wählen. Sonst musst Du aufwändig (rechenaufwändig) hin- und herkonvertieren, damit die Zeitfunktionen von MySQL anwendbar sind.

Ansonsten ist die Funktion WEEKDAY http://dev.mysql.com/doc/refman/5.1/en/ ... on_weekday für die Suche notwendig. Da Dein Timestamp im unbrauchbaren UNIX-Timestamp Format vorliegt, muss er für die Anwendung der o.g. Funktion auch noch in eine MySQL DateTime umgewandelt werden, das leistet die Funktion FROM_UNIXTIME.

Insgesamt ergibt das ungefähr diesen Select, wenn wir annehmen, dass Du alle Freitage suchst (Freitag hat bei WEEK_DAY den Wert 5 - das musst Du also vorher in PHP umrechnen, welcher Wochentag welcher Ziffer entspricht, Sonntag ist 0, Montag ist 1 usw.):

Code: Select all
SELECT ... FROM mytable WHERE WEEKDAY(FROM_UNIXTIME(mytimestamp)) = 5
Last edited by Nobbie on 17. June 2010 10:18, edited 2 times in total.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Einträge durch Timestamp-Wochentag ausgeben

Postby Knight1 » 13. June 2010 11:30

Nobbie wrote:
Code: Select all
SELECT ... FROM mytable WHERE WEEK_DAY(FROM_UNIXTIME(mytimestamp)) = 5


@Nobbie:
Auf etwas ähnliches wollte ich auch mit meinem Hinweis hinaus.
Nur wollte ich ihr/ihm nicht alles vorkauen, sondern sie/ihn dazu animieren sich selbst mal das Manual durchzulesen und die Lösung selbst zu erarbeiten.
Wie aber jeder selbst sehen kann erfolgte von Echo noch keinerlei Reaktion auf meine Antwort aus der zu ersehen ist ob mein Hinweis auf das Manual irgendetwas gebracht hat.

Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Re: Einträge durch Timestamp-Wochentag ausgeben

Postby Echo » 14. June 2010 08:22

Auf etwas ähnliches wollte ich auch mit meinem Hinweis hinaus.
Nur wollte ich ihr/ihm nicht alles vorkauen, sondern sie/ihn dazu animieren sich selbst mal das Manual durchzulesen und die Lösung selbst zu erarbeiten.
Wie aber jeder selbst sehen kann erfolgte von Echo noch keinerlei Reaktion auf meine Antwort aus der zu ersehen ist ob mein Hinweis auf das Manual irgendetwas gebracht hat.

Ihr und sie ;)
Das Manual kenne ich zum Teil, werde mir aber besonders die Datefunktion noch mal zu Gemüte führen. Vielen Dank ;)
Dass keine Reaktion erfolge, liegt daran, dass ich auch nicht jeden Tag online bin, da ich außerhalb des Computerzimmers auch noch ein Leben habe.

Werde mir die Links mal durchlesen, denke allerdings, ich werde tatsächlich auf die MySQL Zeitfunktion umsteigen.

Danke an euch alle :>
Echo
 
Posts: 8
Joined: 07. June 2010 13:19

Re: Einträge durch Timestamp-Wochentag ausgeben

Postby Echo » 16. June 2010 16:25

Ich noch mal :>

Also ich habe jetzt meine Datenbank und das Eintrageformular erfolgreich auf die Datetime Funktion angepasst. Die Suchmaske funktioniert soweit ebenfalls, allerding stehe ich jetzt vor dem gleichen Problem wie vorher auch schon.

Und zwar, welche Abfrage muss ich nun benutzen, um alle Einträge von allen Freitagen ausgeben zu lassen.

Ich kann ja nicht schreiben "SELECT * from bla WHERE datum = 'Freitag'"

Im MySQL Referenzhandbuch habe ich nur die Funktion gefunden, den Tag eines bestimmten Datums ausgeben zu lassen, also:

SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W');

Wie mache ich das aber jetzt, wenn ich kein bestimmtes Datum habe?

LG
Echo
Echo
 
Posts: 8
Joined: 07. June 2010 13:19

Re: Einträge durch Wochentag ausgeben lassen

Postby Altrea » 16. June 2010 20:37

Schau dir Nobbies Beitrag bitte nochmal an.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Einträge durch Timestamp-Wochentag ausgeben

Postby Nobbie » 16. June 2010 22:22

Echo wrote:Ich kann ja nicht schreiben "SELECT * from bla WHERE datum = 'Freitag'"

Im MySQL Referenzhandbuch habe ich nur die Funktion gefunden, den Tag eines bestimmten Datums ausgeben zu lassen, also:

SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W');

Wie mache ich das aber jetzt, wenn ich kein bestimmtes Datum habe?


Also mit Verlaub - das ist armselig.

Wenn Du die fertigen Lösungen, die auch noch kommentiert aufbereitet sind, nicht liest und nicht verstehst, ist es sinnlos. Diese Frage ist wirklich grausam.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Einträge durch Wochentag ausgeben lassen

Postby Altrea » 16. June 2010 22:36

Mal abgesehen davon, dass die MySQL-Dokumentation eine sehr übersichtliche und klar formulierte Auflistung der Datum- und Zeitfunktionen enthält, die zudem noch mit zahlreichen Beispielen bereichert ist.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Einträge durch Wochentag ausgeben lassen

Postby Echo » 17. June 2010 08:22

Zunächst einmal herzlichen Dank, für diese wahnsinnig freundlichen Aussagen, auf eine normal gestellte Frage.
Ich möchte nicht, dass mir jemand das Skript zusammen schreibt, lediglich eine kleine Hilfestellung wäre nett gewesen. Das Referenzbuch habe ich gelesen, allerdings nicht den Abschnitt gefunden, der mein Problem löst, wie ich es bereits geschrieben habe.

Für's nächste mal weiß ich ja, dass ich hier nicht mehr nachfragen muss.

Edit:
Und ja, im Referenzbuch stehen die Funktionen für den Fall drin, dass man ein bestimmtes Datum hat. Ich möchte aber über ein Formular nur einen simplen Wochentag hinschreiben müssen und dann werden mir alle Beiträge ausgegeben, die an diesem Wochentag geschrieben wurden.
Also schreibe ich Freitag, sollen mir alle Beiträge von irgendeinem Freitag ausgegeben werden. Dabei ist es egal, ob der Freitag der 18.06.2010 oder Freitag der 15.01.1982 ist.
Echo
 
Posts: 8
Joined: 07. June 2010 13:19

Next

Return to PHP

Who is online

Users browsing this forum: No registered users and 8 guests