5Danke
ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
369
369
EMPFEHLEN
-
05.10.11 20:46 #1
- Registriert seit
- Oct 2011
- Ort
- Hamburg, Germany
- Beiträge
- 38
Hallo liebe Leute,
bin ein kleiner php anfänger!
Das Script zum auslesen der nötigen Datein habe ich bereits erfolgreich gecodet.
# Neuer User kommt von www.example.com/user/xy
Die Daten die er nun ausspuckt sind:PHP-Code:<?php
$_ref = $_SERVER['HTTP_REFERER'];
if (eregi('example.com', $_ref))
{
$_ref .= '&';
preg_match('/user\/(.*)&/UiS', $_ref, $_user['USERNICKNAME']);
$_user['USERNICKNAME'][1] =
urldecode($_user['USERNICKNAME'][1]);
//var_dump($_user);
}
?>
Nickname: "XY"
Jetzt zu meinem Problem.
Ich möchte gerne den Nicknamen speichern und die Zugriffszahlen die von diesem Link www.example.com/user/xy (Referer) kommen.
Frage: Wie kann ich die Anzahl der "Klicks" die durch den Link kommen speichern?
und wie kann ich den Benutzter-Namen speichern?
Beispiel:
115 Klicks durch Nickname
20 Klicks durch Nickname2
1 Klick durch XY
Edit: hinzufügen sollte ich das ich pro ausgelesenen Nicknamen einen eigenen Counter haben möchte.
Hat evtl. jemand einen Lösungsansatz bzw. einen Tipp nach was ich googlen kann
Liebe Grüße Jay!Geändert von Jay Free (05.10.11 um 23:39 Uhr)
-
Dazu bietet sich eine Datenbank an.
Meinetwegen Tabellenname: User Spalten: ID,Username,Klicks.
Du prüfst (MYSQL SELECT) ob User XY schon in der DB steht (direckt in der ersten if Abfrage) und wenn nicht trägst du ihn ein(MYSQL INSERT INTO).
Sollte er schon drinnen stehen erhöhst du die Spalte Klicks in deiner Datenbank um +1 (MYSQL UPDATE).
So hast du deine Anzahl(Counter) Klicks und kannst sie entsprechend anzeigen lassen.
-
05.10.11 23:06 #3
- Registriert seit
- Oct 2011
- Ort
- Hamburg, Germany
- Beiträge
- 38
Hey Joe,
danke für deine schnelle Antwort!
Ich werde mich sofort mal dran machen und alles so schreiben wie du es gesagt hast, falls es widererwarten doch nicht klappen sollte dann meld ich mich nochmal, danke
LG Jay
-
Mach das, bei solchen Fragen kann dir hier immer jemand helfen.
Wegen der Lesebarkeit und Hilfestellung gleich ordentliches Code formatieren benutzen und inschreibenPHP-Code:PHP-Tags
-
06.10.11 02:43 #5
- Registriert seit
- Oct 2011
- Ort
- Hamburg, Germany
- Beiträge
- 38
Hallo Joe,
bin von mir selbst überrascht ...
Seit dem ich den Beitrag gepostet habe, arbeite ich daran und siehe da.
Ich habs fast geschafft! :')
Nur noch Schönheitsfehler!
EDIT: Wichtig: Bin so Müde das ich glatt übersehen habe, dass nach jedem Referer-Besucher bei jedem "usernamen" +1 Klick hinzugefügt wird, nicht wie gewollt nur bei
dem user der der Referer-Seite zugeordnet war (example.com/user/xy)
Wenn ich also über Referer "example.com/user/xy" zugreife, setzt er nicht nur bei xy sondern bei allen "usernames" +1 klick ...
hier bei bräuchte ich dann noch einen Tipp
danke
1.: In der Auflistung (dafür verwende ich
Wird ein leeres Feld bzw. leerer Datensatz sowohl "klicks" als auch "user" angezeigt.PHP-Code:$result = mysql_query("SELECT * FROM tabelle ORDER BY name ASC");
while($row = mysql_fetch_row($result))
echo $row[0].' <br /> '.$row[2].'klicks<br /><br />';
Kann ich mir nicht erklären evtl. weiß ja jemand bescheid!
2.: Der erste Klick wird als "0" gezählt bzw. wird nicht angezeigt. Da steht dann nur USER klicks " "
Erst nach dem 2 Referer-Klick steht dort die "1".
Ich benutze zum Zählen der Klicks:
So ich gehe erstmal ins Bettchen!PHP-Code:result = mysql_query("UPDATE tabelle SET klicks =klicks+1");

Vielen Dank an Joe! Retter in der Not ♥
LG JayGeändert von Jay Free (06.10.11 um 02:52 Uhr) Grund: Müdigkeit :(
-
06.10.11 08:05 #6
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Also ich würde die Abfrage/Anweisung so schreiben:
Code sql:1 2
INSERT INTO tabelle (USER, klicks) VALUES('username', 1) ON DUPLICATE KEY UPDATE klicks = klicks + 1
Dazu muss der Username als eindeutiger Index in der Tabelle angelegt sein.
In diesem Fall wird versucht ein neuer Eintrag für den entsprechenden User anzulegen (der Wert "username" muss natürlich entsprechend gesetzt werden), das Feld "klicks" bekommt in diesem Fall den Wert 1.
Ist für diesen User bereits ein Eintrag vorhanden wird bei diesem der aktuelle Wert des Feldes "klicks" einfach um 1 erhöht.Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Hallo Jay Free,
Zu 1.
Es ist lebarer wenn du den Spaltennamen angibst. Dann musst du den Arraynamen noch mit einfachen oder doppelten Anführungszeichen versehen Also etwa so:
Zu 2.PHP-Code:while($row = mysql_fetch_row($result))
echo $row['SpaltenameUser'].' <br /> '.$row['SpaltennameKlicks'].'klicks<br /><br />';
Besser als von Tombe beschrieben kann man das nicht machen.
Bei dir hatte WHERE Clausel gefehlt. Mit WHERE hättest du nur den Datensatz ansprechen können welchen du erhöhen möchtest. zb:
Code sql:1 2 3 4 5 6
$result = mysql_query("UPDATE tabelle SET klicks =klicks+1 WHERE User='$Username'");
Die Lösung von Tombe ersetzt aber das Insert INTO und das UPDATE und macht aus 2 MYSQL-Abfragen eine. Das sieht nicht nur eleganter aus sondern ist auch wesentlich performanter.Geändert von Joe (06.10.11 um 11:03 Uhr)
-
06.10.11 15:22 #8
- Registriert seit
- Oct 2011
- Ort
- Hamburg, Germany
- Beiträge
- 38
Hallo!
Danke Ihr zwei, ich werde das gleich mal ausprobieren und dann hier schreiben ob es funktioniert hat
Dann makiere ich auch das Thema als "Erledigt"
Lg
-
06.10.11 16:20 #9
- Registriert seit
- Oct 2011
- Ort
- Hamburg, Germany
- Beiträge
- 38
Thema Erledigt.
Also habe die Codes versucht einzubauen, hat mehr oder weniger geklappt!
Wenn ich thombe's Code:
Wurden mir die "User" nichtmehr angezeigt und die klicks blieben stehen.PHP-Code:INSERT INTO tabelle (USER, klicks) VALUES('username', 1)
ON DUPLICATE KEY UPDATE klicks = klicks + 1
Ich habe Joe's Code benutzt:
Mit diesem wurden die User-Klicks nun einzelnt pro Referer gezählt.PHP-Code:$Username = $_user['USERNICKNAME'][1];
result = mysql_query("UPDATE tabelle SET klicks =klicks+1 WHERE name='$Username'");
Joe's Vorschlag:
Hat leider bei mir auch nicht funktioniert, er gab mir leider nicht den "User" aus.PHP-Code:while($row = mysql_fetch_row($result))
echo $row['SpaltenameUser'].' <br /> '.$row['SpaltennameKlicks'].'klicks<br /><br />';
Meine row in der tabelle heisst "name" also habe ich :
geschrieben, funktionierte nicht. bin bei:PHP-Code:(...) echo $row['name'].' <br /> (...)
geblieben.PHP-Code:echo $row[0].' <br /> '.$row[2].'klicks<br /><br />';
Werde dort noch etwas wegen der "Schönheit" basteln
Ich danke euch beiden!
/Edit:
zu Joe's vorschlag:
funktioniert doch, allerdings sollte man das mysql_fetch_row in mysql_fetch_assoc ändernPHP-Code:while($row = mysql_fetch_row($result))
echo $row['SpaltenameUser'].' <br /> '.$row['SpaltennameKlicks'].'klicks<br /><br />';

Viele Grüße Jayyyyy
Geändert von Jay Free (08.10.11 um 12:20 Uhr) Grund: Trödelei
-
Weil ich grad dein Edit sehe,
Ja das passiert öfter das man solche kleinen Details übersieht.
Nochmals zu Tombe's guten Lösung:
'username' ist exemplarisch du müsstest auch hier den User in die Variable speichern und den Code entsprechend abändern. '$username' .
Natürlich nicht die Klammern und doppelten Anführungszeichen vergessen (halt wie gewohnt).
Ähnliche Themen
-
C++ daten in txt speichern
Von zeRrY im Forum C/C++Antworten: 1Letzter Beitrag: 19.05.09, 22:03 -
Per "img.php?" erzeugte Bilder im Filesystem speichern - hochinteressant ;)
Von IR-Bastian im Forum PHPAntworten: 2Letzter Beitrag: 25.09.07, 15:30 -
EJB Speichern von Daten
Von macfreakz im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 3Letzter Beitrag: 28.04.05, 10:08 -
********Daten speichern********
Von Teerow im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 04.05.04, 23:35 -
dyn. erzeugte Seite anschließend "speichern"
Von lambda im Forum PHPAntworten: 4Letzter Beitrag: 01.04.02, 16:17





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren