Back to top

Autore Topic: Componente classifica utenti più fedeli [RISOLTO]  (Letto 807 volte)

Offline Frengo87

  • Nuovo arrivato
  • *
  • Post: 26
  • Sesso: Maschio
    • Mostra profilo
Componente classifica utenti più fedeli [RISOLTO]
« il: 04 Feb 2014, 10:41:04 »
Buongiorno a tutti
è un po di tempo che sto cercando un componente in grado di conteggiare tutti gli accessi fatti da ogni singolo utente registrato.
Nel cercare tutti consigliavano di usare google analytics, ma non ha la funzione che serve a me.
qualcuno mi saprebbe consigliare qualcosa?
grazie a tutti in anticipo
« Ultima modifica: 05 Feb 2014, 11:55:14 da Frengo87 »
‎L'emozione di infilarsi il casco, il brivido delle vibrazioni del motore, le migliaia di emozioni che si provano guidando...a dispetto di tutto ció di pericoloso che ci dicono che ci sia, è questa la vita che voglio!!!

Offline Frengo87

  • Nuovo arrivato
  • *
  • Post: 26
  • Sesso: Maschio
    • Mostra profilo
Re:Componente classifica utenti più fedeli
« Risposta #1 il: 05 Feb 2014, 08:52:03 »
Visto che nessuno mi rispondeva ho provato a fare una cosa "casereccia" e ha funzionato.
Scrivo qui di seguito il codice e i passaggi se dovesse servire a qualcuno:


1 -  Aggiungere 2 colonne alla tabella #_users del database, una che contenga il contatore e l'altra che contenga la data dell'ultimo controllo. Questo serve per evitare che se un utente nello stesso giorno si logga 3 volte, ne conti 3. io le ho chiamate counter (di tipo intero) e lastcounterdata (di tipo datatime, mettere come valore predefinito 0000-00-00 00:00:00).


2 - Nella cartella " /htdocs/plugins/authentication/joomla/" aprire il file joomla.php. qui ci sono tutte le operazioni che vengono eseguite al momento dell'autenticazione dell'utente.
All'interno dell' if (if ($crypt == $testcrypt)) inserite il seguente codice


// controllo differenza fra ora e data attuale e ultimo controllo

if( (strtotime(date("Y-m-d H:i:s")) - strtotime($user->lastcounterdata)) > 86400 )
                                {
                                 //query per incrementare il contatore e per aggiornare la data
                                 $query2   = $db->getQuery(true);
                                 $query2->update('#__users');
                                 $query2->set('counter=counter+1,lastcounterdata=NOW()');

                                 $query2->where('id=' . $user->id);
                                 $db->setQuery($query2);
                                 $db->query();

                                }


La mia intenzione era di quella di mostrare un modulo con la classifica dei 5 utenti più assidui. se il vostro obiettivo è lo stesso questo è il codice da inserire.


--------------------------------------------------------------------------------------------------------------------------------------

<?php

        require_once("mysqlfunctions.php");
        $mysql = new MysqlClass();
        $mysql ->connetti();
   $queryres=$mysql->query("SELECT name, counter FROM #_users ORDER BY counter DESC LIMIT 0 , 5");
        $i=1;
        while($row = $mysql->estrai($queryres))         {
           $nome[$i]=$row->name;
           $punti[$i]=$row->counter;
           [size=78%]echo "<font size=2 color=silver align=letf>";  [/size][/color]
[/size][size=78%]           [/size][/size][size=78%]echo "<p>";;[/size]
      echo $i;
      echo ". ";
           echo $nome[$i];
           $i++;
        }
?>
[/size][size=78%]--------------------------------------------------------------------------------------------------------------------------------------[/size]
[/size]Io ho messo i risultati in un array con il progetto di poi far qualcos'altro, ma si può anche saltare il passaggio e fare direttamente l'echo su "$row->name".Come potete notare la prima riga fa riferimento ad una pagina "mysqlfunctions.php"[size=78%]
[/size]create quindi una pagina con questo nome e inserite all'interno questo codice:[size=78%]
--------------------------------------------------------------------------------------------------------------------------------------

<?php
class MysqlClass
{
  // parametri per la connessione al database
private $connessione;
  private $nomehost = "sql.miosito.it";   
  private $nomeuser = "pippo";         
  private $password = "password";
private $database= "database";

         
  // controllo sulle connessioni attive
  private $attiva = false;

  // funzione per la connessione a MySQL
  public function connetti()
  {
   if(!$this->attiva)
   {
    $connessione = mysql_connect($this->nomehost ,$this->nomeuser,$this->password) or die( "Impossibile selezionare il database.");
     
}else{
        return true;
       }
}
//disconnettiti
public function disconnetti()
{
        if($this->attiva)
        {
                if(mysql_close())
                {
         $this->attiva = false;
             return true;
                }else{
                        return false;
                }
        }
}
//ottienti tutti i rows
public function get_all()
{
    $query="SELECT * SELECT *
FROM `db_tool`
LIMIT 0 , 30";

    $res = $this->query($query);

    return $res;

}
//funzione per l'esecuzione delle query
public function query($sql)
{
  if(isset($this->attiva))
  {
mysql_select_db($this->database);
  $sql = mysql_query($sql) or die (mysql_error());
  return $sql;
  }else{
  return false;
  }
}

// funzione per l'estrazione dei record
public function estrai($risultato)
{
  if(isset($this->attiva))
  {
  $r = mysql_fetch_object($risultato);
  return $r;
  }else{
  return false;
  }
}

}     
?>
--------------------------------------------------------------------------------------------------------------------------------------


Spero di essere stato utilie a qualcuno, se avete qualche dubbio, idea, suggerimento, proposta, contattatemi senza problemi.


Buona joomlata a tutti
‎L'emozione di infilarsi il casco, il brivido delle vibrazioni del motore, le migliaia di emozioni che si provano guidando...a dispetto di tutto ció di pericoloso che ci dicono che ci sia, è questa la vita che voglio!!!

 



Web Design Bolzano Kreatif