[PHP] Codice accetta solo identificatore numerico

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Beh, ma se come id tengo questo, non va bene lo stesso? Evita di avere un include.

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

Come ti dicevo ho messo questo, ma non estrae

PHP:
$res = mysqli_query($link,"SELECT visite FROM phpbb_contatore WHERE pagina like $pagina"); 
$tot_visite = mysql_fetch_assoc($res);
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
è lo stesso, io normalmente faccio ove possibile gli include, se ho da correggere correggo un file solo, poi, in questo caso, sarei abbastanza sicuro di avere nomi univoci senza preuccuparmi di andare a vedere cosa ho scritto in altre pagine, comunque è lo stesso
per il problema dell'insert, visto così (a parte il like) è sintatticamente corretto.
prova un var_dump e guarda cosa riporta
PHP:
<?php
//...
$res = mysqli_query($link,"SELECT visite FROM phpbb_contatore WHERE pagina like $pagina");
var_dump($res); //se ok dovrebbe dart resorce altrimenti o null o false
$tot_visite = mysql_fetch_assoc($res);
// se ti ha dato resource
var_dump($tot_visite);
/*dovrebbe darti qualcosa di simile
cioè mostrarti l'array
array(xx)
[pinco] => 3
[pallo] => 287
*/
//...
?>
a proposito guarda che non puoi usare direttamente l'echo per visualizzare $tot_visite o print_r o meglio un ciclo foreach
PHP:
<?php
foreach($tot_visite as $pag $num){
    echo "visite alla pagina $pag: $num<br>";
}
?>

p.s.
non usare codice generico quando inserisci codice php
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Mi da questo:
object(mysqli_result)#183 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) } [phpBB Debug] PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 50:mysql_fetch_assoc() expects parameter 1 to be resource, object given
NULL

Non uso un echo php, è un metodo che usa phpbb. Che intendi per codice generico?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
attento hai scritto
$tot_visite = mysql_fetch_assoc($res);
correggi in
$tot_visite = mysqli_fetch_assoc($res);

quando inserisci il codice poi seleziona PHP

dimenticavo
con myadmin hai visto se la tabella si è riempita, sembrerebbe che non risca a leggerela, verifica corrispondenza nomi
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Nel frattempo ho fatto delle modifiche, questa è la tabella, come vedi il numero visite_tot è corretto, ma negli altri campi ne inserisce uno in meno (il primo click non lo inserisce), ho fatto 4 click come ospite. Poi c'è ancora quel like da sistemare, poi per il resto, ora è funzionale.

Schermata 2016-06-02 alle 23.48.48.png


- Come puoi vedere dal mio sito, non inserisce il contatore nelle immagini-link in fondo, nel file ovviamente c'è lo stesso echo che ho nella pagina {CONTA_VISITE1}

Ho creato un include per ogni file php così modifico solo il file esterno.

Questo è il nuovo codice

PHP:
<?php
//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
      mysqli_query($link,"UPDATE phpbb_contatore SET visite_tot = visite_tot + 1, visite_ospiti = visite_ospiti + 1 WHERE pagina = $pagina");
   } else {
      // Aggiorna il contatore generale e quello degli Utenti Registrati
      mysqli_query($link,"UPDATE phpbb_contatore SET visite_tot = visite_tot + 1, visite_users = visite_users + 1 WHERE pagina = $pagina");
   }
}

// Inserisce i dati nel db LA PRIMA VOLTA e mette "1"  o "0" se clicco io
if($user->data['user_id'] <> 314 ) {
mysqli_query($link,"INSERT INTO phpbb_contatore (pagina, visite_tot) VALUES ($pagina, 1)");
} else {
mysqli_query($link,"INSERT INTO phpbb_contatore (pagina, visite_tot) VALUES ($pagina, 0)");
}

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

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

Allegati

  • Schermata 2016-06-02 alle 20.16.00.png
    Schermata 2016-06-02 alle 20.16.00.png
    25 KB · Visite: 371
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per prima cosa setta i campi visite_tot, visite_ospiti e visite_user con il valore default 0
poi prova questo codice, dovrebbe semplificarti la vita

PHP:
<?php
//.....
// 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 ) {
        $query="INSERT INTO phpbb_contatore(pagina, visite_tot,visite_ospiti) VALUES($pagina,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($pagina,1,1)  ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 1, visite_user = visite_user + 1";
    }
    $ins_up=mysqli_query($link, $query);//ed eventualmente l'if se andato a buon fine
}
// Estrae i dati dal DB
$res = mysqli_query($link,"SELECT visite_tot FROM phpbb_contatore WHERE pagina like $pagina");
$tot_visite = mysqli_fetch_assoc($res);
if($tot_visite['visite_tot'] == 1){
    $volte = "volta";
}else{
    $volte = "volte";
}
?>

p.s.
sono di corsa però fammi sapere
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Va meglio, non crea un nuovo record per ogni pagina cliccata, ma aggiorna sempre lo stesso, inoltre non estrae i dati.

Schermata%202016-06-04%20alle%2013.36.49.png


