Statistik Frage

      Statistik Frage

      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

      PHP-Quellcode

      1. <?php
      2. $monate = array("Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"); // Monate
      3. $counter = array("","","","","","","","","","","",""); // Einmalige Werte.
      4. ?>


      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 ;)
      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.

      PHP-Quellcode

      1. // MySQL-Verbindung aufbauen.
      2. $db_link = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die(mysql_error());
      3. @mysql_select_db(MYSQL_DATABASE) or die(mysql_error());
      4. $counter = array();
      5. $hits = array();
      6. for($i=1; $i<=12; $i++)
      7. {
      8. $sql = "SELECT * FROM netcms_stats WHERE date_y='".date("Y")."' AND date_m='".$i."';";
      9. $res = mysql_query("$sql") or die(mysql_error());
      10. $data = mysql_fetch_array($res);
      11. $counter[$i] = $data["value_count"];
      12. $hits[$i] = $data["hits"];
      13. }
      14. // MySQL Verbindung schließen.
      15. mysql_close($db_link);


      Geht aber leider nicht :(

      EDIT: Ach ich Held, Ich habe fehler in meiner Abfrage gehabt Sorry :D ich teste mal ;)

      Ein Problem besteht leider noch,

      Der überspringt jetzt immer den ersten Monat. Mein Code sieht mitlerweile so aus.

      PHP-Quellcode

      1. // MySQL-Verbindung aufbauen.
      2. $db_link = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die(mysql_error());
      3. @mysql_select_db(MYSQL_DATABASE) or die(mysql_error());
      4. $counter = array();
      5. $hits = array();
      6. for($i=1; $i<=12; $i++)
      7. {
      8. $sql = "SELECT * FROM netcms_stats WHERE date_y='".date("Y")."' AND date_m='".$i."';";
      9. $res = mysql_query($sql) or die(mysql_error());
      10. $data = mysql_fetch_array($res);
      11. if($data["count_value"] == "")
      12. {$counter[$i] = '0';}
      13. else
      14. {$counter[$i] = $data["count_value"];}
      15. if($data["count_hits"] == "")
      16. {$hits[$i] = '0';}
      17. else
      18. {$hits[$i] = $data["count_hits"];}
      19. }
      20. // MySQL Verbindung schließen.
      21. mysql_close($db_link);
      22. // Testdaten
      23. echo "<pre>";
      24. print_r($counter);
      25. echo "</pre>";
      26. $monate = array("Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"); // Monate

      Das print_r($counter) ergibt das:

      Quellcode

      1. Array
      2. (
      3. [1] => 0
      4. [2] => 0
      5. [3] => 0
      6. [4] => 0
      7. [5] => 0
      8. [6] => 0
      9. [7] => 0
      10. [8] => 6 <---- AUGUST
      11. [9] => 0
      12. [10] => 0
      13. [11] => 0
      14. [12] => 0
      15. )


      Das landet aber bei der Ausgabe im September.

      EDIT:

      Habe es hinbekommen fehler war [$i] sollte nur [] sein.

      PHP-Quellcode

      1. if($data["count_value"] == "")
      2. {$counter[$i] = '0';}
      3. else
      4. {$counter[$i] = $data["count_value"];}
      5. if($data["count_hits"] == "")
      6. {$hits[$i] = '0';}
      7. else
      8. {$hits[$i] = $data["count_hits"];}
      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

      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
      greetings,
      Moritz

      Follow me on twitter !
      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

      PHP-Quellcode

      1. $counter[$i] = $data["value_count"];
      2. $hits[$i] = $data["hits"];

      liegt ?

      Na ja auf alle Fälle wäre mein Anstz ein etwas anderer.

      PHP-Quellcode

      1. $getstats=mysql_query("SELECT test1 FROM test1 ORDER BY id LIMIT 12");
      2. for($i=0;$i<=12;$i++){
      3. if($stats=@mysql_result($getstats,$i)){
      4. $count[$i]=$stats["comments"];
      5. }else{
      6. $count[$i]='0';
      7. }
      8. }
      9. print_r($count);
      greetings,
      Moritz

      Follow me on twitter !