meist gelesene oder geklickte Artikel

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • meist gelesene oder geklickte Artikel

    Hallo Leute, ich würde gerne in meinen Seiten anzeigen können wie oft eine Seite angeklickt oder gelesen wurde, irgendwas in der Richtung, ich habe aber keine Ahnung wie ich es machen soll, bitte gibt mir Hinweise.

  • #2
    bei jedem aufruf nen counter in der DB hochzählen und diesen später auswerten.

    *move* nach BS.

    Kommentar


    • #3
      hi TobiaZ, ich kenne kleine tutorials wo Counter mit .txt Dateien erstellt werden, muss ich auch in die Richtung denken oder muss es eine andere Art Counter sein.

      Kommentar


      • #4
        ja, z.b.
        Einfach irgendwas wo die anzahl der aufrufe (also ein zahlenwert) gespeichert und erhöht werden kann.

        Kommentar


        • #5
          in der artikel db ein neues feld anlegen, zB: counter

          dann in der aufruf-php-seite

          mysql_query("UPDATE artikel SET counter=counter+1 WHERE id='...");

          das wars schon

          Kommentar


          • #6
            Original geschrieben von stf]Daywalker
            in der artikel db ein neues feld anlegen, zB: counter

            dann in der aufruf-php-seite

            mysql_query("UPDATE artikel SET counter=counter+1 WHERE id='...");

            das wars schon
            Hi, danke für die Hilfe!!

            Eine sehr einfache und leichte Lösung, gefällt mir :-), kann man da aber noch eine Reloadsperre rein machen, also für den Fall das der Besucher die Seite öfter lädt, wäre doch sicher Sinvoll sowas ne?

            Kommentar


            • #7
              Kleiner Zusatz: Vielleicht ist dir das gegen Kiddie-Push-Missbrauch nützlich:

              PHP-Code:
              function anti_push($ses,$id,$array=FALSE) {

               IF ( !
              is_array($_SESSION[$ses]) ) {
                 
              $_SESSION[$ses] = array();
               }
               

                IF ( !
              in_array($id$_SESSION[$ses]) ) {
                      
              array_push($_SESSION[$ses], $id);
                      return 
              true;
                    } else {
                      return 
              false;
                    }


              Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
              sondern mit den Augen das Manual zu lesen.

              Kommentar


              • #8
                Also recht herzlichen Dank erst mal für deine Hilfe !!

                Ich fasse mal zusammen wie ich das Script verstanden habe:

                1. function prüft ob variable $_SESSION[$ses] kein Array ist, ist dies der Fall wird ein Array $_SESSION[$ses] gebildet.
                2. function prüft ob in array $_SESSION[$ses] Variable $id ist, ist dies der Fall wird true andernfalls False zurückgegeben.

                Also ich kann das Script mir zwar mit Hilfe des PHP Manuels erklären, aber ich verstehe nicht wie ich es in mein Script oben einbauen kann als Reloadsperre. Ich will dir also nicht deine kostbare zeit rauben, aber es wäre sehr nett von dir wenn du versuchen würdest mir es zu erklären.

                Kommentar


                • #9
                  na,

                  if(anti_push(...))
                  die(du hast schon gevoted);

                  Kommentar


                  • #10
                    Original geschrieben von TobiaZ
                    na,

                    if(anti_push(...))
                    die(du hast schon gevoted);
                    Oh, mist ich versteh schon einen Anfänger wie mich der zu wenig Ahnung hat von PHP will man hier nicht haben, ich kanns ja immerhin verstehen, mich würds auch nerven wenn jeden tag die gleichen Fragen kommen, sorry.

                    Kommentar


                    • #11
                      Original geschrieben von lamoe
                      Oh, mist ich versteh schon einen Anfänger wie mich der zu wenig Ahnung hat von PHP will man hier nicht haben, ich kanns ja immerhin verstehen, mich würds auch nerven wenn jeden tag die gleichen Fragen kommen, sorry.
                      Wäre dem so, wäre dein Topic mit 0 Replays
                      Allerdings, wer lernen will: learning by doing

                      Einfach ein bisschen herumspielen.

                      Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                      sondern mit den Augen das Manual zu lesen.

                      Kommentar


                      • #12
                        Ich hab jetzt was gebaut das glaub ich den Vorschlag ganz nahe kommt.

                        1. prüfe ich mit einer mysql query ob die aktuelle datei schon in der tabelle liegt, ist dies nicht der fall wird erst mal der Dateiname, session id und counter Wert 1 in die tabelle geschrieben.

                        2. wenn die aktuelle seite schon in der tabelle ist, prüfe ich ob die session id in der tabelle die gleiche ist wie die aktuelle im browser, wenn sie nicht gleich sind, wird der counter um eins erhöt und die aktuelle session gespeichert, wenn sie gleich sind passiert nichts.

                        Aber irgendwie kann das ja nicht klappen so, da die session id immer gleich ist für eine Sitzung, wird jede folgende Seite die man lädt nicht mehr gezählt auch wenn es eine andere Seite ist, weil die prüfung der session id immer gleich ergibt.

                        Wie kann man es besser machen?

                        Kommentar


                        • #13
                          Wie sieht dein Code aus? Php-Tag benutzen.

                          Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                          sondern mit den Augen das Manual zu lesen.

                          Kommentar


                          • #14
                            Hier der Code, ich habe in jetzt allerdings etwas geändert, ich habe jetzt nämlich jeder session id noch den aktuellen Dateinamen angehängt und denke das ich so es jetzt doch noch hinbekomme das nun jede Seite gezählt wird, aber es ist im ganzen keine so gute Lösung denke ich mal

                            PHP-Code:
                            $dit mysql_query("SELECT `dateiname` FROM `counter` WHERE `dateiname`='".$_SERVER['PHP_SELF']."'"); echo mysql_error();  $dit_ mysql_num_rows($dit); //echo $dit_;
                            if($dit_ 0) {
                            $sit mysql_query("SELECT `sid` FROM `counter` WHERE `dateiname`='".$_SERVER['PHP_SELF']."'"); $roww mysql_fetch_array($sit);
                            $ss $_SESSION["sid"].$_SERVER['PHP_SELF'];
                            if(
                            $roww['sid'] != $ss) {
                            mysql_query("UPDATE `counter` SET `count`=count+1, `sid`='".$_SESSION["sid"]."".$_SERVER['PHP_SELF']."' WHERE `dateiname`='".$_SERVER['PHP_SELF']."'"); echo mysql_error();
                                             }
                                    }
                            else {
                            $sql "INSERT INTO `counter`
                                     (count,
                                     dateiname,
                                     sid,
                                     datum)
                                VALUES (
                                     '1',
                                     '"
                            .$_SERVER['PHP_SELF']."',
                                     '"
                            .$_SESSION["sid"]."".$_SERVER['PHP_SELF']."',
                                      NOW())"
                            ;
                            mysql_query($sql);

                            Kommentar


                            • #15
                              Ungetestet und ohne Gewähr.

                              PHP-Code:
                              <?php


                              function anti_push($ses,$id,$array=FALSE) {

                               IF ( !
                              is_array($_SESSION[$ses]) ) {
                                 
                              $_SESSION[$ses] = array();
                               }
                               

                                IF ( !
                              in_array($id$_SESSION[$ses]) ) {
                                      
                              array_push($_SESSION[$ses], $id);
                                      return 
                              true;
                                    } else {
                                      return 
                              false;
                                    }
                              }

                               
                              // In diesem Zusammenhang wie du die sid speicherst, macht die funktion wenig(er) sinn.
                               // Solltest in der sid das PHP_SELF weglassen? Nur so als Vorschlag
                               
                               
                              IF ( anti_push('push',session_id())) {

                               
                              $sql "SELECT 
                                        `dateiname` 
                                       FROM 
                                        `counter` 
                                       WHERE 
                                       `dateiname`='"
                              .$_SERVER['PHP_SELF']."'
                                       LIMIT 1"
                              ;

                                  
                              $dit mysql_query($sql) or die ( mysql_error() );  
                                   
                              $dit_ = (mysql_num_rows($dit) > TRUE FALSE);

                                   
                                  
                                  if(
                              $dit_) {
                                   
                              $sql2 "
                                     UPDATE 
                                     `counter` 
                                         SET 
                                          `count`=count+1
                                     WHERE
                                          `sid`='"
                              .$_SESSION["sid"]."".$_SERVER['PHP_SELF']."' AND
                                          `dateiname`='"
                              .$_SERVER['PHP_SELF']."'
                                     LIMIT 1
                                   "
                              ;
                                  } else {

                                    
                              $sql2 "
                                     INSERT 
                                       INTO `counter`
                                                SET 
                                                 count = '1',
                                                 dateiname = '"
                              .$_SERVER['PHP_SELF']."',
                                                 sid = '"
                              .$_SESSION["sid"].$_SERVER['PHP_SELF']."',
                                                 datum = NOW()
                                     "
                              ;
                                  }

                                   
                              mysql_query($sql) or die ( mysql_error());
                                   
                               } 
                              ?>

                              Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                              sondern mit den Augen das Manual zu lesen.

                              Kommentar

                              Lädt...
                              X