php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.02.2005, 13:11  
Erfahrener Benutzer
 
Registriert seit: 14.06.2004
Beiträge: 287
Boennchen
Standard Nach Datumswerten abfragen

Hi Leute!

Habe ein Eingabeformular wo die Arbeitszeit eingetragen wird mit Arbeistsbeginn und Arbeitsende. Das Datum wird automatisch mittels timestamp und der jeweilige User gespeichert. Arbeitsbeginn und Arbeitsende wird mittel time in die Datenbank gespeichert!

Nun möchte ich gerne nach User die jeweilige Arbeitszeit ermitteln.
Also heute gearbeitet, in der Woche, im Monat und im Jahr.

Hab mal für die Arbeitszeit heute etwas rum probiert aber leider keine Ergebnisse erhallten:
Code:
SELECT * FROM `arbeitszeit` WHERE user = 'XXX'
AND datum = 'now()' AND arbeits_ende - arbeits_beginn
Ich hoffe mir kann einer weiterhelfen
__________________
Gruß
Boennchen
Boennchen ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.02.2005, 13:51  
Benutzer
 
Registriert seit: 02.02.2005
Beiträge: 41
Netspire
Standard

Ich verstehe irgendwie nicht so ganz dein Problem. Kannst du das noch einmal ein bisschen genauer erklären?

Gruß, Moritz.
Netspire ist offline  
Alt 05.02.2005, 23:33  
Erfahrener Benutzer
 
Registriert seit: 14.06.2004
Beiträge: 287
Boennchen
Standard

also habe folgene Tabelle
PHP-Code:
CREATE TABLE `arbeitszeit_manuel` (
  `
arbeitzeit_idint(100unsigned NOT NULL auto_increment,
  `
datumtimestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `
arbeits_beginntime NOT NULL default '00:00:00',
  `
arbeits_endetime NOT NULL default '00:00:00',
  `
uservarchar(10NOT NULL default '',
  
PRIMARY KEY  (`arbeitzeit_id`)
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=
nun möchte ich gerne die Arbeitszeit des einzelnen Users nach Tag, Woche, Monat und Jahr abfragen.

Ich denke das geht mit MySQL-Befehlen und muss die Daten nicht auslesen und dann mit irgendwie mit php berechnen, oder?
__________________
Gruß
Boennchen
Boennchen ist offline  
Alt 06.02.2005, 10:31  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Wenn du das Datum speichern willst, nimm ein DATE-Feld, mit dem TIMESTAMP verbrauchst du nur unnötig Speicherplatz. Aber das nur nebenbei. Die Abfrage nach der täglichen Arbeitszeit kann. z.B so aussehen:
Code:
SELECT user, 
       date_format(datum, "%d.%m.%Y") datum, 
       sec_to_time(time_to_sec(arbeits_ende) - time_to_sec(arbeits_begin)) zeit
FROM arbeitszeit_manuel
ORDER BY user, datum
Und nach Wochen:
Code:
SELECT user, 
       date_format(datum, "%Y %U") woche ,
       sec_to_time(sum(time_to_sec(arbeits_ende) - time_to_sec(arbeits_begin))) zeit
FROM arbeitszeit_manuel
GROUP BY user, woche
ORDER BY user, woche
Für Monat oder Jahr musst du nur noch die eine Zeile ändern:
Code:
...
       date_format(datum, "%Y %m") monat,
       date_format(datum, "%Y") jahr,
...
und das dann in GROUP BY anpassen
__________________
Gruss
L
lazydog ist offline  
Alt 06.02.2005, 11:42  
Erfahrener Benutzer
 
Registriert seit: 14.06.2004
Beiträge: 287
Boennchen
Standard

Super Danke
genau was ich gesucht habe!

jetzt habe ich noch ne Frage:
Da ich ja nur beim Tag die aktuelle arbeitszeit haben will, kann ich doch nach dem letzten Datensatz suchen und inh ausgeben, oder
PHP-Code:
SELECT user
       
date_format(datum"%d.%m.%Y"datum
       
sec_to_time(time_to_sec(arbeits_ende) - time_to_sec(arbeits_begin)) zeit 
FROM arbeitszeit_manuel 
ORDER BY user
datum DESC LIMIT 1 
__________________
Gruß
Boennchen
Boennchen ist offline  
Alt 09.02.2005, 11:21  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Damit kriegst du nur den letzten Datensatz des ersten users. Ausserdem erhälst du, wenn du nach dem formatierten Datum sortierst, auch das entsprechende Resultat, d.h. der 31.01.2003 kommt nachd dem 1.12.2005. Deshalb musst du auch hier grupieren, was aber nicht ganz trivial ist. Ich hab mal etwas ausprobiert, aber wahrscheinlich müsste es schon noch etwas einfacher gehen:
Code:
SELECT user, 
       SUBSTRING( MAX( CONCAT(datum, ' ', arbeits_ende)), 1, 10) datum,
       SEC_TO_TIME(
           TIME_TO_SEC(
               MAX( CONCAT(datum, ' ', arbeits_ende))
           ) 
           - 
           TIME_TO_SEC(
               MAX( CONCAT(datum, ' ', arbeits_begin)) 
           )
       )   zeit
FROM arbeitszeit_manuel 
GROUP BY user
order by user
__________________
Gruss
L
lazydog ist offline  
 


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
PDO und parallele Abfragen Normalo PHP Tipps 2008 1 09.06.2008 12:39
PHP bzw. mysql abfragen optimieren Kori Datenbanken 3 26.09.2007 21:02
mehrere Abfragen (Selects) verbinden???? CIMM Datenbanken 15 03.05.2006 18:59
Datentyp abfragen PHP Tipps 2006 7 24.02.2006 15:53
[Erledigt] 204 077 15-4 in DB mit WHERE als 204077154 abfragen Datenbanken 6 24.01.2006 11:47
Suche Script zum Abfragen von Inhalten einer anderen Seite Beitragsarchiv 7 26.09.2005 19:21
[Erledigt] Dateiendung abfragen PHP Tipps 2005-2 6 18.08.2005 17:11
daten von bildern auf einem anderen server abfragen netti PHP Tipps 2005-2 3 05.08.2005 14:27
[gelöst] Spaltennamen abfragen!? Datenbanken 4 04.08.2005 14:51
Mehrere Schleifen aus DB abfragen PHP Tipps 2005-2 16 22.07.2005 15:57
Dateinamen abfragen PHP Tipps 2005-2 2 20.07.2005 11:31
Tabellenname Abfragen PHP Tipps 2005-2 2 13.07.2005 14:42
Einzelnen Wert aus Datenbank abfragen Datenbanken 3 07.07.2005 22:10
[Erledigt] Datensätze von Datenbank abfragen PHP Tipps 2005-2 14 26.06.2005 07:56
wie mit php Software Version abfragen? PHP Tipps 2005-2 4 25.06.2005 20:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php wochenarbeitszeit ermitteln

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:07 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.