Hi,
ich habe versucht eine Art Counter einzubinden, der die Aufrufe der Profile hochzählt.
Ich habe es in die mx_userfunctions_options.php eingebunden und das Ding fubktioniert auch. Nur habe ich das Problem, dass die Anzeige nur sichtbar ist im eigenen Profil. Also wenn ich andere Profile ansehe, dann ist der Zähler nicht sichtbar.
Woran kann das liegen?
Wäre Euch sehr dankbar!
[Editiert am 27/5/2004 von taranis]
hi!
bau es mal in die ..../modules/Userinfo/view.php ein
ich hab es dort aber bei mir funkt es aber es zählt nur bis 127 und nciht weiter :) , wenn deiner funkt kannst es mir gern schicken ;)
l.g
Hi,
in der view.php hatte ich ihn schon drinne.
da ist das selbe, bzw. funktionier die view.php überhaupt noch, wenn man änderungen über die mx_userfunctions_options.php gemacht hat?
was für ein code verwendest du? kannst mal posten!
danke
Habe das zunächst mal so gemacht:
global $prefix, $user_prefix, $bgcolor1, $bgcolor2, $bgcolor3;
global $istheuser, $privmsgactive, $gbactiv, $showall;
$result3 = sql_query("select visits from ".$prefix."_users where name='".($uinfo['uname'])."' limit 1");
while(list($visits) = sql_fetch_row($result3))
{
$zaehler=$visits + "1";
OpenTable();
echo "<font face=Arial><center>Das Profil von ".$uinfo['uname']." wurde insgesamt <b>$zaehler</b> mal aufgerufen.</center>";
mysql_query("update `".$prefix."_users` set visits='".$zaehler."' WHERE uname='".$uinfo['uname']."'");
closeTable();
}
Ist nichts dolles, zählt halt einfach nur hoch. Keine IP Sperre oder so etwas drinne. Brauche ich auch nicht ;)
War mehr oder weniger mein erster Versuch mit so etwas *lol*
Also bitte nicht schimpfen, weil es so unprofesionell ist ;)
[Editiert am 27/5/2004 von taranis]
Hallo !
Zitatzählt nur bis 127 und nciht weiter
In der Datenbank falsches Format ausgewählt für das Zählerfeld, deshalb ist bei 127 schluss ;)
MfG
jubilee
Also das zumindest ist bei mir nicht der Fall :D
Zählt auch über 127.
Hm IP Sperre ist auch nix. Einen cookie der das dauernde hochzählen verhinder wäre es schon eher.
*lol* jo, wenn das ding erst mal zu sehen wäre *grins* habs nun schon an alle möglichen stellen geschoben *lach* immer wieder nur mein eigener zähler wird auch angezeigt. habe mal nen testuser für mich angelegt und da klappt es auch. verstehe irgendwie nicht warum, denn wenn ich einfach mal mit echo einen text wohin schreibe wird dieser doch auch angezeigt.
So sieht das bei mir aus.
Und steht in der option file
if (!$istheuser) {
$cookie = mxGetUserSession();
if ($cookie[1] != $uname) {
sql_query("UPDATE ".$user_prefix."_users SET user_click=user_click+1 where uname='$uname'", $dbi);
}
}
$zaehler = sql_query("select user_click from ".$user_prefix."_users where uname='$uname'", $dbi);
$anzahl = sql_fetch_array($zaehler, $dbi);
echo "".$anzahl['user_click']."
[Editiert am 27/5/2004 von NeMeSiSX2LC]
funktioniert bei mir nicht ... wo und in welche datei muss ich den code einfügen?
*lol* habe den fehler bei mir gefunden. Dummenfehler *grins* habe statt uname name geschrieben.
Zitatfunktioniert bei mir nicht ... wo und in welche datei muss ich den code einfügen?
Klar kann das bei dir nicht funktionieren haste ja auch nicht die gleich DB aufteilung wie ich ;)
Ich wollt mal fragen ob da schon jemand weitergekommen ist mit einen Profilaufrufzähler ?
Wo muß ich ( welchen ) Code einbauen ?
Wenn du heute nacht noch da bist stell ich denn code mal hier rein!
Weil der nu auch über cookie geregelt wird.
[Editiert am 22/6/2004 von NeMeSiSX2LC]
Ja Danke , das währ super !
Bin noch länger da , bastel schon den ganzen Tag am YA !
so sieht der codee im mom aus:
ob_start();
$time = 12*60*60;
if(!empty($_COOKIE['Profilaufruf'])) {
echo"";
}
else {
if (!$istheuser) {
$cookie = mxGetUserSession();
if ($cookie[1] != $uname) {
sql_query("UPDATE ".$user_prefix."_users SET user_click=user_click+1 where uname='$uname'");
}
}
setcookie("Profilaufruf","Profilaufruf",time()+$time);
}
Auf gerufen wird der über:
$user_click
Natürlich muss dann ein Feld in der mx_users angelegt werden.
Danke :)
Zitatcodee im mom
Jetzt muß ich nochmal blöd fragen :wall: , wo muß ich das einfügen ?
<?phpob_start();
$time = 12*60*60;
if(!empty($_COOKIE['Profilaufruf'])) {
echo"";
}
else {
if (!$istheuser) {
$cookie = mxGetUserSession();
if ($cookie[1] != $uname) {
sql_query("UPDATE ".$user_prefix."_users SET user_click=user_click+1 where uname='$uname'");
}
}
setcookie("Profilaufruf","Profilaufruf",time()+$time);
}?>
entweder in die mx_userfunctions_option.php (wenn benutzt) oder halt in die view.php im UserInfo Module.
und wie mache ich das feld in die mx_users? wie sieht das aus?
Also beim phpmyadmin müsstest du sowas in der richtig eingeben:
ALTER TABLE `mx_users` ADD `user_click` BIGINT( 20 ) DEFAULT '0' NOT NULL ;
danke für die hilfe!
habe das jetzt alles eingefügt aber es wird kein zähler im profil angezeigt ?????
Dann mach das feld mal in die save und register funktion oben mit rein
oben steht aufgerufen wird über die
PHP-Code:
<?php$user_click?>
muss ich das auch irgendwo einfügen,wenn ja wo?
das mußt du in der View.php in der Userinfo einfügen , so sieht es bei mir aus :
if (!empty($user_click)) echo"<tr valign=\"top\"><td bgcolor=\"$bgcolor3\"><b> <b>$uname"._profil.":</b></td><td bgcolor=\"$bgcolor3\">".$user_click."</td></tr>\n";
Naja das mit dem empty kannste dir sparen. weil default ist es eh auf 0 also ist es auch nie leer ;)
Stimmt !
Was anderes bei mir zählt der nicht , bleibt immer gleich .
Habe mich mit einen Testuser eingeloggt )
Logisch wenn du über deinen account drauf gehst wird en cookie gesetzt als wenn du jetzt von deinem PC aus einen Test account hast ist der cookie dort ja schon vorhanden. Sprich der Aufruf wird nicht gezählt ;)
Wie kann ich dann am einfachsten testen ob der Zähler funktioniert ?
Bin mir da nicht so sicher ( so wie ich den eingebaut habe ) . :redhead:
habe das jetzt an der stelle über dem avatar gesetzt aber es wird nichts angezeigt...
ob_start();
$time = 12*60*60;
if(!empty($_COOKIE['Profilaufruf'])) {
echo"";
}
else {
if (!$istheuser) {
$cookie = mxGetUserSession();
if ($cookie[1] != $uname) {
sql_query("UPDATE ".$user_prefix."_users SET user_click=user_click+1 where uname='$uname'");
}
}
setcookie("Profilaufruf","Profilaufruf",time()+$time);
}
if (!empty($user_click)) echo"<tr valign=\"top\"><td bgcolor=\"$bgcolor3\"><b> <b>$uname"._profil.":</b></td><td bgcolor=\"$bgcolor3\">".$user_click."</td></tr>\n";
Ich habe jetzt diesen Code eingebaut :
echo"<tr valign=\"top\"><td bgcolor=\"$bgcolor3\"><b><b>$uname"._profil."</b></td><td bgcolor=\"$bgcolor3\">".$user_click."<b>"._besucht."</b></td></tr>\n";
Der fuktioniert !
und wo kommt das hin?
<?phpob_start();
$time = 12*60*60;
if(!empty($_COOKIE['Profilaufruf'])) {
echo"";
}
else {
if (!$istheuser) {
$cookie = mxGetUserSession();
if ($cookie[1] != $uname) {
sql_query("UPDATE ".$user_prefix."_users SET user_click=user_click+1 where uname='$uname'");
}
}
setcookie("Profilaufruf","Profilaufruf",time()+$time);
}?>
ZitatWie kann ich dann am einfachsten testen ob der Zähler funktioniert ?
Bin mir da nicht so sicher ( so wie ich den eingebaut habe ) . :redhead:
Installier dir zb Mozilla der hat wieder en anderes cookie verzeichnis ;)
Dann funktioniert er nicht , denn ich habe es mit dem IE und Mozilla getestet , hatt aber nicht gezählt .
Bleibt immer auf 0 . :wall:
hm kann ich das teil irgendwo sehen?
Ich schick dir meine view.php per pn zu! ;)
per mail bitte
du das müsste laufen! ich meld mich mal bei dir an bzw bin glaube ich sogar noch angemeldet und test das mal.
wenn ihr das fertig getestet habt wäre es prima wenn ihr nochmal den richtigen kompletten code hier reinsetzt und wo er genau hinkommt.
danke
Zitatich meld mich mal bei dir an bzw bin glaube ich sogar noch angemeldet und test das mal.
Ich hab das nur local auf meinem PC am laufen , wie du wahrscheinlich gesehen hast baue ich die Seite ziemlich um .
Wenn alles fertig ist kommt ein Re Start !
Jupps was ich bloss nicht verstehe ich das du die view.php nimmst. Für so sachen haben wir doch die option file.
Das habe ich vorher nicht gewußt ! :redhead:
Hatt das nachteile das ich alles in der view.php mache ?
he merkste spätestens wenn MX 2.2 raus kommt das es nachteile hat ;)
welchen code sollen wir denn in die options einbauen und wo?
Immer noch denn selben wie die ganze Zeit.
Denn fügt ihr bei der function viewuserinfo_option_1 ein am besten direkt nach extract($uinfo);
Dann das Feld in die Tabelle mx_users machen. und mit ".$user_click." an der Stelle anzeigen lassen wo ihr wollt!
Zitathe merkste spätestens wenn MX 2.2 raus kommt das es nachteile hat
:wall: :wall:
Dann muß ich halt alles nochmal umbauen . :cry
Kann ich in die mx_userfunctions_options.sample alles genauso einbauen wie in die view.php schicken ?
@ NeMeSiSX2LC
Könntest du mir eine jungfräuliche mx_userfunctions_options.sample.php , eine view.php, eine navbar.php und eine edituser.php.
Ich habe nämlich keine orginalen mehr !
Öhm schon mal versucht hier aus dem Download Bereich das Base Pack zusaugen?
ich bekomme diesen fehler wenn ich es dort einfüge...
Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in /home/s/smartmuzik.com/public_html/portal/includes/mx_userfunctions_options.php on line 518
diesen code habe ich genommen:
if (!$istheuser) {
$cookie = mxGetUserSession();
if ($cookie[1] != $uname) {
sql_query("UPDATE ".$user_prefix."_users SET user_click=user_click+1 where uname='$uname'", $dbi);
}
}
$zaehler = sql_query("select user_click from ".$user_prefix."_users where uname='$uname'", $dbi);
$anzahl = sql_fetch_array($zaehler, $dbi);
echo "".$anzahl['user_click']."
Warum bitte nimmst denn code??
Boah mittlerweile haben wir das ding schon soweit das es über cookies geht und der code auch da steht! Also bitte LESEN!
ok...hatte noch den alten code...es wird soweit alles angeueigt aber nichts gezählt,steht immer noch bei allen auf 0...
Dann muss nochmal schauen.
Wie ich den zähler in der view.php eingebaut habe ist er dann nach zahlreichen Fehlschlägen gelaufen.
Aber jetzt wo ich alles in die unsefunktions_options.php eingebaut habe zählt er nicht .
Ob Mozilla oder IE der Zähler bleibt immer bei 0 !
@NeMeSiSX2LC
Kannst du meine userfuntions_options.php mal ansehen ?
Warte mal da stimmt sowieso noch was nicht
Gibts die Zälererweiterung schon in einem file oder ne komprimierte Anleitung?
Das würde mich auch mal interessieren, denn hier bei dem Posting blickt ja keiner mehr durch! *lol*
Bin eh grad beim durchstöbern des Forums und stelle immer wieder fest, dass es 1000 angefangene Dinge gibt, auf die irgendwann nichts mehr geantwortet wurde!!!!
Schade....denn da macht das Suchen nach bestimmten Dingen keinen Spaß mehr, weil man erst zig Seiten durchblättert und durchliest, und am Ende steht man wieder vor dem NICHTS!
Gruß
Bernd
Gibt es das Ganze auch noch etwas verständlich ;)?
Ich würde das auch gerne bei mir einbauen.
Sorry Lui-Kang es kommt noch wenn du willst kann ich das mal bei dir anbauen wenn du hier nicht durchsteigst
Einbauen brauchst Du es nicht unbedingt.
Das SQL Feld habe ich schon angelegt. Ich muß nur noch wissen wie der Code lautet und wo er in der mx_userfunction_options.php rein muß.
Mehr nicht. Ich will Dir da nicht zuviel Arbeit machen!
Ok dann gehen wiirs durch. Als erstes welcher Code wohin?? Gibt ja zwei einer der aktualisiert und einer der ausgibt
Es soll im Grunde genommen unter das Feld "Benutzergruppe" die Anzahl erscheinen, wie oft das jeweilige Profil aufgerufen wurde.
Wo die jeweiligen Codes stehen ist im Grunde mir egal. Sollte nur nicht direkt in den Eingabemasken des Profiles liegen.
Ich habe den ganzen code jetzt mal in der options eingefügt - es wird aber weder gezählt noch angezeigt.
das datenbankfeld habe ich angelegt.
Music in wechsel option? gibt ja zwei von der Sorte :)
userfunction_options.php ist doch die richtige, oder?
OK! Ich habs jetzt!
Zuerst muß das Datenbankfeld wie folgt per phpMyAdmin (oder was anderem) eingerichtet werden:
ALTER TABLE `mx_users` ADD `user_click` BIGINT( 20 ) DEFAULT '0' NOT NULL;
Anschließend wird in die Datei mx_userfunctions_options.php folgendes in der Function function viewuserinfo_option_1($uinfo) nach extract($uinfo); eingefügt:
ob_start();
$time = 12*60*60;
if(!empty($_COOKIE['Profilaufruf'])) {
echo"";
}
else {
if (!$istheuser) {
$cookie = mxGetUserSession();
if ($cookie[1] != $uname) {
sql_query("UPDATE ".$user_prefix."_users SET user_click=user_click+1 where uname='$uname'");
}
}
setcookie("Profilaufruf","Profilaufruf",time()+$time);
}
Nun kommt noch die Anzeige.
Die wird wie folgt aufgerufen:
echo"<tr valign=\"top\"><td bgcolor=\"$bgcolor2\"><b> <b>Profilaufrufe:</b></td><td bgcolor=\"$bgcolor3\">".$user_click."</td></tr>\n";
Das sollte es gewesen sein.
Viel Erfolg ;)!
Was mir allerdings gerade auffällt... das Ding aktualisiert nicht immer.
Ich habe jetzt mit drei Browsern ein paarmal aktualisiert (F5) aber manchmal bleibt er einfach stehen.
Erst wenn ich länger mit einer aktualisierung warte, geht die Anzahl hoch.
Kann man das irgendwie anders einstellen? Ich kenne mich da mit dieser Zeitrechung nicht so aus.
so ganz scheint das nicht zu stimmen.
eingebaut und mal 2 profile aufgerufen.
im ersten Profil wurde mein Besuch gezählt,
im 2. Profil nicht da bleibt der Zähler auf 0
Jupps liegt daran das bei der variable $time 12*60*60 steht der aufruf wird also nur alle 24 std gezählt
Stümmt versuchts mal hier mit
$cookie = mxGetUserSession();
if(!empty($_COOKIE["Profilaufruf".$uinfo['uname'].""]) || $cookie[0] == $uinfo['uid']) {
echo"";
}elseif (mxIsUser()) {
if ($cookie[0] != $uinfo['uid']) {
sql_query("UPDATE ".$user_prefix."_users SET user_click=user_click+1 where uname='".$uinfo['uname']."'");
}
setcookie("Profilaufruf".$uinfo['uname']."","Profilaufruf",time()+$time);
}
Bitte nach Feld gucken ob das bei euch genauso heisst
so passt es :)
ich finde die Zeit von 24h angebracht, wozu soll der Zähler unnötig hochgetrieben werden.
da machen sich die meisten dannm eh nur nen Spass draus und die Funktion wäre umsonst.
Öhm... also muß ich das hier:
ob_start();
$time = 12*60*60;
if(!empty($_COOKIE['Profilaufruf'])) {
echo"";
}
else {
if (!$istheuser) {
$cookie = mxGetUserSession();
if ($cookie[1] != $uname) {
sql_query("UPDATE ".$user_prefix."_users SET user_click=user_click+1 where uname='$uname'");
}
}
setcookie("Profilaufruf","Profilaufruf",time()+$time);
}
durch das hier:
$cookie = mxGetUserSession();
if(!empty($_COOKIE["Profilaufruf".$uinfo['uname'].""]) || $cookie[0] == $uinfo['uid']) {
echo"";
}elseif (mxIsUser()) {
if ($cookie[0] != $uinfo['uid']) {
sql_query("UPDATE ".$user_prefix."_users SET user_click=user_click+1 where uname='".$uinfo['uname']."'");
}
setcookie("Profilaufruf".$uinfo['uname']."","Profilaufruf",time()+$time);
}
ersetzen?
$time = 12*60*60;
$cookie = mxGetUserSession();
if(!empty($_COOKIE["Profilaufruf".$uinfo['uname'].""]) || $cookie[0] == $uinfo['uid']) {
echo"";
}elseif (mxIsUser()) {
if ($cookie[0] != $uinfo['uid']) {
sql_query("UPDATE ".$user_prefix."_users SET user_click=user_click+1 where uname='".$uinfo['uname']."'");
}
setcookie("Profilaufruf".$uinfo['uname']."","Profilaufruf",time()+$time);
}
so müsste es ersetzt werden
Mal ein kleiner Vorschlag an die Admins...
Wie oben angesprochen wurde, ist es extrem zeitaufwendig, hier im Forum nach irgendwelchen Modifikationen zu suchen, da die meisten Threads am Ende zu keiner Lösung kommen.
Ihr könntet doch solch schöne Sachen wie die Lösung hier in ein extra Forum packen, wo nur die Lösung ohne die ganze Vorgeschichte veröffentlicht wird. So würdet ihr schnell eine super Sammlung in Form kurzer Tutorials haben und die User müssten nicht ewig suchen...
ich versuche jetzt gerade schon wieder das einzusetzten aber es wird bei mir nicht mal die tabelle angezeigt im userprofil.
irgendwie bin ich zu blöde dafür
Ok, es hat geklappt - bei mir läuft das noch über die view.php
tuningcar.de's Fehler liegt in dem, dass die variable $user_prefix im sql_query nicht definiert ist.
Hab ihm das mal korrigiert ;)
Zitat von: cmz am 07 Januar 2005, 20:48:31
tuningcar.de's Fehler liegt in dem, dass die variable $user_prefix im sql_query nicht definiert ist.
Hab ihm das mal korrigiert ;)
Japps steht standardmässig nicht in den globals mit drin ;)