php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.08.2005, 10:25  
Erfahrener Benutzer
 
Registriert seit: 15.07.2005
Beiträge: 230
zapate
Standard webstatistik

Wie könnte ich folgende Problemstellung möglichst einfach realisieren:


Ich habe eine Tabelle mit mehreren 1000 Einträgen, die alle einen timestamp haben, nen useragent, ne auflösung usw.

Nun möchte ich alle "gleichen" Einträge, sprich gleiche Auflösung, gleicher Browser usw gruppieren und jeweils die Anzahl herausbekommen, um daraus ein Diagramm oder ähnliches zu zeichnen.

Beim timestamp brauch ich somit Between damit ich eine range nutzen kann. um die Anzahl Besucher der letzten Woche herauszubekommen.

Wie könnte ich soetwas möglichst serverschonend realisieren? Mir ist klar das es sicher serverlastig ist aber es soll halt keine 10 Sekunden brauchen bis sich das Bild aufbaut.


mit GD komm ich soweit klar nur wie soll ich das mit der gruppierung machen? GROUP BY erzielt irgendwie nicht das gewünschte Ergebnis
Und bei den timestamps verzweifel ich völlig
zapate ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 11.08.2005, 14:12  
Erfahrener Benutzer
 
Registriert seit: 15.07.2005
Beiträge: 230
zapate
Standard

falls es manche nicht verstanden haben, ich brauche sowas:

Zitat:
ich hab eine tabelle die so aussieht:


name | browser

Harald | IE6
Hans | IE6
Susi | Moz
Klaus | IE5
Albert | IE6
Judith | Moz


Nun möchte ich eine Abfrage die mir folgendes ausgibt:

Anzahl | Browser
3 | IE6
2 | Moz
1 | IE5
zapate ist offline  
Alt 11.08.2005, 14:23  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

SELECT COUNT(Browser) Anzahl, Browser
FROM Tabelle
GROUP BY Browser
ORDER BY Anzahl DESC


gehört aber eher zu SQL
DiBo33 ist offline  
Alt 11.08.2005, 14:30  
Erfahrener Benutzer
 
Registriert seit: 15.07.2005
Beiträge: 230
zapate
Standard

danke hast mir super geholfen. problem ist nun aber das ich knappe 100 browser habe die der ausliest da jede browserversion ne eigene agentid hat. Wie kann ich nur die 5 meistgenutzen auslesen und alle restlichen unter sonstige packen? mit der richtigen anzahl natürlich
zapate ist offline  
Alt 11.08.2005, 14:35  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Könnte mit Limit gehen...


mfg Andi
DER_Brain ist offline  
Alt 11.08.2005, 14:38  
Erfahrener Benutzer
 
Registriert seit: 15.07.2005
Beiträge: 230
zapate
Standard

ich hab schon nen limit drin aber was mach ich mit den restlichen browsern?

die liest der dann ja garnicht aus. Der müsste alles nach dem limit neu gruppieren als agentid 0 am besten

geht sowas überhaupt? oder soll ich lieber gleich 2 abfragen machen?
Code:
SELECT agentid, COUNT(agentid) anzahl FROM table GROUP BY agentid ORDER BY anzahl DESC LIMIT 0,10
zapate ist offline  
Alt 11.08.2005, 14:44  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

jo ich glaube auch, dass da zwei abfragen sinnvoller wären..
eine abfrage liest dir ALLE einträge aus,.. die zweite nur die top 10


mfg
DER_Brain ist offline  
Alt 11.08.2005, 14:49  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Da wirst du 2 SELECTS benötigen

SELECT COUNT(Browser) Anzahl, Browser
FROM Tabelle
GROUP BY Browser
ORDER BY Anzahl DESC
LIMIT 5

Dann ermittelst du die 5 Browsers und danach die 2. Abfrage

SELECT COUNT(*) Anzahl, 'sonstige' Browser
FROM Tabelle
WHERE Browser NOT IN ('Browser1','Browser2','Browser3','Browser4','Brow ser5')
DiBo33 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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
web statistik browser

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