Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
bom eu tenho site tipo www.sitequalquer.com/ , dentro deste site tenho o diretorio " www.sitequalquer.com/letras/ "
nesse diretorio eu tenho página "www.sitequalquer.com/letras/letra1.php". Até ai entendido né?
Nesta página eu quero que tenha o número de vezes q ela foi acessada. Então veja o meu bando de dados e depois a página;
tabela:
CODE
CREATE TABLE visitas(
id smallint(6) NOT NULL,
visitas text NOT NULL,
PRIMARY KEY (id))
letras1.php:
CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Conta</title>
</head>
<body>
<?
$host = "localhost"; //Endereço do host (padrão localhost)
$user = "root"; //Usuário do banco de dados MySQL
$pass = ""; //Senha do MySQL
$banco = "teste"; //Banco de dados do script
$conexao = mysql_connect("$host", "$user", "$pass")
or die ("Configuração de Banco de Dados Errada!");
$db = mysql_select_db("$banco")
or die ("Banco de Dados Inexistente!");
$seleciona = mysql_query("SELECT id, visitas FROM visitas");
while($reg = mysql_fetch_array($seleciona)){
$id = $reg['id'];
$visitas = $reg['visitas'];
}
$soma = $visitas + 1;
@mysql_query ("UPDATE visitas SET visitas= '$soma' WHERE id='$id'");
?>
<p>Esta letra foi vizualizada <? echo "$visitas"; ?></p></body>
</html>
Beleza até ai tudo bem ele adiciona um clique no bd, tudo certinho!!
Mas quando eu coloco em outra página "letra2.php" ele mostra o mesmo
numero de visita q tem no outro, e quando vou ver na tabela, ele não cria outro id.
Alguém poderia me dizer como fazer pra cada página ter um id no bd e só aumentar mais um
quando o clique for para ela?
Vlw!
você pode criar uma tabela para cadastrar as paginas e outra para as visitas, ok, e na das visitas você coloca uma chave estrangeira para identificar a kual pagina pertence a visita tal, depois você faz a contagem com count pra saber o total de cada pagina...
Mais não tem como fazer na mesma tabela???
ter at tem....mas seria um pouco enrolado, nao seria dificil, e tem como sim...foi so uma ideia, usar um identificador da pagina...
Antes de tudo, reestruture essa tabela. Use o ID somete para identificação, sem usá-lo nas consultas. Crie uma tabela com estes campos:
id int
pagina varchar
visitas int
Não faz sentido o campo visitas ser TEXT.
Com basename() você pega o nome do arquivo corrente. Com pathinfo() pode ser melhor, já que as páginas estão em diretórios diferentes.
E para fazer o update, faça assim:
Update tabela Set campo = campo + 1 Where arquivo = 'arquivo.php';
Nem precisa de Select. O valor já é incrementado na própria SQL! :D
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
ter at tem....mas seria um pouco enrolado, nao seria dificil, e tem como sim...foi so uma ideia, usar um identificador da pagina...
Tá certo!
mais é que pesquisei e nada encontrei! :unsure:
Havia dois tópicos iguais, que foram mesclados neste único.
O post duplicado foi removido.
>
Antes de tudo, reestruture essa tabela. Use o ID somete para identificação, sem usá-lo nas consultas. Crie uma tabela com estes campos:
id int
pagina varchar
visitas int
Não faz sentido o campo visitas ser TEXT.
Com basename() você pega o nome do arquivo corrente. Com pathinfo() pode ser melhor, já que as páginas estão em diretórios diferentes.
E para fazer o update, faça assim:
Update tabela Set campo = campo + 1 Where arquivo = 'arquivo.php';
Nem precisa de Select. O valor já é incrementado na própria SQL! :D
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Eu fiz o que você disse, olha o erro que está dando:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Arquivos de programas\xampp\htdocs\pgi1.php on line 22
Olha como a parte que esta dando esse erro:
CODE
...$seleciona = mysql_query("SELECT pagina, visitas FROM visitas");
while($reg = mysql_fetch_array($seleciona)){
$pagina = pathinfo();
$visitas = $reg['visitas'];
}
$soma = $visitas + 1;
@mysql_query ("UPDATE visitas SET visitas= '$soma' WHERE pagina='$pagina'");
...
Vlw!
use mysql_error() para ver qual é o erro retornado pelo MySQL:
mysql_query(consulta) or exit(mysql_error());
e veja a documentação de pathinfo(), para entender o funcionamento dessa função.
>
use mysql_error() para ver qual é o erro retornado pelo MySQL:
mysql_query(consulta) or exit(mysql_error());
e veja a documentação de pathinfo(), para entender o funcionamento dessa função.
Coloquei assim, como no manual:
CODE
$seleciona = mysql_query("SELECT pagina, visitas FROM visitas");while($reg = mysql_fetch_array($seleciona)){
$pagina = pathinfo('[http://localhost/pgi.php](http://localhost/pgi.php)');
$pagina["basename"];
$visitas = $reg['visitas'];
}
Olha o que está dando:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Arquivos de programas\xampp\htdocs\pgi.php on line 31
Unknown column 'pagina' in 'where clause'
Tentei de toda forma , sempre dá isso!
ja experimentou concatenar a vaiavel na sql?
ja experimentou concatenar a vaiavel na sql?
tentei, nd feito!
pq pelo err, esta dizendo q a coluna pagina eh desconhecida...verifica a estrutura do db...
pq pelo err, esta dizendo q a coluna pagina eh desconhecida...verifica a estrutura do db...
è cara o problema era um campo da tabela! vlw pelo toque!
Mais tem outro problema, agora ele não está adicionando no bd!
CODE
<?$host = "localhost"; //Endereço do host (padrão localhost)
$user = "root"; //Usuário do banco de dados MySQL
$pass = ""; //Senha do MySQL
$banco = "teste"; //Banco de dados do script
$conexao = mysql_connect("$host", "$user", "$pass")
or die ("Configuração de Banco de Dados Errada!");
$db = mysql_select_db("$banco")
or die ("Banco de Dados Inexistente!");
$seleciona = mysql_query("SELECT pagina, visitas FROM visitass");
while($reg = mysql_fetch_array($seleciona)){
$pagina = pathinfo('http://localhost/pgi.php')
.$pagina["basename"];
$visitas = $reg['visitas'];
}
$soma = $visitas + 1;
@mysql_query ("UPDATE visitas SET visitas= '$soma' WHERE pagina='$pagina'");
?>
<p>Esta letra foi vizualizada <? echo "$visitas"; ?></p>espero q você esteja fazendo como teste, pra depois colocar no ar....remova o @ para mostrar o erro e nas funcoes de mysql, coloca OR DIE(MYSQL_ERROR);, em minusculo, pra "debugar" saber onde esta acontecendo o erro...
espero q você esteja fazendo como teste, pra depois colocar no ar....remova o @ para mostrar o erro e nas funcoes de mysql, coloca OR DIE(MYSQL_ERROR);, em minusculo, pra "debugar" saber onde esta acontecendo o erro...
Sim to testando aki no pc, antes de colocar no ar..
Agora deu certo não está retornando erro... Acho que errei quando criei a tabela,
o campo visitas ficou assim : "visitas INT " será que precisa colocar mais alguma coisa?
vlw!
mas apresentou algum erro? se você recriou a tabela , colocou visitas int, precisa colocar o tamanho, at quantos registros esta coloca tera de ter... se colocar 11, ela tera 00000000000 este numero de registros, ok?
mas apresentou algum erro? se você recriou a tabela , colocou visitas int, precisa colocar o tamanho, at quantos registros esta coloca tera de ter... se colocar 11, ela tera 00000000000 este numero de registros, ok?
Sim eu coloquei no campo visitas só INT, sem valor!!!
Será que eu tenho que colocar algo mais??
vlw!
você pode criar uma tabela para cadastrar as paginas e outra para as visitas, ok, e na das visitas você coloca uma chave estrangeira para identificar a kual pagina pertence a visita tal, depois você faz a contagem com count pra saber o total de cada pagina...