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
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
- Micogian
- 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
Io credo di averti spiegato come si dovrebbe fare, non capisco perchè tu insista sull'uso della variabile "$pagina" se abbiamo detto che la soluzione migliore è usare il campo "id".
Ribadisco l'inutilità della query INSERT.
Tu hai una tabella che contiene dei records che sono:
id, pagina, visite_users, visite_ospiti
A questa tabella non hai bisogno di aggiungere records, devi semplicemente modificare un campo con la query UPDATE ed estrarre i dati con la query SELECT.
In entrambe le query il valore di riferimento del record da modificare o da selezionare è "id", non "pagina"
Se la pagina viene richiamata da un utente o un visitatore avviene la modifica del relativo campo "visite_users" o "visite_ospiti" del record che ha quello specifico ID.
Se la pagina la visiti tu non avviene nessuna modifica nella tabella ma i dati vengono prelevati con la query SELECT per mostrare il numero delle visite.
Più chiaro di così non saprei come spiegarlo.
Ribadisco l'inutilità della query INSERT.
Tu hai una tabella che contiene dei records che sono:
id, pagina, visite_users, visite_ospiti
A questa tabella non hai bisogno di aggiungere records, devi semplicemente modificare un campo con la query UPDATE ed estrarre i dati con la query SELECT.
In entrambe le query il valore di riferimento del record da modificare o da selezionare è "id", non "pagina"
Se la pagina viene richiamata da un utente o un visitatore avviene la modifica del relativo campo "visite_users" o "visite_ospiti" del record che ha quello specifico ID.
Se la pagina la visiti tu non avviene nessuna modifica nella tabella ma i dati vengono prelevati con la query SELECT per mostrare il numero delle visite.
Più chiaro di così non saprei come spiegarlo.
- frank
- 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
Per me va bene anche mettere l'id, ora almeno funziona. Se tolgo INSERT non mette i dati nel db LA PRIMA VOLTA. Allora mettiamo l'id e tolgo inserti, vediamo.
Così non funziona e non so perché:
Così non funziona e non so perché:
Codice: Seleziona tutto
// Identificativo della pagina
$pagina = "a-istinti-del-body";
$id_cor = 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
mysql_query("UPDATE phpbb_contatore SET visite_ospiti = visite_ospiti + 1 WHERE id = $id_cor");
} else {
// Aggiorna il contatore generale e quello degli Utenti Registrati
mysql_query("UPDATE phpbb_contatore SET visite_users = visite_users + 1 WHERE id = $id_cor");
}
}
// Estrae i dati dal DB
$res = mysqli_query($link,"SELECT visite_tot FROM phpbb_contatore WHERE id_cor like $id_cor");
$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_tot'] ."</span> <span class=\"letto\">". $volte ."</span>",
));
page_footer();
?>
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
- Micogian
- 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
Ma lascia "id" il nome del campo nella tabella, $id_cor è un'altra cosa.
Hai cambiato il nome del campo da "id" a "id_cor" ma poi nella query fai così:
Che spiegato in parole semplici vuol dire "modifica il campo "visite_ospiti" aggiungendo 1 al valore precedente nel record il cui campo "id" sia uguale al valore di $id_cor. Ovvio che il campo "id" nella tabella non esiste perchè l'hai cambiato in id_cor.
Lascia "id" nella tabella (io avevo consigliato "id_articolo" ma non importa il nome).
Poi stabilisci qual'è il record da selezionare indicando il valore di $id_cor
A questo punto la query è corretta
Stessa cosa per la query SELECT.
Semplificando, la query UPDATE deve essere fatta in questo modo:
Hai cambiato il nome del campo da "id" a "id_cor" ma poi nella query fai così:
Codice: Seleziona tutto
mysql_query("UPDATE phpbb_contatore SET visite_ospiti = visite_ospiti + 1 WHERE id = $id_cor");
Lascia "id" nella tabella (io avevo consigliato "id_articolo" ma non importa il nome).
Poi stabilisci qual'è il record da selezionare indicando il valore di $id_cor
Codice: Seleziona tutto
$id_cor = 1; // che è l'id del record corrispondente alla pagina
Codice: Seleziona tutto
mysql_query("UPDATE phpbb_contatore SET visite_ospiti = visite_ospiti + 1 WHERE id = $id_cor");
Semplificando, la query UPDATE deve essere fatta in questo modo:
Codice: Seleziona tutto
mysql_query("UPDATE nome_tabella SET nome_campo_da_modificare = nuovo_valore WHERE nome_del_campo_del_record_da_selezionare = valore_da_cercare");
- frank
- 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
O che sbaglio io, non va. Ho modificato la tabella da id_cor a id, ora è cosi:
id
pagina
visite_tot
visite_users
visite_ospiti
e ho messo così:
id
pagina
visite_tot
visite_users
visite_ospiti
e ho messo così:
Codice: Seleziona tutto
$id = 1;
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
mysql_query("UPDATE phpbb_contatore SET visite_ospiti = visite_ospiti + 1 WHERE id = $id");
} else {
// Aggiorna il contatore generale e quello degli Utenti Registrati
mysql_query("UPDATE phpbb_contatore SET visite_users = visite_users + 1 WHERE id = $id");
}
}
$res = mysqli_query($link,"SELECT visite_tot FROM phpbb_contatore WHERE id like $id");
...
- Micogian
- 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
Ho più volte detto che like si usa per le stringhe, non per i numeri.
A parte quello il resto va bene, anche se mi pare che non hai capito il senso di usare "id" come nome del campo e $id_cor per il valore dell'id corrente ma quello è irrilevante, funziona anche così.
Faccio un esempio banale per far capire che la variabile usata non deve necessariamente chiamarsi come il campo della tabell:
Per provare che valori escono aggiungi delle righe echo, almeno puoi vedere che risultato ti danno (le righe echo vengono messe all'inizio della pagina, ma sono solo per provare:
Ma l'ultimo echo, quello del SELECT devi metterlo dopo la parte che estrai i dati.
Mi pare poi superfluo dire che se l'operazione la fai tu non c'è nessuna variazione nel numero delle visite.
A parte quello il resto va bene, anche se mi pare che non hai capito il senso di usare "id" come nome del campo e $id_cor per il valore dell'id corrente ma quello è irrilevante, funziona anche così.
Faccio un esempio banale per far capire che la variabile usata non deve necessariamente chiamarsi come il campo della tabell:
Codice: Seleziona tutto
$pippo = 1;
mysql_query("UPDATE phpbb_contatore SET visite_ospiti = visite_ospiti + 1 WHERE id = $pippo");
Codice: Seleziona tutto
$id = 1;
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
mysql_query("UPDATE phpbb_contatore SET visite_ospiti = visite_ospiti + 1 WHERE id = $id");
echo "aumenta il numero delle visite_ospiti per il record id=" . $id . "<br />";
} else {
// Aggiorna il contatore generale e quello degli Utenti Registrati
mysql_query("UPDATE phpbb_contatore SET visite_users = visite_users + 1 WHERE id = $id");
echo "aumenta il numero delle visite_users per il record id=" . $id . "<br />";
}
}
$res = mysqli_query($link,"SELECT visite_tot FROM phpbb_contatore WHERE id = $id");
echo "estrae il valore del numero delle visite_toto per il record id=" . $id . " visite_tot=" . $visite_tot . "<br />";
...
Mi pare poi superfluo dire che se l'operazione la fai tu non c'è nessuna variazione nel numero delle visite.
- frank
- 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
Le prove le faccio come ospite. Ho modificato l'id così id_pagina = 1; e anche nella tabella e nelle query seguendo il tuo esempio. Stampa questo:
aumenta il numero delle visite_ospiti per il record id=1
estrae il valore del numero delle visite_toto per il record id=1 visite_tot=
[phpBB Debug] PHP Warning: in file [ROOT]/*a-contatori.php on line 32: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given
aumenta il numero delle visite_ospiti per il record id=1
estrae il valore del numero delle visite_toto per il record id=1 visite_tot=
[phpBB Debug] PHP Warning: in file [ROOT]/*a-contatori.php on line 32: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given
Codice: Seleziona tutto
// Estrae i dati dal DB
$res = mysqli_query($link,"SELECT visite_tot FROM phpbb_contatore WHERE id = $id_pagina");
echo "estrae il valore del numero delle visite_toto per il record id=" . $id_pagina . " visite_tot=" . $visite_tot . "<br />";
$tot_visite = mysqli_fetch_assoc($res);
...
- Micogian
- 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
Cosa vuol dire questo?
In pratica così:Ma l'ultimo echo, quello del SELECT devi metterlo dopo la parte che estrae i dati.
Codice: Seleziona tutto
// Estrae i dati dal DB
$res = mysqli_query($link,"SELECT visite_tot FROM phpbb_contatore WHERE id = $id_pagina");
$tot_visite = mysqli_fetch_assoc($res);
$visite_tot = $tot_visite['visite_tot'];
echo "estrae il valore del numero delle visite_tot per il record id=" . $id_pagina . " visite_tot=" . $visite_tot . "<br />";
- frank
- 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
Avevo già provato lì, da lo stesso risultato
Codice: Seleziona tutto
...
// 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_tot'] ."</span> <span class=\"letto\">". $volte ."</span>",
));
echo "estrae il valore del numero delle visite_tot per il record id=" . $id_pagina . " visite_tot=" . $visite_tot . "<br />";
page_footer();
?>
- Micogian
- 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
Il problema è che l'aggiornamento avviene ma il SELECT non visualizza i dati aggiornati, bisognerebbe chiudere la connessione e riaprirla.
La soluzione è questa:
1) eseguire un SELECT per estrarre il numero delle visite attuali.
2) creare una variabile che aggiunga 1 alle visite attuali
3) eseguire la query UPDATE per aggiornare la tabella.
quindi:
A questo punto la tabella è aggiornata e puoi usare le variabili $visite_tot, $visite_ospiti, $visite_users che contengono i nuovi valori mentre la query SELECT ti mostrerebbe i valori precedenti.
La soluzione è questa:
1) eseguire un SELECT per estrarre il numero delle visite attuali.
2) creare una variabile che aggiunga 1 alle visite attuali
3) eseguire la query UPDATE per aggiornare la tabella.
quindi:
Codice: Seleziona tutto
$id_pagina = 1;
// Estrae i dati dal DB
$res = mysqli_query("SELECT * FROM phpbb_contatore WHERE id = $id_pagina");
$tot_visite = mysqli_fetch_assoc($res);
$visite_tot = $tot_visite['visite_tot'];
$visite_users = $tot_visite['visite_users'];
$visite_ospiti = $tot_visite['visite_ospiti'];
// elaborare la modifica del record
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
$visite_tot = $visite_tot + 1 ;
$visite_ospiti = $visite_ospiti + 1 ;
mysql_query("UPDATE phpbb_contatore SET visite_tot = visite_tot + 1, visite_ospiti = visite_ospiti + 1 WHERE id = $id");
} else {
// Aggiorna il contatore generale e quello degli Utenti Registrati
$visite_tot = $visite_tot + 1 ;
$visite_users = $visite_users + 1 ;
mysql_query("UPDATE phpbb_contatore SET visite_tot = visite_tot + 1,visite_users = visite_users + 1 WHERE id = $id");
}
}
- frank
- 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
Non inserisce nel db, mette a video, inoltre da 2 errori
PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 52: mysqli_query() expects at least 2 parameters, 1 given
PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 53: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given
PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 52: mysqli_query() expects at least 2 parameters, 1 given
PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 53: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given
Codice: Seleziona tutto
// Identificativo della pagina
$id_pagina = 1;
// elaborare la modifica del record
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
$visite_tot = $visite_tot + 1 ;
$visite_ospiti = $visite_ospiti + 1 ;
mysql_query("UPDATE phpbb_contatore SET visite_tot = visite_tot + 1, visite_ospiti = visite_ospiti + 1 WHERE id = $id_pagina");
} else {
// Aggiorna il contatore generale e quello degli Utenti Registrati
$visite_tot = $visite_tot + 1 ;
$visite_users = $visite_users + 1 ;
mysql_query("UPDATE phpbb_contatore SET visite_tot = visite_tot + 1,visite_users = visite_users + 1 WHERE id = $id_pagina");
}
}
// Estrae i dati dal DB
$res = mysqli_query("SELECT * FROM phpbb_contatore WHERE id = $id_pagina");
$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 ( $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_tot'] ."</span> <span class=\"letto\">". $volte ."</span>",
));
page_footer();
?>
Chi c’è in linea
Visitano il forum: Nessuno e 40 ospiti