kleine statistik anlegen

neuling321

Mitglied
hallo leute. leider komme ich nicht weiter, da ich erst mit php angefangen habe. über die Suche hab ich auch nicht das richtige gefunden. bzw ich weis nicht welchen befehl ich überhaupt suchen muß.

Ich hoffe Ihr könnt mir weiter helfen.

Ich möchte für mein cms ein kleines module schreiben, eine kleine statistik.

ich habe ein forum integriert und möchte aus der datenbank tabelle prefix_message in der alle post abgelegt sind die spalte poster_Time auslesen lassen, also nur die die von dem user selbst sind. sein username ist in $uinfo['name'] gespeichert.

Ich erhalte ja dann alle einträge des users aus der spalte poster_Time als ergebnis.
Denke bis hier stimmt es.

Code:
$ergebnis = sql_query("SELECT poster_Time FROM prefix_message WHERE poster_Name=".$uinfo['name'].);

In der spalte poster_time wird das datum und die Uhrzeit des postes vom User gespeichert als Int(10) also zb. so 1200422771

jetzt mein richtiges prob.
Wie finde ich heraus, wieviele posts der user im Januar oder im februar oder im märz 2007 usw. geschrieben hat.

Also oben hab ich alle zeiten ermittelt. kann auch die gesamtanzahl zählen lassen. nur ich möchte sie nach monaten zählen.

und dann möchte ich den wert für jeden monat in einer Variablen speichern.


Ich hoffe ich hab es verständlich erklärt und könnt mir weiter helfen.

gruß
Thorsten
 
Hallo,

sieh dir mal die Funktion date() an. Damit kannst du alles mögliche aus dem Timestamp (den du ja in der DB gespeichert hast) auslesen.
z.B du ermittelst zu jedem zeiteintrag das monat, inkrementierst dann die variable zum dazugehörigen monat und schon ist's fertig!
 
Ja so ähnlich hab ich es mir schon gedacht, nur muß ich für jeden tag, jede stunde, jede minute und jeder sekunde eines monats vom jahr ein timestamp erstellen und prüfen lassen ob es in $ergebnis steckt und wie oft?
Hilfe

oder kann man einen zeitraum sag ma mal vom 01.01.2007 00.00 uhr bis 31.01.2007 23.59 uhr erstellen lassen und diese dann zählen lassen?
 
Also wenn ich das richtig verstanden habe, dann speicherst du bei jedem post vom user den timestamp mit.

wenn's so is, könnte das script so aussehen:
PHP:
$month = date("F",$timestamp);
switch($month)
{
   case "January":
      $january++;
      break;

   case "May":
      $may++;
      break;
}

echo 'Im Januar erställte Einträge: '.$january;

Natürlich kannst du noch eine Auswahl für den Benutzer hinzufügen, welchen Monat er anzeigen will.
 
ok muß zugeben, das ich das jetzt nicht ganz blicke :confused:

ich hab also meine abfrage

Code:
$ergebnis = sql_query("SELECT poster_Time FROM prefix_message WHERE poster_Name=".$uinfo['name'].);

$month = date("F",$timestamp); 
switch($month) 
{ 
   case "January": 
      $january++; 
      break; 

   case "May": 
      $may++; 
      break; 
} 

echo 'Im Januar erställte Einträge: '.$january;

und dann mit switch?
da wird aber jetzt nicht unterschieden ob 2007 oder 2008 ist, oder?
 
also wenn ich das richtig erkannt habe, steht der timestamp in $ergebnis drin, also kann die date-bestimmung gar nicht funktionieren, wenn du dort eine leere variable drin hast...

mit unterscheidung vom jahr:
PHP:
$ergebnis = sql_query("SELECT poster_Time FROM prefix_message WHERE poster_Name=".$uinfo['name'].);

$month = date("F",$ergebnis); 
$year = date("Y",$ergebnis);

if($year == "2008")
{
   if($month == "January")
   {
      $january++;
   }
}
echo 'Im Januar 2008 erstellte Einträge: '.$january;
usw....

sie dir mal die date()-Funktion an.
 
Zuletzt bearbeitet:
Wie wäre es einfach mit einem multidimensionalen Array?


Ich gehe davon aus, das $ergebnis ein Array ist.
PHP:
<?php
$ergebnis = sql_query("SELECT poster_Time FROM prefix_message WHERE poster_Name=".$uinfo['name'].); 

foreach($ergebnis as $val)
{
  if(!isset($count[date('Y', $val)][date('F', $val)])
  {
    $count[date('Y', $val)][date('F', $val)] = 0;
  }
  $count[date('Y', $val)][date('F', $val)]++;
}

var_dump($count);
?>

Ist jetzt mal schnell hingekritzelt.
 
Zurück