tutorials.de Buch-Aktion 05/2012
Like Tree5Danke
  • 1 Beitrag von Joe
  • 1 Beitrag von Joe
  • 2 Beitrag von tombe
  • 1 Beitrag von Joe
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
369
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Jay Free Jay Free ist offline Mitglied Bronze
    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

    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);
            
    }
    ?>
    Die Daten die er nun ausspuckt sind:

    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)
     

  2. #2
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    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.
    Jay Free bedankt sich. 

  3. #3
    Jay Free Jay Free ist offline Mitglied Bronze
    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
     

  4. #4
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    Mach das, bei solchen Fragen kann dir hier immer jemand helfen.
    Wegen der Lesebarkeit und Hilfestellung gleich ordentliches Code formatieren benutzen und in
    PHP-Code:
     PHP-Tags 
    schreiben
    Jay Free bedankt sich. 

  5. #5
    Jay Free Jay Free ist offline Mitglied Bronze
    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
    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 />'
    Wird ein leeres Feld bzw. leerer Datensatz sowohl "klicks" als auch "user" angezeigt.
    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:
    PHP-Code:
    result mysql_query("UPDATE tabelle SET klicks =klicks+1"); 
    So ich gehe erstmal ins Bettchen!

    Vielen Dank an Joe! Retter in der Not ♥

    LG Jay
    Geändert von Jay Free (06.10.11 um 02:52 Uhr) Grund: Müdigkeit :(
     

  6. #6
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    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.
    Joe und Jay Free bedanken sich. 
    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.

  7. #7
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    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:
    PHP-Code:
    while($row mysql_fetch_row($result))
            echo 
    $row['SpaltenameUser'].' <br /> '.$row['SpaltennameKlicks'].'klicks<br /><br />'
    Zu 2.
    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)
    Jay Free bedankt sich. 

  8. #8
    Jay Free Jay Free ist offline Mitglied Bronze
    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
     

  9. #9
    Jay Free Jay Free ist offline Mitglied Bronze
    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:
    PHP-Code:
    INSERT INTO tabelle (USERklicksVALUES('username'1
    ON DUPLICATE KEY UPDATE klicks klicks 
    Wurden mir die "User" nichtmehr angezeigt und die klicks blieben stehen.
    Ich habe Joe's Code benutzt:
    PHP-Code:
    $Username $_user['USERNICKNAME'][1]; 
    result mysql_query("UPDATE tabelle SET klicks =klicks+1 WHERE name='$Username'"); 
    Mit diesem wurden die User-Klicks nun einzelnt pro Referer gezählt.

    Joe's Vorschlag:
    PHP-Code:
    while($row mysql_fetch_row($result))
            echo 
    $row['SpaltenameUser'].' <br /> '.$row['SpaltennameKlicks'].'klicks<br /><br />'
    Hat leider bei mir auch nicht funktioniert, er gab mir leider nicht den "User" aus.
    Meine row in der tabelle heisst "name" also habe ich :

    PHP-Code:
     (...) echo $row['name'].' <br /> (...) 
    geschrieben, funktionierte nicht. bin bei:
    PHP-Code:
    echo $row[0].' <br /> '.$row[2].'klicks<br /><br />'
    geblieben.
    Werde dort noch etwas wegen der "Schönheit" basteln

    Ich danke euch beiden!

    /Edit:

    zu Joe's vorschlag:
    PHP-Code:
    while($row mysql_fetch_row($result))
            echo 
    $row['SpaltenameUser'].' <br /> '.$row['SpaltennameKlicks'].'klicks<br /><br />'
    funktioniert doch, allerdings sollte man das mysql_fetch_row in mysql_fetch_assoc ändern


    Viele Grüße Jayyyyy
    Geändert von Jay Free (08.10.11 um 12:20 Uhr) Grund: Trödelei
     

  10. #10
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    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

  1. C++ daten in txt speichern
    Von zeRrY im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 19.05.09, 22:03
  2. Antworten: 2
    Letzter Beitrag: 25.09.07, 15:30
  3. EJB Speichern von Daten
    Von macfreakz im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 3
    Letzter Beitrag: 28.04.05, 10:08
  4. ********Daten speichern********
    Von Teerow im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 04.05.04, 23:35
  5. Antworten: 4
    Letzter Beitrag: 01.04.02, 16:17

Stichworte