phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Impedire il conteggio delle visite da parte dell'admin

Supporto per phpBB 3.1.x.
Avatar utente
frank
Utente
Utente
Messaggi: 1908
Iscritto il: 25/11/2014, 8:02
Sesso: Maschio
Versione: 3.1.7-PL1
Server: UNIX/Linux
PHP: 5.5.29
Database: MySQL(i) 5.5.43-log

Re: Impedire il conteggio delle visite da parte dell'admin

Messaggio da frank » 03/06/2016, 22:31

Ok, sono riuscito a stampare echo, come ospite. Anche se clicco molte volte segna sempre quello:

PHP Warning: in file [ROOT]/*a-contatori.php on line 10: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given
visite_tot= 1
visite_users=
visite_ospiti= 1
volte= volte


Poi, a SELECT e agli UPDATE ho aggiunto $link, perché senza dava errore:

Codice: Seleziona tutto

$res = mysqli_query($link, "SELECT * FROM phpbb_contatore WHERE id = $id_pagina");
$tot_visite = mysqli_fetch_assoc($res);
...
mysqli_query($link, "UPDATE...)


Avatar utente
frank
Utente
Utente
Messaggi: 1908
Iscritto il: 25/11/2014, 8:02
Sesso: Maschio
Versione: 3.1.7-PL1
Server: UNIX/Linux
PHP: 5.5.29
Database: MySQL(i) 5.5.43-log

Re: Impedire il conteggio delle visite da parte dell'admin

Messaggio da frank » 04/06/2016, 1:06

Un passo avanti, l'alert l'ho risolto, i WHERE id li ho trasformati in WHERE id_pagina.

Da quello che appare dagli echo, il numero si mette a video anche se il numero rimane sempre "1", ma nel template non appare niente {visite.VISITE_TOT} questo vuol dire che non mette i dati nel db. Questa è la tabella attuale:
Schermata 2016-06-04 alle 01.05.02.png
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Impedire il conteggio delle visite da parte dell'admin

Messaggio da Micogian » 04/06/2016, 10:25

Il mio codice si basa su mysql e funziona, con mysqli cambia qualcosa, la variabile $link rappresenta la connessione, non vorrei fosse lì il problema.
Questo è un esempio di connessione con mysqli

Codice: Seleziona tutto

$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

// Perform queries
mysqli_query($con,"SELECT * FROM Persons");
mysqli_query($con,"INSERT INTO Persons (FirstName,LastName,Age)
VALUES ('Glenn','Quagmire',33)");

mysqli_close($con);
Dove dichiari la variabile $link che dovrebbe essere come la variabile $con dell'esempio.

Avatar utente
frank
Utente
Utente
Messaggi: 1908
Iscritto il: 25/11/2014, 8:02
Sesso: Maschio
Versione: 3.1.7-PL1
Server: UNIX/Linux
PHP: 5.5.29
Database: MySQL(i) 5.5.43-log

Re: Impedire il conteggio delle visite da parte dell'admin

Messaggio da frank » 04/06/2016, 11:26

Se l'errore fosse nella connessione, darebbe errore, quello che non capisco è come fa ad inserire i dati senza INSERT INTO. Comunque puoi provare direttamente il mio codice.

Codice: Seleziona tutto

// Identificativo della pagina
$pagina = "a-istinti-del-body";
$id_page = 1;

//Contavisite, connessione al db tramite i parametri in config.php
$link = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);
if (!$link) {
    die ("Non riesco a connettermi" . mysqli_error());
}

// Estrae i dati dal DB, id è il nome del campo tabella, $id_page è la variabile che identifica la pagina, es. $id_page = 1;
$res = mysqli_query($link, "SELECT * FROM phpbb_contatore WHERE id = $id_page");
$tot_visite = mysqli_fetch_assoc($res);
$visite_tot = $tot_visite['visite_tot'];
$visite_users = $tot_visite['visite_users'];
$visite_ospiti = $tot_visite['visite_ospiti'];

if ( $visite_tot == 1) {
    $volte = "volta";
}
else {
    $volte = "volte";
}

// Aggiorna la tabella in base al visitatore

if ($user->data['user_id'] <> 314) { // Il 314 è l'ID admin (il mio), non viene conteggiato
   if ($user->data['user_id'] == 1) { // Conteggia solo gli Ospiti
    // Aggiorna il contatore generale e quello degli Ospiti
     $visite_tot = $visite_tot + 1;
     $visite_ospiti = $visite_ospiti + 1;
     mysqli_query($link, "UPDATE phpbb_contatore SET visite_tot = visite_tot + 1, visite_ospiti = visite_ospiti + 1 WHERE id = $id_page");
   } else {
    // Aggiorna il contatore generale e quello degli Utenti Registrati
     $visite_tot = $visite_tot + 1;
     $visite_users = $visite_users + 1;
     mysqli_query($link, "UPDATE phpbb_contatore SET visite_tot = visite_tot + 1, visite_users = visite_users + 1 WHERE id = $id_page");
   }
}

// Crea la variabile PHPBB che viene poi richiamata nel template e nel file articoliX.html
$template->assign_block_vars('visite', array(
    'VISITE_TOT' =>  $visite_tot,
    'VISITE_USERS' => $visite_users,
    'VISITE_OSPITI' => $visite_ospiti,
    'VISITE'   => "<span class=\"letto\">Letto </span><span class=\"number\">". $visite ."</span> <span class=\"letto\">". $volte ."</span>",
)); 

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Impedire il conteggio delle visite da parte dell'admin

Messaggio da Micogian » 04/06/2016, 12:56

Ma i dati iniziali devi metterli tu nella tabella, devi partire con una tabella che contenga tutte le pagine con relativo id e con valore 0 nei campi visite. Scusa, ma questo dovrebbe essere scontato.
A che serve l'INSERT ? tu devi partire con una tabella già compilata.
La query SELECT visualizza i dati del record selezionato e la query UPDATE modifica i valori dei campi "visite".
Se nella tabella non hai questi dati è logico che non funziona.

EDIT
PHP è precisione, basta una virgola fuori posto e non funziona.
Mi domando, se nella struttura della tabella hai detto che il campo id l'hai chiamato "id_pagina" perchè nella query usi il nome "id"?

Codice: Seleziona tutto

$res = mysqli_query($link, "SELECT * FROM phpbb_contatore WHERE id = $id_page");
Altra cosa, la connessione sarà anche corretta ma la variabile $link cosa rappresenta?

Avatar utente
frank
Utente
Utente
Messaggi: 1908
Iscritto il: 25/11/2014, 8:02
Sesso: Maschio
Versione: 3.1.7-PL1
Server: UNIX/Linux
PHP: 5.5.29
Database: MySQL(i) 5.5.43-log

Re: Impedire il conteggio delle visite da parte dell'admin

Messaggio da frank » 04/06/2016, 13:39

Allora il problema era quello :shock: Per me è meglio che l tabella si riempia da sola quando creo una nuova pagina, perciò sono dell'idea di usare INSERT.

Sto sperimentando questo codice, inserisce i dati solo come ospite ed aggiorna correttamente, ma non li estrae. Io direi di sistemare questo.
Schermata 2016-06-04 alle 13.36.27.png
Schermata 2016-06-04 alle 13.36.49.png

Codice: Seleziona tutto

// Identificativo della pagina 
$pagina = "a-istinti-del-body";  
$id_page = 1

//Contavisite, connessione al db tramite i parametri in config.php
$link = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);
if (!$link) {
    die ("Non riesco a connettermi:" . mysqli_error());
}

// Aggiorna il contatore
if ($user->data['user_id'] != 314 ) { // il 314 è l'ID admin (il mio), non viene conteggiato
    if ($user->data['user_id'] == 1 ) { // Conteggia solo gli Utenti Registrati e gli Ospiti
        $query="INSERT INTO phpbb_contatore(pagina, visite_tot, visite_ospiti) 
                   VALUES($id_page,1,1)  ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 1, visite_ospiti = visite_ospiti + 1";
    } else {
        $query="INSERT INTO phpbb_contatore(pagina, visite_tot, visite_user) 
                   VALUES($id_page,1,1)  ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 1, visite_user = visite_user + 1";
    }
    $ins_up=mysqli_query($link, $query);
}

// Estrae i dati dal DB
$res = mysqli_query($link,"SELECT visite_tot FROM phpbb_contatore WHERE id = $id_page");
$tot_visite = mysqli_fetch_assoc($res);

if ( $tot_visite['visite_tot'] == 1) {
    $volte = "volta";
}
else {
    $volte = "volte";
}

// Crea la variabile-echo che viene poi richiamata nel template e nel file articoliX.html
$template->assign_vars(array(
    'CONTA_VISITE1' => "<span class=\"letto\">Letto </span><span class=\"number\">". $tot_visite['visite'] ."</span> <span class=\"letto\">". $volte ."</span>",
));
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Impedire il conteggio delle visite da parte dell'admin

Messaggio da Micogian » 04/06/2016, 13:50

Tu non devi usare un INSERT, devi avere la tabella già pronta.
Puoi farlo da phpmyadmin, inserisci manualmente le pagine che ti interessano, l'id viene messo in automatico.
Una volta che hai la tabella pronta puoi interrogare e modificare.
Se fai un INSERT ogni volta che apri la pagina l'id, che è automatico, cambia e ti troverai centinaia di id diversi.
Tu devi avere una tabella che deve già contenere questi dati:

id, pagina, visite_tot, visite_users, visite_ospiti
-----------------------------------------------------------
1, titolo-pagina-1, 0, 0, 0,
2, titolo-pagina-2, 0, 0, 0,
3, titolo-pagina-3, 0, 0, 0,
4, titolo-pagina-4, 0, 0, 0,
5, titolo-pagina-5, 0, 0, 0,
6, titolo-pagina-6, 0, 0, 0,
.....................................

Solo così puoi estrarre i dati e modificarli,

Quando crei una nuova pagina non fai altro che aggiungerla manualmente nella tabella, non credo che tu debba fare centinaia di nuove pagine.

Avatar utente
frank
Utente
Utente
Messaggi: 1908
Iscritto il: 25/11/2014, 8:02
Sesso: Maschio
Versione: 3.1.7-PL1
Server: UNIX/Linux
PHP: 5.5.29
Database: MySQL(i) 5.5.43-log

Re: Impedire il conteggio delle visite da parte dell'admin

Messaggio da frank » 04/06/2016, 15:38

Scusa ma, se io faccio inserire nel db questi dati la prima volta, poi questo campo si aggiorna ad ogni click, gli id e il nome pagina rimangono sempre quelli

Codice: Seleziona tutto

// Identificativo della pagina 
$pagina = "a-istinti-del-body";  
$id_page = 1;

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Impedire il conteggio delle visite da parte dell'admin

Messaggio da Micogian » 04/06/2016, 16:32

frank ha scritto:Scusa ma, se io faccio inserire nel db questi dati la prima volta, poi questo campo si aggiorna ad ogni click, gli id e il nome pagina rimangono sempre quelli
Certo che gli id e il campo "pagina" restano sempre quelli, tu devi modificare i campi "visite" e solo quelli che hanno un determinato id, che senso ha creare un nuovo record se questo c'è già.
Cosa ti costa inserire manualmente una decina di record con relativo id , pagina e 0 ai valori delle visite ?
Ne avessi 1000 capirei, ma 10, 20 record da inserire è lavoro di 2 minuti.
Ma ognuno è libero di fare a modo suo, io ti ho spiegato come si dovrebbe fare o come farei io, a volte si ottiene la stessa cosa in modi diversi. Vuoi usare l'INSERT ? usalo.

Avatar utente
frank
Utente
Utente
Messaggi: 1908
Iscritto il: 25/11/2014, 8:02
Sesso: Maschio
Versione: 3.1.7-PL1
Server: UNIX/Linux
PHP: 5.5.29
Database: MySQL(i) 5.5.43-log

Re: Impedire il conteggio delle visite da parte dell'admin

Messaggio da frank » 04/06/2016, 16:54

Non invalido la tua spiegazione, ma visto che il codice con INSERT è a buon punto, io direi di sistemalo.

Guarda, quando clicco la prima volta come ospite appare questa, senza aver dovuto inserire niente a mano. Nel campo "id" e nel campo "pagina" dovrebbe invece apparire rispettivamente "1" e "a-istinti-del-body", ma è da sistemare. Capisci, non ottengo lo stesso risultato senza dover inserire manualmente tutte le volte un nuovo campo?
Schermata 2016-06-04 alle 16.49.46.png
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

Rispondi

Torna a “[3.1.x] Forum di Supporto”

Chi c’è in linea

Visitano il forum: Nessuno e 58 ospiti