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
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 » 30/05/2016, 16:05

frank ha scritto:Come ti dicevo, ho dovuto fare i giochi di prestigio, un INSERT ha VALUES ($pagina, 0) e l'altro VALUES ($pagina, 1), c'è un motivo: In pratica, quando entro io nella pagina direttamente o tramite link, il contatore segna quello che c'era prima, se invece entra un altro, il contatore segna il click.
Ma con la condizione "if" il database viene aggiornato solo se il visitatore non sei tu, a che serve creare nuovi records?
Il successivo SELECT visualizza il dato appena aggiornato se è un visitatore, visualizza il dato precedente se sei tu ad aprire la pagina.
- Ho modificato così:

Codice: Seleziona tutto

mysql_query("UPDATE phpbb_contatore SET visite = visite+ 1 WHERE pagina like $pagina");
lo devo mettere anche qui?

Codice: Seleziona tutto

// Estrae i dati dal DB
mysql_query("SELECT visite FROM phpbb_contatore WHERE pagina = $pagina");
Si, nel SELECT è ancora più importante, ma resto dell'idea che è meglio usare gli ID.
Inoltre non ho capito com'è strutturato il DB, in pratica un INSERT inserisce una riga nuova mentre la tabella dovrebbe contenere solamente una riga per articolo.
La tabella dovrebbe contenere i seguenti campi:

id_articolo = 1; // numero id da assegnare a ciascun articolo
titolo_articolo = "Istinti del body"; // titolo completo
titolo_link = "a-istinti-del-body"; // titolo link
visite_iscritti = xx ; // visite degli utenti iscritti
visite = xx ; // visite degli utenti non iscritti

Così potresti avere una diversa numerazione delle visite, una per gli utenti e una per i visitatori non iscritti. ma questo è facoltativo.
In sostanza è l'id_articolo il campo da utilizzare nelle query.

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 » 30/05/2016, 16:52

Questo crea la tabella, però non sarebbe male mettere anche i click degli ospiti

Codice: Seleziona tutto

