total view count für user auf der profil-seite

am 28.11.2007 - 17:22 Uhr in
ich möchte gerne die gesamtanzahl der ansichten für alle beiträge, die ein user erstellt hat in seinem profil (.tpl.php datei)darstellen. leider habe ich keinen ansatz gefunden (mysql noob) - soll aber ganz einfach gehen.
Output sollte etwa sein:
"Deine Beiträge wurden insgesamt 232435 mal angeschaut."
ich bin mir auch nicht sicher ob so eine anfrage den server evtl arg belasten würde.
hat vielleicht jemand einen ansatz, eine solche query zu schreiben?
- Anmelden oder Registrieren um Kommentare zu schreiben
versuchs mal damit:
am 28.11.2007 - 23:07 Uhr
versuchs mal damit:
Bei sowas hilft api.drupal.org oft weiter. In dam Fall: http://api.drupal.org/api/function/statistics_get/5
<?php
// stats for user 1
$user_uid = 1;
// Select all Node IDs created by user with uid = $user_uid
$nodes = db_query("SELECT nid FROM {node} WHERE uid = %d", $user_uid);
// for couting the nodes
$nodecount = 0;
while($node = db_fetch_object($nodes)) {
// get total nodeviews for every node
$nodeviews = statistics_get($node->nid);
// sum all nodeviews
$total_nodeviews += $nodeviews['totalcount'];
// count all nodes
$nodecount++;
}
print "Deine $nodecount Beiträge wurden insgesamt $total_nodeviews aufgerufen.";
?>
Ich glaube nicht, dass das ein große Belastung für den Server ist. Aber vielleicht hat ja jemand ne andere Meinung dazu?
Danke, 1337 mal danke!
am 29.11.2007 - 00:38 Uhr
<?php
// stats for user
$user_uid = $user->uid;
// Select all Node IDs created by user with uid = $user_uid
$nodes = db_query("SELECT nid FROM {node} WHERE uid = %d", $user_uid);
// for couting the nodes
$nodecount = 0;
while($node = db_fetch_object($nodes)) {
// get total nodeviews for every node
$nodeviews = statistics_get($node->nid);
// sum all nodeviews
$total_nodeviews += $nodeviews['totalcount'];
// count all nodes
$nodecount++;
}
print $user->name;
print " hat $nodecount Beiträge geschrieben. Diese wurden insgesamt $total_nodeviews mal aufgerufen.";
?>
wie butter, super!
--
volunity
effektiver PHP Code, wie man ihn schreiben sollte
am 29.11.2007 - 01:13 Uhr
print " hat $nodecount Beiträge geschrieben. Diese wurden insgesamt $total_nodeviews mal aufgerufen.";
Das sind die typischen Anfaenger mit PHP Code.
Noch nie was von langsamen und schnellen PHP Code gehoert?
Das waere schnell:
<?php
print ' hat '.$nodecount.' Beiträge geschrieben. Diese wurden insgesamt '.$total_nodeviews.' mal aufgerufen.';
?>
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
quiptime, hast recht,
am 29.11.2007 - 08:26 Uhr
quiptime, hast recht, *schäm*
hab das der Faulheit und Übersichtlichkeit halber so hingetippt. Aber ehrlich gesagt, in dem Fall macht es auch nicht viel aus. Es ist nur ein kurzer Satz. Der Interpreter muss aber den string durchsuchen. Schneller ists, ihm die Variablen eplizit zu liefern.
Sag mal quiptime, ist das von der Art der Anführungszeichen abhängig?
Wenn ich "einen sehr langen Satz" mit doppelten Anführungszeichen schreibe. Woher weis der Interpreter ob er jetzt Variablen suchen soll oder nicht?
keine Faulheit, sondern nur dumme Angewohnheit
am 29.11.2007 - 09:45 Uhr
Es ist nur ein kurzer Satz.
In dem Fall ja. Aber wenn eine PHP Datei aus tausenden Zeilen besteht. Wie sieht es dann aus. Da rechnen sich solche "nur kurzen Saetze" ganz schoen hoch.
Sag mal quiptime, ist das von der Art der Anführungszeichen abhängig?
Ja
Wenn ich "einen sehr langen Satz" mit doppelten Anführungszeichen schreibe. Woher weis der Interpreter ob er jetzt Variablen suchen soll oder nicht?
Er weiss es durch die doppelten Anfuehrungszeichen. Die bedeuten fuer den Interpreter, gucke nach ob es im String Variablen gibt. Er muss also in Fall ein mal mehr parsen. Und wenn es keine Variablen im String gibt ist es sinnloses parsen.
Wenn ich nun Strings ohne Variablen immer in einfache Anfuehrungsstrichen packe gibt es kein sinnloses parsen. Bei hunderten oder tausenden nicht geparster Strings ergibt das schon einen Unterschied.
Mit einfachen Anfuehrungszeichen gibt er den String ungefragt an den Webserver zur Auslieferung.
Die Faulheit mit den Anfuehrungszeichen bringt auch andere Code-Stilblueten hervor. Dabei wird es dann eigentlich schon perverser Code. Beispiel:
<?php
print "<img scr=\"foobar.jpg\" alt=\"foobar\" />";
?>
In diesem Fall spart man mit den einfachen Anfuehrungszeichen sogar:
<?php
print '<img scr="foobar.jpg" alt="foobar" />';
?>
Bei PHP Variablen ist es das Gleiche. Beispiel:
<?php
$foo["bar"];
$foo["$bar"];
?>
Besser ist auch dabei:
<?php
$foo['bar']
$foo[$bar];
?>
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Danke für die Erklärung :)
am 29.11.2007 - 10:55 Uhr
Danke für die Erklärung :)
wieder was gelernt, danke!
am 17.12.2007 - 14:05 Uhr
danke!