Besucher des Profils - Aber wie?

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

  • Besucher des Profils - Aber wie?

    Hallo Leute,

    nettes Forum, hab hier schon einige Lösungen gefunden.
    Doch nun komme ich nicht mehr weiter.
    Hab auch wiedermal mehr als 1h gesucht gegoogelt usw. leider nichts,
    vielleicht hab ich es auch nur falsch formuliert?!

    Zu meinem Problem, ich habe eine kleine Community, mit Userprofilen, private Messages und so weiter...
    Nun möchte ich auch die letzten (eingeloggten) Besucher/User in den Profilen aufführen. Habe zwar schon fast dafür alles fertig, aber da ist ein großes Problem, und zwar möchte ich nur 8-10 dieser Besucher im Profil angezeigt haben. Nun die Frage komme ich nicht um Limit herum, dann wird die DB doch unendlich voll?!
    Mit Limit wirds wahrscheinlich garnicht gehen, da jeder User in der datenbank nur ein Feld hat, das heißt auch so - letzte_besucher.
    Diese werden getrennt durch ein Leerzeichen:

    PHP-Code:
    $split_letzte_besucher split(" "$letzte_besucher); 
    Das klappt ja alles schon sehr gut, aber es geht mir um die Anzahl,
    es geht bestimmt in die Richtung count(); ??!!!
    Es sollen ja nur die letzten 10 angezeigt werden.

    Ich wäre für jeden Vorschlag sehr dankbar!!
    Zuletzt geändert von webguru; 27.06.2005, 18:16.

  • #2
    split() gibt dir ja ein Array aus, also einfach eine for Schleife von den 10 ersten Einträgen ausgeben lassen

    PHP-Code:
    for($i=0$i<11$i++){

    echo 
    $split_letzte_besucher[$i];


    Zuletzt geändert von CodeBlue; 27.06.2005, 17:29.

    Kommentar


    • #3
      ah ja

      Vielen Dank, soweit ganz klar, aber verhindern kann ich nicht das mehr als 10 dann in dem feld eingetragen werden, oder??
      Mir schwirrt es so vor, dass ich alles raushole wenn 11 ein abziehe und wieder das UPDATE durchführe.
      Ist das so möglich?!?

      Ich will ja nur verhindern das bei jedem User nach geraumer zeit 1000de
      im Feld Besucher "letzte_besucher" sind wobei ich nur immer 10 brauche.
      Ja ich glaub ich hab da n schweren denkfehler.



      Mit der Schleife ist jetzt aber erstmal klar, nochmal vielen Dank!!

      Kommentar


      • #4
        Naja ganz versteh ich nicht was du damit bezwegen willst, aber wenn du nur 10 drin haben willst, mußt du halt 10 ausm Array rausnehmen und wieder in per Update in den Feld eintragen.

        Aber ich wäre die Sache ganz anders angegangen! Immer wenn ein User online geht, befüllst du ein Feld was die aktuelle Zeit beim User einträgt und lässt dir dann einfach 10 User ausgeben, die vor kurzem online waren. Ist doch sicher mit Login etc! Da lässt sich doch locker was mit Cookies machen!

        Kommentar


        • #5
          Ja das wäre auch n bessere Idee, glaub ich....jedenfalls....
          Aber so ganz weiß ich nicht weiter...

          Mit dem online ist ja klar, hab auch alles mit timestamp's gemacht, aber
          das soll ja egal sein ob diese online sind, etc. halt nur die letzten aufführen, die auf dieses profil geklickt haben....
          Da ist die Schleife gefragt, aber genau das meinte ich, das meinst du sicher mit:

          aber wenn du nur 10 drin haben willst, mußt du halt 10 ausm Array rausnehmen und wieder in per Update in den Feld eintragen
          Aber ich bekommst nicht wirklich richtig hin.
          Mit dem online/offline kommt dann später ob diese "Profilbesucher" grad online sind...aber das werde ich schaffen.
          Diese sind dann grün. (wow *lol*)

          Mit Sicherheit bin ich aber derjenige der hier was nicht versteht *lach*
          Vielen dank für deine kostbare Zeit!!

          Kommentar


          • #6
            Noch jemand n Tip, wie man so etwas machen kann??
            Also es ist auch schon fast fertig, bekomme nur nicht hin, dass z.B. bei 11 einer abgezogen wird...(der älteste besucher).


            Danke im voraus.

            Kommentar


            • #7
              Darf man erfahren, wie du die letzten Besucher eines Profils in der DB speicherst? Welchen Typ hat die Spalte und was steht drin (Beispiel)? Dann kann man auch was konkretes sagen.

              Solange bleibts bei allgemeinen Tipps:
              Wenn ein User angelegt wird, ist das Feld "letzteBetrachter" leer.
              Wenn ein Profil betrachtet wird (und es nicht der Eigentümer selbst ist), liest du die ersten 9 Einträge aus dem Feld, packst den Betrachter vorne dran und schreibst das ganze wieder rein.
              So stehen nie mehr als 10 drin, sogar gleich zeitlich sortiert.

              Kommentar


              • #8
                mh wie wärs mit nem zusätzlichn db feld das count oder so heisst(int)
                dann haste im script noch drin stehn das des feld mit jedem besuch +1 erhöht wird (es sei denn der benutzer steht schon im latest_user ..oder wie auch immer das feld heisst) und dann im script bla abfragen
                sobald 11 erreicht ist ersten(zeitlich) löschen..
                wobei ich sagen muss das ich onemornerds vorschlag stilvoller finde
                Zuletzt geändert von RanzigeMilch; 28.06.2005, 12:10.
                Die Milch bleibt ranzig!

                Kommentar


                • #9
                  Wow, Danke an eurem Interesse meines Problems.

                  Also hab Feld Varchar, 255 ....hab es auch nun soweit hinbekommen, aber nicht ganz so wie ich wollte...

                  Also nochmal zum Feld, Bsp.:
                  letzte_besucher (Inhalt):
                  user1(Leerzeichen)user2(Leerzeichen)user3 usw.

                  Diese werden dann gesplitet anhand dieser Leerzeichen-
                  alles logisch, soweit.

                  PHP-Code:
                  $split_letzte_besucher split(" "$letzte_besucher); 
                  Dann noch Komma oder nicht (bei mehr als einem):

                  PHP-Code:
                  if($pb count($split_letzte_besucher)-1){
                  echo 
                  "<a href='index.php?menue=goprofil&username=$split_letzte_besucher[$pb]'><font color='$color_b'>$split_letzte_besucher[$pb], </a></font>";
                  }
                  else{
                  echo 
                  "<a href='index.php?menue=goprofil&username=$split_letzte_besucher[$pb]'><font color='$color_b'>$split_letzte_besucher[$pb]</a></font>";

                  Wenn ich oder der jenige selber auf sein Profil klickt,
                  wird er natürlich nicht mit gezählt/eingetragen... - Auch logisch.

                  Naja klappt ja auch alles ganz gut, selbst wer online ist wird grün angezeigt - wer nicht schwarz - auch schon fertig, war ja auch nicht schwer.


                  Ich wollte nur lediglich verhindern das mehr als 10-15 Stück ist ja auch egal, eingetragen werden.
                  Kann mich nicht damit anfreunden, das irgendwann bei jedem 350 und mehr usernamen drin stehen, wobei ich immer nur 10-15 brauche.

                  Das belastet doch nur die Datenbank, unnötig.
                  Ich drück mich bestimmt nicht sonderlich gut aus, Sorry

                  Kommentar


                  • #10
                    öhm
                    hast du onemorenerds und meinen post gelesen?....
                    lesen > all
                    Die Milch bleibt ranzig!

                    Kommentar


                    • #11
                      Ja, hab ich, aber leider erklärt Ihr mir nur das theoretische, nicht das praktische so denke ich mir das ja genauso...!!
                      Soweit bin ich längst
                      Trotzdem Danke!

                      Kommentar


                      • #12
                        Praktisch wäre, wenn du dein Codestück mal postest, wo die DB gefüttert und gemolken wird. Dann hast du im Handumdrehen eine Antwort mit der perfekten Lösung.

                        Aber theoretisch habe ich das bereits gesagt ...

                        Kommentar


                        • #13
                          Gut, ist aber nicht so wenig...nich meckern

                          PHP-Code:

                          if ($letzte_besucher_db == "") {
                            echo 
                          "bisher keine Besucher";
                          }
                          $letzte_besucher_db trim($letzte_besucher_db);
                          if (
                          $letzte_besucher_db != "") {
                          $split_letzte_besucher split(" "$letzte_besucher_db);
                          }
                          for(
                          $pb=0$pb<11$pb++){
                          if(
                          $_SESSION[blahblah] != $username AND $cookieuser != $username){
                          if(
                          $_SESSION[blahblah]!=""){
                          $schon_da_gewesen strchr($letzte_besucher_db$_SESSION[blahblah]);
                          }
                          else if(
                          $_COOKIE[userid]!=""){
                          $schon_da_gewesen strchr($letzte_besucher_db$cookieuser);
                          }
                          if(
                          $schon_da_gewesen!=""){
                          if(
                          $_SESSION[blahblah]!=""){
                          $letzte_besucher_db_ohne str_replace($_SESSION[blahblah],"",$letzte_besucher_db);
                          $letzte_besucher_db_ohne trim($letzte_besucher_db_ohne);
                          $update_letzte_besucher mysql_query("UPDATE user SET letztebesucher='$_SESSION[blahblah] $letzte_besucher_db_ohne' WHERE usr = '$username'");
                          }
                          elseif(
                          $_COOKIE[userid]!=""){
                          $letzte_besucher_db_ohne str_replace($cookieuser,"",$letzte_besucher_db);
                          $update_letzte_besucher mysql_query("UPDATE user SET letztebesucher='$cookieuser $letzte_besucher_db_ohne' WHERE usr = '$username'");
                          }
                          }
                          else{
                          if(
                          $_SESSION[blahblah] != $username){
                          if(
                          $_SESSION[blahblah]!=""){
                          if(
                          $letzte_besucher_db==""){
                          mysql_query("INSERT INTO user (letztebesucher) values ('$_SESSION[blahblah]') WHERE usr = '$username'");
                          }
                          $update_letzte_besucher mysql_query("UPDATE user SET letztebesucher='$_SESSION[blahblah] $letzte_besucher_db' WHERE usr = '$username'");
                          }
                          else if(
                          $_COOKIE[userid]!=""){
                          if(
                          $letzte_besucher_db==""){
                          mysql_query("INSERT INTO user (letztebesucher) values ('$cookieuser') WHERE usr = '$username'");
                          }
                          $update_letzte_besucher mysql_query("UPDATE user SET letztebesucher='$cookieuser $letzte_besucher_db' WHERE usr = '$username'");
                          }
                          }
                          }
                          }
                          $green_besucher mysql_query("SELECT * FROM user WHERE expire > '$jetztonline_g' AND usr LIKE '%$split_letzte_besucher[$pb]%'");
                          $besucher_bild mysql_query("SELECT * FROM user WHERE usr LIKE '%$split_letzte_besucher[$pb]%'");
                          if(
                          mysql_num_rows($green_besucher)!= 0){
                          $color_b="green";
                          }
                          else{
                          $color_b="black";
                          }
                          if(
                          $pb count($split_letzte_besucher)-1){
                          echo 
                          "<a href='index.php?menue=goprofil&username=$split_letzte_besucher[$pb]'><font color='$color_b'>$split_letzte_besucher[$pb], </a></font>";
                          }
                          else{
                          echo 
                          "<a href='index.php?menue=goprofil&username=$split_letzte_besucher[$pb]'><font color='$color_b'>$split_letzte_besucher[$pb]</a></font>";
                          }

                          ...so läufts jedenfalls erstmal, aber mir ist auch klar
                          1. das ich es bestimmt kürzer machen hätte können
                          2. keine Begrenzung der Einträge der profilbesucher stattfindet.
                          3. Ihr jetzt bestimmt einiges zu meckern habt

                          Viele Grüße und Danke für eure Hilfe, echt nett!
                          Zuletzt geändert von webguru; 28.06.2005, 20:51.

                          Kommentar


                          • #14
                            Sorry, aber du machst alles doppelt und dreifach im Script. Daher nur so:
                            PHP-Code:
                            // aktuellen User vorn anhängen
                            $letzte $cookieuser.' '.$letzte_besucher_db;

                            // ein Array daraus machen
                            $letzte explode(" "$letzte);

                            // die ersten x wieder in einen String packen
                            $besucher $letzte[0];
                            for (
                            $i 1$i min($x-1count($letzte)); $i++)
                              
                            $besucher .= ' '.$letzte[$i];

                            // und nun $besucher in die DB schreiben
                            // ... 
                            Edit:
                            Ich finde es so irgendwie schicker:
                            PHP-Code:
                            // ein Array daraus machen
                            $letzte explode(" "$letzte);
                            $besucher $cookieuser;
                            for (
                            $i 1$i min($x-1count($letzte)); $i++)
                              
                            $besucher .= ' '.$letzte[$i]; 
                            Zuletzt geändert von onemorenerd; 28.06.2005, 20:38.

                            Kommentar


                            • #15
                              Ich wusste ihr meckert

                              Also explode ist das gleiche wie split??
                              Gut danke ich lass mir das mal durch den Kopf gehen und versuch das zu kürzen.

                              EDIT:
                              Achja, ich hab nicht grundsätzlich im Login die Cookies.
                              Das ist User-Auswahlsache, deshalb frage ich ab ob Session oder Cookie
                              Automatisches Einloggen? ( Cookies in deinem Browser müssen aktiviert sein! )
                              Ich glaube du denkst ich hab immer Cookies, der User?!
                              Aber tut ja auch nicht viel zur Sache...nur mal so...

                              Zuletzt geändert von webguru; 28.06.2005, 20:56.

                              Kommentar

                              Lädt...
                              X