Codice:
// 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_users)
                   VALUES($id_page,1,1)  ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 1, visite_users = visite_users + 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_tot'] ."</span> <span class=\"letto\">". $volte ."</span>",
));
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
mi sbaglierò, ma scommetto che hai messo id chiave primaria
poi per vedere se l'errore è nell'estrazione o nel passaggio al contatore metti il solito var_dump
PHP:
//....
$tot_visite = mysqli_fetch_assoc($res);
var_dump($tot-visite);
//....
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Ora sembra che funzioni, mette nel db in automatico la prima volta. Mette a video il numero giusto nel template, ma non stampa l'echo nelle immagini-link in fondo "Potrebbe interessarti anche:"

Schermata 2016-06-07 alle 02.53.31.png


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

//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
        $query="INSERT INTO phpbb_contatore(pagina, visite_tot) VALUES($pagina, 0)";
    }
      else 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($pagina, 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_users) VALUES($pagina, 1, 1)
                     ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 1, visite_users = visite_users + 1";
    }
    $ins_up=mysqli_query($link, $query);[/COLOR]

// Estrae i dati dal DB
$res = mysqli_query($link,"SELECT visite_tot FROM phpbb_contatore WHERE pagina = $pagina");
$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>",
));


 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non vedo dove hai il link, da qualche parte dovresti avere qualcosa del genere
HTML:
<a href="altro_interesse.php"><img src="pinco.jpg"></a>
o in codice php
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
I link li ho nella sez. Personal, sono gli articoli poi sono anche le immagini che ci sono in fondo agli articoli Potrebbe interessarti anche

Comunque per adesso sono funzionanti il primo (cibo e istinti del body) e il terzo link (la bugia alimentare). Ho creato 2 file php che interagiscono. Sto sistemando anche gli altri.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
stavo riguardando il tutto, ma a cosa ti serve questa?
PHP:
<?php
//...
if ($user->data['user_id'] == 314) { // il 314 è l'ID admin (il mio), non viene conteggiato
        $query="INSERT INTO phpbb_contatore(pagina, visite_tot) VALUES($pagina, 0)";
    }
//...
?>
corri il rischio, se il record gia esiste, che ti azzeri il contatore, tra l'altro lasciando invariati i parziali.
quindi fossi in te farei cosi
PHP:
<?php
//....
// 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($pagina, 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_users) VALUES($pagina, 1, 1)
                     ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 1, visite_users = visite_users + 1";
    }
}
//....
?>
oppure se ti serve proprio per azzerare o creare il conteggio della pagina
PHP:
<?php
if ($user->data['user_id'] == 314) {
    $query="INSERT INTO phpbb_contatore(pagina, visite_tot, visite_user, visite_ospiti) VALUES($pagina, 0, 0, 0)
                ON DUPLICATE KEY UPDATE visite_tot=0, visite_user=0, visite_ospiti=0,";
    /*in questo modo:
    se il record non esiste lo crei
    se esiste lo azzeri
    */
}else{
    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($pagina, 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_users) VALUES($pagina, 1, 1)
                     ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 1, visite_users = visite_users + 1";
    }
}
//....
?>
e comunque farei a parte in una pagina a te riservata tutto l'ambaradan di creare un nuovo record o azzerare il contatore esistente, non mescolando quello che puoi fare tu e quello che possono fare gli user o gli ospiti
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
In un qualche sono riuscito a farlo funzionare correttamente, anche se non ho ancora capito perché abbia dovuto far interagire 2 file php.

Qui ho notato che degli users hanno visitato queste pagine, ma entrando nei loro profili vedo che non si collegano da tempo. Come mai?

Schermata 2016-06-10 alle 04.05.12.png
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
forse devi modificare qualcosa nei profili, esempio quando pinco si collega devi aggiornare la data relativa a pinco.
certo, ma questo non lo so, pinco deve essere registrato e per accedere loggato, quindi se si logga (con suo user e pass) e visita una pagina aggiorni per quell'user e pass la data della visita
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
No, nel mio forum ora ci sono 3 utenti registrati, 4 con me. L'ultima volta si sono connessi il 9 maggio, ma nel db risulta che ieri qualche user registrato è entrato. O forse è l'user anonymous?
if ($user->data['user_id'] == 1) {...

Il primo della lista sotto sono io, perciò non mi calcola:

Schermata 2016-06-10 alle 13.16.52.png
 
Ultima modifica:

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Ora funziona tutto, non capisco questa variabile a cosa serve, ma se la tolgo il contatore non funziona
$ins_up=mysqli_query($link, $query);

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

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

if ($user->data['user_id'] == 314) { // il 314 è l'ID admin (il mio), non viene conteggiato
        $query="INSERT INTO phpbb_contatore(pagina, visite_tot, visite_users, visite_ospiti) VALUES($pagina, 0, 0, 0)
                     ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 0, visite_users = visite_users + 0, visite_ospiti = visite_ospiti + 0";
    }
      else 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($pagina, 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_users) VALUES($pagina, 1, 1)
                     ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 1, visite_users = visite_users + 1";
    }
    $ins_up=mysqli_query($link, $query);

