![]() |
Willkommen, Gast ( Anmelden | Registrierung )
![]() ![]() |
![]() |
![]()
Beitrag
#1
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Moin Gemeinde!
Auf verschiedenen (php) Seiten auf meiner Homepage werden die Seitenbesuche gezählt (php-Zähler schreibt in log-Datei; Log-Datei wird ausgelesen und gibt Ergebnis raus.). Um die Seitenbesuche alle auf einmal überblicken zu können, habe ich eine PHP-Seite gebastelt, die einfach die Log-Dateien der Seiten ausliest, die ein php-Counter haben. Das Ergebnis wird dann in einer Tabelle untereinander ausgegeben. So weit, so gut. Nun möchte ich aber, mit meinen bescheidenen php-Kenntniss, daß nicht nur ausgelesen wird, sondern, daß auch sortiert wird! Also, alle Log-Dateien werden ausgelesen, die Seite stellt die Ergebnisse so da, daß das schlechteste Ergebnis (=die kleinste Zahl) oben steht. Ich bin überzeugt, daß das geht! Aaaber, WIE stelle ich sowas an? cu Conny |
|
|
![]()
Beitrag
#2
|
|
is getting harder Gruppe: User Beiträge: 26 Mitglied seit: 24.09.2004 Mitglieds-Nr.: 3.770 ![]() |
Hilfreich wäre es wenn Du den Quellcode Deiner "Auswert-Seite" posten könntest.
Auch die STtuktur der LOG-Datei ist nicht uninteressant. MfG hondocrx |
|
|
![]()
Beitrag
#3
|
|
hdb ![]() ![]() ![]() ![]() ![]() Gruppe: User Beiträge: 685 Mitglied seit: 26.10.2001 Wohnort: Köln Mitglieds-Nr.: 5 ![]() |
|
|
|
![]()
Beitrag
#4
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hallo hondocrx,
die Code ist nichts anders als eine Tabelle in der die Log-Datei aufgerufen wird. Hier ein Ausschnitt: HTML <TABLE BORDER="0" CELLPADDING="20" SUMMARY="Plazierungstabelle"> <TR> <TH>Counterdatum</TH> <TH>Hits</TH> <TH>Link</TH> </TR> <TR> <TD><B>Counter:</B> Bilder vom Brand:<BR><B>Seit:</B> 17. Okt. 2004</TD> <TD> <?php include('/home/www/web784/html/scripts/count/brand/counter.log'); ?></TD> <TD><A HREF="../../../galerie_brand.php" TARGET="_blank">galerie_brand.php</A></TD> </TR> <TR> <TD><B>Counter:</B> Bilder Feriencamp<BR><B>Seit:</B> 14. Okt. 2004</TD> <TD> <?php include('/home/www/web784/html/scripts/count/camp/counter.log'); ?></TD> <TD><A HREF="../../../galerie_camp.php" TARGET="_blank">galerie_camp.php</A></TD> </TR> <TR> <TD><B>Counter:</B> Bilder Herbstturnier<BR><B>Seit:</B> 14. Okt. 2004</TD> <TD> <?php include('/home/www/web784/html/scripts/count/herbst/counter.log'); ?></TD> <TD><A HREF="../../../galerie_herbst.php" TARGET="_blank">galerie_herbst.php</A></TD> </TR> ************ usw. Die Log-Datei ist nichts anderes als eine txt-Datei ohne Code mit nur eine Zahl, die sich immer um eins erhöht, wenn ein Besucher die entsprechende Seite anklickt. Im Grunde muss das sortier-php-Script die Tabelle neu gestallten; die einzelne <TR>-Abschnitte müßen mit dem ausgelesenen Wert -aus der counter.log- so in die Tabelle zurückgeschrieben werden, daß die kleinst ausgelesene Zahl oben in der Tabelle erscheint. @Dieter: Danke für den Link, werde mich damit befassen (und hoffe, daß ich *mithalten* kann ![]() cu Conny |
|
|
![]()
Beitrag
#5
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
Du musst Dir ein Array bauen und dort (z.B.) Name der Datei mit dem korrespondierenden Zähler einbauen. Das sortierst Du dann, und gibst es in einer Schleife aus.
Ich gucke dazu immer in SelfPHP: Array sortieren: http://www.selfphp.info/funktionsreferenz/...ionen/asort.php Wobei Array nur 'ne Tabelle ist mit 2 Spalten. Einmal ein Key und ein dazugehöriger Value. Bei Dir wäre Key halt der Name der Seite und Value der Zählerstand. Das kannst Du dann sortieren ... und ausgeben. Ist ein Abend einlesen und basteln *g* Grüße Andreas |
|
|
![]()
Beitrag
#6
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hi,
nun, die Logik dahinter habe ich verstanden, sowohl bei Dieters als auch bei Andreas Link. Was mir schwer fällt, ist die richtige Einbindung in der HTML-Code. Wie definiere ich die Tabelle als Array? Und wie binde ich $key und $val so ein, daß der echo die Tabelle -oder die Tabellenzeilen?- richtig schreibt, bzw. ausgibt? cu Conny (schwer, schwer, schwer) |
|
|
![]()
Beitrag
#7
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
So lese ich z.B. Verzeichnisnamen in ein Array:
HTML function leseVerzeichnis() { $verz=opendir ('.'); while ($file = readdir($verz)){ if($file != "." && $file != ".." && substr($file, -4) == ".txt"){ $fp = fopen("$file","r"); flock($fp,2); $info = trim(fgets($fp,1000)); $kapitel = trim(fgets($fp,1000)); flock($fp,3); fclose($fp); $speicher[$kapitel] = $file; } } closedir($verz); ksort($speicher); $speicher = array_values($speicher); return $speicher; } Bei Dir könnte $kapitel der Zählerstand sein (danach möchtest Du ja sortieren) und $file ist halt der Dateiname. Nur $speicher = array_values($speicher); musst Du weglassen ... damit verwandelst würdest Du $kapitel weglöschen und der Reihe nach Durchnummerieren. Das willst Du ja nicht! Grüße Andreas |
|
|
![]()
Beitrag
#8
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
hi,
ich dachte mehr an:
Wenn ich den Bereich (array) -in der die Zahlen gesucht werden- Vorher festlege , wo soll denn nachher das Ergebnis hinein geschrieben werden? Im gleichen Array (wird also nach auslesen überschrieben?) Conny (noch kein Durchblick...) |
|
|
![]()
Beitrag
#9
|
|
is getting harder Gruppe: User Beiträge: 26 Mitglied seit: 24.09.2004 Mitglieds-Nr.: 3.770 ![]() |
zweiter Versuch mit meinem Script. War schon ein wenig spät.
Das Problem bei Dir ist, das Du die verschiedensten Texte (Bilder Feriencamp, Bilder vom Brand, usw) mitsortieren musst. Nun ist die Frage wie oft diese Statistik aufgerufen wird. Bei stetigem Benutzen empfehle ich eine MySQL-DB für den Counter und die Ausgabetexte. Das untenstehende Script arbeitet mit deinen Logfiles. Ist deswegen aber auch etwas umständlich. Diesen Code bitte einfügen nach <TH>Link</TH></TR> und vor </table> MfG QUELLTEXT <?
// // einlesend er Logfiles in die entsprechenden Arrays // $brand_array =file('/home/www/web784/html/scripts/count/brand/counter.log'); $camp_array =file('/home/www/web784/html/scripts/count/camp/counter.log'); $herbst_array =file('/home/www/web784/html/scripts/count/herbst/counter.log'); // // test mit lokalen Dateien // // $brand_array =file('brand.log'); // $camp_array =file('camp.log'); // $herbst_array =file('herbst.log'); // // Übergeben des Quelltextes --> $xxxx1 ist vom <TR> bis vor den Counterwert // Übergeben des Quelltextes --> $xxxx2 ist vom Counterwert bis zum </TR> // $brand1='<TR><TD><B>Counter:</B> Bilder vom Brand:<BR><B>Seit:</B> 17. Okt. 2004</TD><TD> '; $brand2='</TD><TD><A HREF="../../../galerie_brand.php" TARGET="_blank">galerie_brand.php</A></TD></TR>'; $camp1='<TR><TD><B>Counter:</B> Bilder Feriencamp<BR><B>Seit:</B> 14. Okt. 2004</TD><TD> '; $camp2='</TD><TD><A HREF="../../../galerie_camp.php" TARGET="_blank">galerie_camp.php</A></TD></TR>'; $herbst1='<TR><TD><B>Counter:</B> Bilder Herbstturnier<BR><B>Seit:</B> 14. Okt. 2004</TD><TD> '; $herbst2='</TD><TD><A HREF="../../../galerie_herbst.php" TARGET="_blank">galerie_herbst.php</A></TD></TR>'; // // Übergen der Daten in ein Mehrdimensionales Array // Kann nach belieben erweitert werden, die Reihenfolge muss beachtet werden // $anzahl = array (array($brand_array[0],$camp_array[0],$herbst_array[0]),array($brand1,$camp1,$herbst1),array($brand2,$camp2,$herbst2)); // // sortieren der Couterwerte, heir aufsteigend. Soll zuerst der größte wert // ausgegeben werden muss SORT_ASC durch SORT_DESC ersetzt werden // array_multisort ($anzahl[0], SORT_ASC, SORT_NUMERIC,$anzahl[1],$anzahl[2]); // // Ausgabe des Quellcodes und der Counterwertes // Muß nicht angepasst werden. Egal wie viele Logs eingelesen werden // for ($i=0;$i<count($anzahl[0]);$i++) { echo $anzahl[1][$i]; echo $anzahl[0][$i]; echo $anzahl[2][$i]; } ?> Der Beitrag wurde von hondocrx bearbeitet: 31.01.2005 - 10:47 |
|
|
![]()
Beitrag
#10
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hallo hondocrx,
die ersten Gehversuche sind vielversprechend! ![]() Mit Deiner Vorlage bin ich -glaube ich- in der Lage die Tabelle so weiter auszubauen bis alle Counterlinks richtig plaziert sind. Vielen Dank ![]() Bei weiteren Fragen, bin ich so frei und melde mich wieder ![]() Zu Deiner Anmerkungen: Es handelt sich hier um eine art 'Kontrol-Seite' meinerseits und wird nicht so oft aufgerufen (wenn, dann auch nur von mir). Ich möchte bei diesen Bilder-Seiten nur ein wenig Überblick behalten. Wenn sie irgendwann kaum noch besucht werden (Wenn alle sich an den Bilder Satt gesehen haben) kommt die Seite raus und wird ausgetauscht gegen eine neue Bildergalerie-Seite. Daher auch das Datum 'seit dem so-und-so-vielsten' . cu Conny |
|
|
Google Bot |
![]()
Beitrag
#
|
![]() Google Ads ![]() |
|
|
|
![]() ![]() |
![]() |
Vereinfachte Darstellung | Aktuelles Datum: 13.05.2025 - 21:59 |