Top-User der letzten 30 tage

Hi,

ich habe ein kleines Problem und weiß nicht so recht wie ich es bewältige.
Ich habe eine MySQL Tabelle in der ich die Spalten „name“ und t_stamp hab.
Nun kommen in den Zeilen verschiedene Namen verschied oft vor, dazu mit der Uhrzeit/Datum wann der Name eingetragen wurde.

Ich möchte nun ein php-script erstellen welches mir die User durchzählt [bis 30 tage zurück] und mir dann sagt Name 1 kommt 54 mal vor, Name 2 22 mal usw. [möglichst geordnet nach der anzahl der Einträge]

Leider habe ich nur sehr wenig Ahnung von PHP und SQL und kann es daher nicht selber umsetzen

lg und viele dank für jede hilfe
IceDragon

$heute = time();
$vor_dreissig_tagen = $heute - 2592000;
$heute_vo = date(„Y-m-d h:m:i“, $vor_dreissig_tagen);

$sql=„SELECT name, count(id) AS anzahl FROM namen WHERE tm_stmp > ‚$heute_vo‘ GROUP BY name“;
$sql2 = mysql_query($sql);
while ($var = mysql_fetch_array($sql2)) {
echo $var[‚name‘]." - „.$var[‚anzahl‘].“
";
}

Das sollte genau das sein, wonach du suchst.

Kleine Anmerkung: man kann auch von MySQL direkt den Intervall nutzen.

$sql="SELECT name, count(id) AS anzahl FROM namen WHERE
DATE_SUB(CURDATE(),INTERVAL 30 DAY) ";
}

Gruss
Stefan

Vielen vielen Dank,

genau das habe ich gesucht.
Nur kleine Sache noch: nach der Anzahl der Einträge kann ich sie nicht zufällig ordnen oder? Im Moment werden sie ja nach Namen geordnet.

Lg und danke nochmal
IceDragon

nach der Anzahl der Einträge kann ich
sie nicht zufällig ordnen oder? Im Moment werden sie ja nach
Namen geordnet.

$heute = time();
$vor_dreissig_tagen = $heute - 2592000;
$heute_vo = date(„Y-m-d h:m:i“, $vor_dreissig_tagen);

$sql=„SELECT name, count(id) AS anzahl FROM namen WHERE tm_stmp > ‚$heute_vo‘ GROUP BY name ORDER BY tm_stmp“;
$sql2 = mysql_query($sql);
while ($var = mysql_fetch_array($sql2)) {
echo $var[‚name‘]." - „.$var[‚anzahl‘].“
";
}

müsste funktionieren

Nee sry, dann sortiert er es ja zeitlich, wer zu erst bzw zu letzt eingetragen hat, möchte es aber gerne nach der häuftigkeit geordnet haben. Also wie ein Ranking:

Name 2: 50
Name 5: 42
Name 1: 30

usw

Lg
IceDragon

dann nach ‚anzahl‘ sortieren

$heute = time();
$vor_dreissig_tagen = $heute - 2592000;
$heute_vo = date(„Y-m-d h:m:i“, $vor_dreissig_tagen);

$sql=„SELECT name, count(id) AS anzahl FROM namen WHERE tm_stmp > ‚$heute_vo‘ GROUP BY name ORDER BY anzahl“;
$sql2 = mysql_query($sql);
while ($var = mysql_fetch_array($sql2)) {
echo $var[‚name‘]." - „.$var[‚anzahl‘].“
";
}

und eventuell ein bisschen mitdenken :wink: