Statistik Frage - Druckversion +- net-board.net Archiv (https://net-board.net) +-- Forum: Deine eigene Homepage (https://net-board.net/forumdisplay.php?fid=26) +--- Forum: Scriptsprachen (+Datenbanksysteme) (https://net-board.net/forumdisplay.php?fid=19) +--- Thema: Statistik Frage (/showthread.php?tid=5869) |
Statistik Frage - KingGO - 13.08.2008 Hi ich arbeite aktuell an einer Statistischen Auswertung für meine Seite. Ich stehe nun aber vor einen problem und weiß nicht wie ich dieses lösen soll. Meine MySQL Struktur wäre... date_m date_y count_value count_hits 8 2008 1 1 Das Wäre nur der Monat August. Ich müsste aber einen Array füllen damit [code=php]<?php $monate = array("Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"); // Monate $counter = array("","","","","","","","","","","",""); // Einmalige Werte. ?>[/code] Es sollte so sein das wenn sagen wir mal 1,2,3,4,5,6,7,9,10,11,12 nicht vorhanden ist das diese mit einen "" gefüllt werden als Array weiß nur nicht wie. Ich hoffe ich habe das ganze verständlich ausgeführt - Futjikato - 13.08.2008 Ich hab nicht wirklich verstanden was du genau machen möchtest, und ich bin ja nun auch nicht der große Spezi in PHP, aber ich glaube das du sowas in der Art machne wolltest : [code=php] for($i=0;$i<=$monat;$i++{ if($wert_aus_db){ $count[$i]=$wert_aus_db; }else{ $count[$i]=""; } } [/code] Aber eventuell hab ichs auch vollkommen falsch verstanden - KingGO - 13.08.2008 Im Endefekt hast du das schonmal gut erkannt FOR ( -> 12 ) Monat 1 DB Nicht vorhanden. "" zu Array() an Position 1 ... Montat 8 DB Vorhanden // Wertermitteln... zu Array() an Position 8. Frage geht das überhaupt ^^ ? Ansonsten 12x ne DB Abfrage wollte ich dafür nicht machen. [code=php] // MySQL-Verbindung aufbauen. $db_link = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die(mysql_error()); @mysql_select_db(MYSQL_DATABASE) or die(mysql_error()); $counter = array(); $hits = array(); for($i=1; $i<=12; $i++) { $sql = "SELECT * FROM netcms_stats WHERE date_y='".date("Y")."' AND date_m='".$i."';"; $res = mysql_query("$sql") or die(mysql_error()); $data = mysql_fetch_array($res); $counter[$i] = $data["value_count"]; $hits[$i] = $data["hits"]; } // MySQL Verbindung schließen. mysql_close($db_link);[/code] Geht aber leider nicht EDIT: Ach ich Held, Ich habe fehler in meiner Abfrage gehabt Sorry ich teste mal Ein Problem besteht leider noch, Der überspringt jetzt immer den ersten Monat. Mein Code sieht mitlerweile so aus. [code=php] // MySQL-Verbindung aufbauen. $db_link = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die(mysql_error()); @mysql_select_db(MYSQL_DATABASE) or die(mysql_error()); $counter = array(); $hits = array(); for($i=1; $i<=12; $i++) { $sql = "SELECT * FROM netcms_stats WHERE date_y='".date("Y")."' AND date_m='".$i."';"; $res = mysql_query($sql) or die(mysql_error()); $data = mysql_fetch_array($res); if($data["count_value"] == "") {$counter[$i] = '0';} else {$counter[$i] = $data["count_value"];} if($data["count_hits"] == "") {$hits[$i] = '0';} else {$hits[$i] = $data["count_hits"];} } // MySQL Verbindung schließen. mysql_close($db_link); // Testdaten echo "<pre>"; print_r($counter); echo "</pre>"; $monate = array("Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"); // Monate[/code] Das print_r($counter) ergibt das: Code: Array Das landet aber bei der Ausgabe im September. EDIT: Habe es hinbekommen fehler war [$i] sollte nur [] sein. [code=php] if($data["count_value"] == "") {$counter[$i] = '0';} else {$counter[$i] = $data["count_value"];} if($data["count_hits"] == "") {$hits[$i] = '0';} else {$hits[$i] = $data["count_hits"];} [/code] - Futjikato - 13.08.2008 Also ich bin mir gerade net sicher .. hatte heute n harten Tag und bin geistig net 100% anwesend Aber ich bin der meinung man könnte deine for schleife mithilfe von mysql_result ein wenig optimieren einmal komplette liste hohlen und dann in die richtige reihe springen http://de3.php.net/manual/de/function.mysql-result.php Werd mich sonst mal morgen kurz hinsetzten ob ich den Code wie ich das gerade im Kopf hab noch zusammenbekomm - KingGO - 14.08.2008 Hm also die Ausführzeit ist ok. - Futjikato - 14.08.2008 Na ja wenn die Performance auch so stimmt is es ja wunderbar Ich hab mich gerade mal schnell hingesetzt und das ganze an einem Kommentarcounter für News gemacht. Was mir dabei an deinem Script aufgefallen ist, dass ich keinen blassen Schimmer habe wo der unterschied zwischen [code=php] $counter[$i] = $data["value_count"]; $hits[$i] = $data["hits"]; [/code] liegt ? Na ja auf alle Fälle wäre mein Anstz ein etwas anderer. [code=php] $getstats=mysql_query("SELECT test1 FROM test1 ORDER BY id LIMIT 12"); for($i=0;$i<=12;$i++){ if($stats=@mysql_result($getstats,$i)){ $count[$i]=$stats["comments"]; }else{ $count[$i]='0'; } } print_r($count); [/code] - KingGO - 14.08.2008 Da guck is Fix ^^ |