// Include il file php che contiene tutti i contatori per il file articoliX.html. VA MESSO QUI
include($phpbb_root_path . '*a-contatori.' . $phpEx);
...


*a-contatori.php
Codice:
//Nome identificativo nel db
$pagina = "'a-istinti-del-body'";

// Se clicca id 314 admin, nelle img-link mette a video "0"
mysqli_query($link,"INSERT INTO phpbb_contatore (pagina, visite_tot) VALUES ($pagina, 0)");

// Estrae i dati dal DB
$res = mysqli_query($link,"SELECT visite_tot FROM phpbb_contatore WHERE pagina = $pagina");
$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 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>",
));
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
parli della variabile $link
nella $ins_up=mysqli_query($link, $query); ?
se si intanto è la sintassi corretta delle query mysqli e poi è la variabile che definisce la connessione, prima della query avrai qualcosa del tipo
PHP:
//....
$link=mysqli_connect($host,$username,$password,$db);
//....
dove la varie varibili sono i dati per connettersi
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
No, intendo questa: $ins_up=mysqli_query($link, $query);
In particolare, non vedo dove viene richiamato questo $ins_up
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
dipende nel tuo caso (mi sembra) essendo un INSERT potrebbe non servire, però io generalmente la uso perchè poi quando faccio il debag mi è più comodo scrivere
PHP:
var_dump($ins_up);
che
PHP:
var_dump(mysqli_query($link, $query));
oppure, dato che è una variabile boeliana (true o false) la uso nell'if
PHP:
if(!$ins_up){echo "errore";}
questo per l'INSERT/UPDATE/DELETE, nel caso di SELECT ti serve per estrarre i dati
 
Discussioni simili
Autore Titolo Forum Risposte Data
JeiMax Modifica codice php personalizzato PHP 2
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
F Il codice php è giusto? PHP 2
E Barra di avanzamento codice PHP PHP 4
M [PHP] Istruzione "echo" all'interno di codice html PHP 2
C Refresh parte di codice pagina php PHP 6
Shyson [PHP] Aggiungere link al codice PHP 0
A come spedire SMS da codice PHP con mdem USB PHP 0
M [PHP] Come inserire codice html in un ciclo while PHP 2
Shyson [PHP] Codice iscrizione e invio avviso nuovi articoli PHP 3
L [PHP] Problema su codice o server PHP 5
Shyson [PHP] Inserire testo nel codice PHP 2
Shyson [PHP] Nascondere codice PHP 3
H cancellare avatar in codice PHP PHP 2
G [PHP] Revisione codice per registrazione PHP 8
Shyson [WordPress] [PHP] Creare codice che evidenzia nuovi articoli WordPress 0
M [PHP] Codice fiscale inverso PHP 3
J Prendere dati del database e metterli nel codice php PHP 1
S [PHP] Verifica dati tramite form e annullamento codice inserito PHP 7
Y [PHP] Errore di login dopo aver inserito Codice AdSense PHP 0
Y Codice AdSense su script php PHP 4
Q Notice: Undefined index: codice in C:\xampp\htdocs\STAGE\calendario\modifica.php on line 10 PHP 8
D [PHP] [RETRIBUITO] cercasi esperto programmatore per realizzare applicazione in html e codice iframe PHP 0
M [css][php] codice php esterno non vede il css PHP 6
giancadeejay Codice php come testo-quale tag usare? PHP 9
Shyson [HTML] Spostare a sinistra codice php PHP 6
crealatualista [PHP] layout pagina con immagine codice a barre PHP 3
X come aggiornare codice php? PHP 5
bubino8 [PHP] appendChild contenente codice PHP 2
A [RISOLTO] Table elaborata da codice PHP con dati da DB non visualizzata in IFRAME PHP 15
B PHP e JQUERY per scrivere codice html dinamicamente PHP 2
gandalf1959 [PHP] codice infetto? PHP 2
trattorino [PHP] blocco codice su una piattaforma PHP 3
trattorino [PHP] aggiungere html in un codice PHP 0
G Google recaptcha in verify.php - dove inserire il codice PHP 1
crealatualista Scrivere in un file php aperto dal codice php! PHP 7
E [PHP] [HTML] Codice che gestisce l'input e la trasmissione dei dati alla mia email PHP 1
E Importare codice html da una pagina tramite php PHP 9
Gaetano1991h [PHP] Chi mi sa spiegare la funzione di questo codice? PHP 1
T [PHP] Convertire Codice JAVA a PHP PHP 3
Z Informazione codice PHP PHP 4
Joker37 Generare file txt con php estraendo codice html. PHP 4
trattorino Creare codice php help PHP 26
romeocharly Creare un script/codice in php per collegare un id mysql con un file PHP 0
Z richiamare codice html in file php PHP 2
S Come inserire file in database Mysql senza scrivere codice PHP? PHP 0
F Codice php PHP 1
P problema con codice php... PHP 7
M Far partire una funzione/codice php con javascript Javascript 1
M errore di codice php PHP 1

Discussioni simili