[PHP] Codice accetta solo identificatore numerico

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Questo è quello che ho nel db
Schermata 2016-05-28 alle 16.46.20.png


Questo è il codice, invece di mettere $pagina = 1; vorrei mettere una parola al posto del numero.

PHP:
// Identificativo numerico della pagina
$pagina = 1;

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

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

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

// Crea la variabile-echo che viene poi richiamata nel file HTML
$template->assign_vars(array(
    'conta_visite1' => $visite['visite'],
));
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, metti
PHP:
$pagina = "stringa";
e poi gli apici nella query
PHP:
..... WHERE pagina = '$pagina'"
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Così funziona

PHP:
$pagina = "'a-enzimi'";

// 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_VISITE4' => "<span class=\"letto\">Letto </span><span class=\"number\">". $tot_visite['visite'] ."</span> <span class=\"letto\">". $volte ."</span>",
));
 
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
due consigli:
1) forse ti conviene usare l'on duplicate key, velocizzi di molto
PHP:
<?php
//....
if($user->data['user_id'] <> 314 ) {
    $query="INSERT INTO phpbb_contatore(pagina, visite) VALUES('$pagina',1) ON DUPLICATE KEY UPDATE visite = visite+ 1";
    mysql_query($query);//inserisce se key non esiste, aggiorna se esiste
}
//.....
?>
2) abbandona le vecchie mysql e passa a mysqli, corri il rischio tra un po' di dover rifare tutto
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Se metto così, mi da errore "Errore nella selezione del database" ho aggiunto la "i" a mysql

Codice:
$link = mysqli_connect($dbhost, $dbuser, $dbpasswd);
if (!$link) {
    die ("Non riesco a connettermi:" . mysqli_error());
}
$db_selected = mysqli_select_db($dbname, $link);
if (!$db_selected) {
    die ("Errore nella selezione del database:" . mysqli_error());
}
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
PHP:
<?php
//....
$link = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);
//poi nella query
$query=mysqli_query($link,"SELECT....");//o l'inser o l'update
//...
?>
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Ho notato che Netsons non accetta mysqli, quello sotto senza la "i" funziona

Codice:
$link = mysql_connect($dbhost, $dbuser, $dbpasswd);
if (!$link) {
    die ("Non riesco a connettermi:" . mysql_error());
}
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected) {
    die ("Errore nella selezione del database:" . mysql_error());
}
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
E' la 5.4.30 però ho notato che se tolgo un include , funziona, perciò dev'essere un problema di codici.
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Il codice che avevo nell'include l'ho messo nel file php e ora si collega al db, ma non inserisce più i dati nel db, non so, da errori:

phpBB Debug] PHP Warning: in file [ROOT]/a-istinti-del-body.php on line 32: mysqli_query() expects at least 2 parameters, 1 given
[phpBB Debug] PHP Warning
: in file [ROOT]/a-istinti-del-body.php on line 37: mysqli_query() expects at least 2 parameters, 1 given
[phpBB Debug] PHP Warning
: in file [ROOT]/a-istinti-del-body.php on line 41: mysqli_query() expects at least 2 parameters, 1 given

Codice:
//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());
}

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

// il 314 è l'ID admin (il mio) da non calcolare nel conteggio
if($user->data['user_id'] <> 314 ) {
// Aggiorna il contatore
mysqli_query("UPDATE phpbb_contatore SET visite = visite+ 1 WHERE pagina like $pagina");   <-------- 32
}

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

// Estrae i dati dal DB
mysqli_query("SELECT visite FROM phpbb_contatore WHERE pagina like $pagina");    <--------------------- 41

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>",
));
 
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
la mysqli_quey aspetta il paremetro di connessione
mysqli_query($link,"......");
al posto dei .... o SELECT o INSERT o UPDATE
 
Ultima modifica:

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Grazie, non da più errore ma non inserisce i dati nella tabella

Schermata 2016-06-02 alle 17.01.19.png
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
gli apici (guarda che non è un problema di mysqli, ci volevano anche su mysql)
PHP:
mysqli_query($ink,"INSERT INTO phpbb_contatore (pagina, visite) VALUES ('$pagina', 1)");
poi nella select e nell'update vedo che usi WHERE pagina like $pagina, a parte gli apici che mancano, perchè usi il like?
essendo pagina la key primaria è univoca oppure (ma non capisco perchè), se sei nella pagina pinco in quel modo estrai o aggiurni tutte le pagine che il cui nome inizi, termini o contenga "pinco"
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Son in fase di creazione, lo sto sistemando. Ora inserisce ma non estrae.
Tieni presente che questo è l'echo che ho nel file html {CONTA_VISITE1}

- Strano, ora funziona anche enza apici
 
Ultima modifica:

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Forse è proprio quello. sistemiamolo, secondo te è meglio mettere un id ad ogni pagina o va bene anche la pagina stessa come id?
Es:
Codice:
// Identificativo della pagina
$pagina = "'a-istinti-del-body'";
$id_page = 1;
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
secondo me in questo caso è indifferente, le chiavi primarie possono essere numeriche o letterali, certo mettendo il nome con un po' di codice php e un include postresti risparmiarti la fatica ed eventuali errori di mettere un numero diverso per ciascuna pagina, se ha pazienza ti faccio un esempio
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Si, io sono qui, sistemiamolo. non uso include e poi per me va bene anche il nome della pagina, tanto i nomi cambiano.

Ho messo così ma non mette a video il numero

Codice:
// Estrae i dati dal DB
$res = mysqli_query($link,"SELECT visite FROM phpbb_contatore WHERE pagina like $pagina");   
$tot_visite = mysql_fetch_assoc($res);
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti fai un file chiamato esempio nome_pagina.php
PHP:
<?php
$pagina=strtolower(basename($_SERVER['PHP_SELF']));//per omogeneità rendo tutto minscolo
//e se vuoi togliere php o html
$togli=array('.php','.html');//e/o altre estenzioni
$pagina=str_replace( $togli, "" , $pagina);//tolgo l'estenzione
?>
poi nelle pagine che serve
PHP:
<?php
//....
require_once "nome_pagina.php";//attento ai percorsi
//....
?>
in questo modo eviti errori in caso di modifiche o aggiunte pagine
 
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