php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.05.2009, 13:13  
Neuer Benutzer
 
Registriert seit: 19.05.2009
Beiträge: 13
tzzaetaynzz befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] :: [geloest] Minuten pro Stunde ermitteln

Hallo zusammen,

Oberthema dieses Posting ist: Verbindungsdauer graphisch darstellen.
Mit JPGraph komme ich zurecht.

Einen Graphen habe ich hier geplottet:
Beispiel

Die Daten die ich JPGraph übergeben sind z.Zt. statisch!

Ziel: Die Daten für den Graphen aus einer MySQL-DB zu lesen.

Ich habe in meiner MySQL-DB Einträge wie diesen:

[..] | 2009-05-19 | 18:55:23 | 20:15:23 | [..]

Erst kommen Daten [..], dann | Datum | Login | Logout | und dann wieder Daten [..].

Problem: Wie verteile ich die Minuten (Dauer der Sitzung) auf eine Array!?

Ich muß JPGraph ein Array übergeben:
PHP-Code:
array('','','','','','','','','','','','','','','','','','','','','','','',''
Jeder Index ist eine Uhrzeit:
array[0] steht für 0 Uhr, array[1] für 1 Uhr ... usw.
Der Inhalt in dem Array sind die Minuten (max. 60 als Wert).

Bei der der Sitzung (von 18:55:23 bis 20:15:23) entfallen:
- 5 Mintuten auf Stunde 18,
- 60 Minuten auf Stunde 19 und
- 15 Minuten auf Stunde 20 (Sekunden sind egal).

Ein Array, dass ich an JPGraph zum Plotten gebe sieht dann so aus:
array('0','0','0','0','0','0','0','0','0','0','0', '0','0','0','0','0','0','0','5','60','15','0','0', '0')

Frage: Kann ich eine SQL Abfrage formulieren die mir ein sollches Array liefert?
Oder muß ich dass Problem mit PHP lösen?

Die Dauer einer Sitzung ist wohl schnell ermittelt, indem ich Login und Logout in eine Unix-Time wandel und dann Login von Logout abziehe. Die Differenz ist dann die Sitzungsdauer.
Aber: Die Zuordnung der Minuten zu der Uhrzeit geht mir so verloren!?

Über eine Antwort würde ich mich s e h r f r e u e n !

Beste Grüße

Geändert von tzzaetaynzz (19.05.2009 um 18:57 Uhr).
tzzaetaynzz ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 19.05.2009, 14:56  
Benutzer
 
Registriert seit: 26.07.2008
Beiträge: 49
iits befindet sich auf einem aufstrebenden Ast
Standard

wie wäre es mit einer Schleife und mktime()

PHP-Code:
mktime(19,0,0,19,05,2009) - mktime(18,55,0,19,05,2009) / 60 
müsste dir die 5 Minute für die Stunde 18 geben.
iits ist offline   Mit Zitat antworten
Alt 19.05.2009, 15:41  
Neuer Benutzer
 
Registriert seit: 19.05.2009
Beiträge: 13
tzzaetaynzz befindet sich auf einem aufstrebenden Ast
Standard

Danke iits, für den ersten und brauchbaren Beitrag.
Ich musste die Klammern setzen, damit die 5 erscheint.
PHP-Code:
(mktime(19,0,0) - mktime(18,55,0)) / 60;
-> 

Um bei meinem Beispiel zu bleiben:
PHP-Code:
(mktime(20,15,23) - mktime(18,55,23)) / 60;
-> 
80 
Nun fehlt mir wieder die Aufteilung.

Wie meinst Du Das mit der Schleife genau?
tzzaetaynzz ist offline   Mit Zitat antworten
Alt 19.05.2009, 16:05  
Benutzer
 
Registriert seit: 26.07.2008
Beiträge: 49
iits befindet sich auf einem aufstrebenden Ast
Standard

Hier mal aus dem Kopf auf die Schnelle und ohne Funktionsgarantie. Ich hoffe das hillft dir weiter, ansonsten melde dich noch mal.

PHP-Code:
$stunde_ende=20//kommt natürlich aus der DB
$stunde_anfang=18//kommt natürlich aus der DB
$min_anfang=55//kommt natürlich aus der DB
$min_ende=15//kommt natürlich aus der DB

$min_array=array(); //das array für 

for ($stunde=0$stunde<=24$stunde++)
{
if (
$stunde<$stunde_anfang)
{
$min=0;
}
elseif (
$stunde==$stunde_anfang)
{
  
$min=(mktime(($stunde+1),0,0) - mktime($stunde,$min_anfang,0)) / 60ergibt eh 60;
}
elseif (
$stunde==$stunde_ende)
{
                        
$min=(mktime(($stunde+1),$min_ende,0) - mktime($stunde,0,0)) / 60;
}
if (
$stunde>$stunde_ende)
{
$min=0;
}
else
{
                        
$min=60;
}

array_push ($min_array,$min);




Geändert von iits (19.05.2009 um 16:07 Uhr). Grund: jetzt müsste es stimmen
iits ist offline   Mit Zitat antworten
Alt 19.05.2009, 16:09  
Neuer Benutzer
 
Registriert seit: 19.05.2009
Beiträge: 13
tzzaetaynzz befindet sich auf einem aufstrebenden Ast
Standard

wow! wie schnell!
Ich teste es und melde mich!

Schon jetzt: Besten Danke!
tzzaetaynzz ist offline   Mit Zitat antworten
Alt 19.05.2009, 18:56  
Neuer Benutzer
 
Registriert seit: 19.05.2009
Beiträge: 13
tzzaetaynzz befindet sich auf einem aufstrebenden Ast
Standard :: Lösung

Hallo iits,

ich habe Deine Lösung nicht zum Laufen bekommen,
aber die Kernaussage erkannt,
die in meine Lösung eingeflossen ist.

PHP-Code:
    $mps = array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);

// Testdaten, wie sie später per SQL-Abfrage kommen.
    
$sessions = array(
            
'00:00' => '01:00',
            
'18:00' => '18:01',
            
'18:55' => '20:15',
            
'21:20' => '23:23',
            
'23:55' => '23:59');

foreach (
$sessions AS $login => $logout)
{
    
$session_login split(":"$login2);
    
$session_logout split(":"$logout2);

    
$stunde_login $session_login[0] + 0;
    
$minute_login $session_login[1] + 0;
    
$stunde_logout $session_logout[0] + 0;
    
$minute_logout $session_logout[1] + 0;

    
$stunden_diff $stunde_logout $stunde_login;

    
$mps getMinutenProStundeProTag($stunde_login$minute_login$stunde_logout$minute_logout$stunden_diff$mps);

}

function 
getMinutenProStundeProTag($stunde_login$minute_login$stunde_logout$minute_logout$stunden_diff$mps)
{
    
// Login und Logout in der gleichen Stunde.
    
if ($stunden_diff == 0)
    {
        
$mps[$stunde_login] = $mps[$stunde_login] + 
            ((
mktime($stunde_logout$minute_logout) -
                
mktime($stunde_login$minute_login)) / 60);
    }

    
// Login und Logout sind nicht in der gleichen Stunde.
    
if ($stunden_diff 0)
    {
        
$mps[$stunde_logout] = $mps[$stunde_logout] +
            ((
mktime($stunde_logout$minute_logout) -
                
mktime($stunde_logout00)) / 60);

        for (
$i=1$i<=$stunden_diff-1$i++)
        {
            
$mps[$stunde_login+$i] = $mps[$stunde_login+$i] + 60;
        }

        
$mps[$stunde_login] = $mps[$stunde_login] + 
            ((
mktime($stunde_login 100) -
                
mktime($stunde_login$minute_login)) / 60);
    }

    return 
$mps;
}

    
// Array testweise ausgeben.
    
$i 0;

    foreach (
$mps as $minuten)
    {
        echo  
$i " -> "$minuten "<br>";
        
$i++;
    }

->
-> 60
-> 0
-> 0
-> 0
-> 0
-> 0
-> 0
-> 0
-> 0
-> 0
10 
-> 0
11 
-> 0
12 
-> 0
13 
-> 0
14 
-> 0
15 
-> 0
16 
-> 0
17 
-> 0
18 
-> 6
19 
-> 60
20 
-> 15
21 
-> 40
22 
-> 60
23 
-> 27 
tzzaetaynzz ist offline   Mit Zitat antworten
Alt 19.05.2009, 19:15  
Benutzer
 
Registriert seit: 26.07.2008
Beiträge: 49
iits befindet sich auf einem aufstrebenden Ast
Standard

super, freut mich dass es geklappt hat
iits ist offline   Mit Zitat antworten
Antwort


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
Ausgegeben Tabelle jede halbe stunde aktualisieren ketchup PHP Tipps 2009 1 30.03.2009 11:29
[Erledigt] Sekunden in Tage, Stunden, Minuten und Sekunden umrechnen PHP Tipps 2004 14 27.10.2008 23:50
[Erledigt] pro Stunde bestimmte Anzahl Credits bekommen Patrick H. PHP Tipps 2008 6 26.08.2008 12:26
Einzeltreffer von MATCH ... AGAINST ... ermitteln proud Datenbanken 3 09.05.2008 08:31
Wert pro Stunde MessengerNews! PHP Tipps 2006 10 05.08.2006 16:57
Google Adwords - echten Referer ermitteln NetLook PHP Tipps 2006 2 12.05.2006 08:40
Die Position ein. Datensätzes aus einer Datenliste ermitteln Locutus007 Datenbanken 8 07.03.2006 16:59
DATETIME-Inhalt -> Online seit XY Minuten Datenbanken 6 01.02.2006 16:55
build nummer des bs ermitteln ... nur bei microsoft's bs!!! PHP Tipps 2005-2 2 24.07.2005 15:59
Besucher mit den meisten GB Einträgen ermitteln! Datenbanken 7 21.04.2005 12:09
30 Minuten als timestamp? Chr!s PHP Tipps 2005 4 10.01.2005 12:35
minuten und sekunden bzw stunden ^^ Skazi PHP Tipps 2004-2 5 06.11.2004 16:23
CRC Summe einer Datei ermitteln?? PHP Tipps 2004 1 14.10.2004 09:23
[Erledigt] Tabellenname eines Feldes ermitteln PHP-Fortgeschrittene 3 22.09.2004 15:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php sitzungsdauer, minuten pro stunde, php mktime logout, php uhrzeit halbe stunde, logins pro stunde php, 60 min pro stunde, 0,60 minuten = 1,00 stunde, php minuten ermitteln, 5/60 einer stunde sind, php gesamt pro stunde, pro stunde 60 pro 15 minuten, php 60 minuten als halbe stunde, jpgraph beispiele, mysql sitzungsdauer abfragen

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