CREATE TABLE IF NOT EXISTS `phpbb_contatore` (
  `pagina` varchar(50) COLLATE utf8_bin NOT NULL,
  `visite` int(11) NOT NULL,
  PRIMARY KEY (`pagina`),
  KEY `visite` (`visite`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Appare così
Schermata 2016-05-30 alle 16.48.06.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 » 30/05/2016, 17:48

Potresti creare una tabella del tipo:

Codice: Seleziona tutto

CREATE TABLE IF NOT EXISTS `phpbb_contatore_new` (
  `id_pagina` int(11) NOT NULL AUTO_INCREMENT,
  `pagina` varchar(50) COLLATE utf8_bin NOT NULL,
  `title` varchar(50) COLLATE utf8_bin NOT NULL,
  `visite_users` int(11) NOT NULL,
  `visite_extra` int(11) NOT NULL,
  PRIMARY KEY (`id_pagina`),
  KEY `visite` (`visite`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Crei la tabella phpbb_contatore_new che vai a completare inserendo un id progressivo per ciascun articolo.
Una volta creata puoi rinominarla dandogli il nome phpbb_contatore e rifai le query.
Per avere una distinzioone tra utenti e visitatori devi fare una doppia condizione:

Codice: Seleziona tutto

if($user->data['user_id'] <> 314 ) {
     if ($user->data['user_id'] == 1 ) {
     // Aggiorna il contatore dei visitatori non iscritti     
     mysql_query("UPDATE phpbb_contatore SET visite_extra = visite_extra + 1 WHERE id_pagina = $id_pagina");
     }else{
     // Aggiorna il contatore degli iscritti
     mysql_query("UPDATE phpbb_contatore SET visite_users = visite_users + 1 WHERE id_pagina = $id_pagina");
}

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 » 30/05/2016, 19:20

Mi da errore
Schermata 2016-05-30 alle 19.20.00.png
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

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 » 30/05/2016, 20:30

La parola "visite" era incompleta, così ha creato la tabella:

Codice: Seleziona tutto

CREATE TABLE IF NOT EXISTS `phpbb_contatore` (
  `id_pagina` int(11) NOT NULL AUTO_INCREMENT,
  `pagina` varchar(50) COLLATE utf8_bin NOT NULL,
  `visite_users` int(11) NOT NULL,
  `visite_ospiti` int(11) NOT NULL,
  PRIMARY KEY (`id_pagina`),
  KEY `visite_users` (`visite_users`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Qui adesso non funziona per via delle query, tu sai che ho 2 file php con le query per funzionare, questi sono i miei originali funzionanti:

Codice: Seleziona tutto

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

// il 314 è il mio ID utente che ho in LOCALHOST per impedire che il contatore conteggi i miei click
// NON va messo in "*a-contatore.php"
if($user->data['user_id'] <> 314 ) {
// Aggiorna il contatore 
mysql_query("UPDATE phpbb_contatore SET visite = visite+ 1 WHERE pagina like $pagina");
}

if($user->data['user_id'] <> 314 ) {
// Inserisce i dati nel db e sovrascrive il numero-visite precedente
mysql_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 1)"); 
}

Codice: Seleziona tutto

$pagina = "'a-istinti-del-body'"; 

// Aggiorna il contatore  
mysql_query("UPDATE phpbb_contatore SET visite = visite WHERE pagina like $pagina"); 

// Inserisce i dati nel db e sovrascrive il numero-visite precedente
mysql_query("INSERT INTO phpbb_contatore (pagina, visite) VALUES ($pagina, 0)"); 

// Estrae i dati dal DB 
$res = mysql_query("SELECT visite FROM phpbb_contatore WHERE pagina like $pagina");  
$tot_visite = mysql_fetch_assoc($res);  

if ( $tot_visite['visite'] == 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>",
)); 

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 » 31/05/2016, 9:55

Le query vanno modificate sostituendo il campo "pagina" con il campo "id_pagina".

Codice: Seleziona tutto

mysql_query("UPDATE phpbb_contatore SET visite = visite+ 1 WHERE id_pagina = $id_cor");
}
dove $id_cor è il numero ID dell'articolo corrente.
Non ho ancora capito il senso dell'INSERT.
INSERT crea un nuovo record,
UPDATEmodifica un record,
SELECTestrae i dati di un record.

Se non ho capito male tu hai bisogno di modificare 1 record, sostituendo il valore del campo "visite_users" o "visite_extra" a seconda di chi accede alla pagina. Se ad aprire la pagina è un utente registrato viene aggiornato il campo "visite_users", se lo fa un visitatore non registrato sarà l'utente user_id=1 (anonimous) e il campo aggiornato sarà "visite_extra", se sei tu non avviene nessuna modificaal database e tu vedrai i dati dei precedenti accessi.

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 » 31/05/2016, 10:17

L'id_cor non è necessario, questa tabella è sufficiente
Schermata 2016-05-31 alle 10.13.02.png
si tratta di sistemare i miei cidici precedenti in base a questa tabella
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 » 31/05/2016, 12:59

$id_cor è solo una variabile che rappresenta l'id della pagina corrente, io cerco di usare sempre nomi diversi dal nome del campo per evitare confusione.
La query è la stessa, salvo che non è il record con il campo "pagina" a essere interessato alla modifica ma il campo id.
Sulla query INSERT non ti sei spiegato.

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 » 31/05/2016, 14:54

Qui adesso sono un po' confuso, i miei codici funzionano, lo puoi verificare dal mio forum sez. Personal. L'INSERT ho provato a toglierlo, ma poi non funziona correttamente. Tieni sempre presente che ne ho 2 di codici in pagine diverse che lavorano assieme.

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 » 31/05/2016, 16:04

Io non sto dicendo che non funziona, mi domando perchè si debba creare un nuovo record se mi basta modificare quello che c'è già. A meno che l'INSERT non funzioni e non viene creato il record.
Se l'INSERT funzionasse dovesti trovare un nuovo record, con relativo id, per ogni volta che viene aperta la pagina, convieni con me che questo non avrebbe senso.

Rispondi

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

Chi c’è in linea

Visitano il forum: Nessuno e 78 ospiti