KS_Scream 1 Report post Posted December 30, 2012 Boa tarde pessoal. Preciso fazer um contador de cliques para um projeto, tenho o campo "click" na tabela do BD, mas não sei como fazer o contador funcionar, eu fiz até essa parte: <?php include 'inc/top.php'; require("conect.php"); $id =$_GET['id']; $sql = "UPDATE usuarios SET click='click+1' WHERE link_id='$id'"; $query = mysql_query($sql) or die (mysql_error()); if ($query){ header("Location: ".$_GET['link_url']); } else { echo 'Erro'; mysql_query($sql) or die (mysql_error()); } ?> Mas o php acusa erro sempre na mesma linha, no "header("Location: ".$_GET['link_url']);", o erro é: "Notice: Undefined index: link_url...". Tentei fazer um select depois do update e antes do header, para pegar o link, mas ele retorna o mesmo erro. Minha index está assim: <?php require("conect.php"); include 'inc/top.php'; include 'inc/menu.php'; $sql= "SELECT * FROM usuarios WHERE status=1 ORDER BY click DESC"; $query = mysql_query($sql); $qtd=mysql_num_rows($query); while ($resultado = mysql_fetch_assoc($query)) { echo ' <div class="mag"> <div class="category"> <p>'.$resultado['link_categoria'].'</p> </div> <img src="img/'.$resultado['foto'].'" alt="img"/> <div class="tittle"> <a href="click.php?id='.$resultado['link_url'].'">'.$resultado['link_title'].'</a> </div> <div class="cont"><p>Cliques: '.$resultado['click'].'</p></div> </div>'; } mysql_close(); ?> Será que alguem pode me dar um auxilio? Ainda estou iniciando no php e tenho algumas dificuldades. Share this post Link to post Share on other sites
Marcos_imasters 288 Report post Posted December 30, 2012 coloca echo"oi"; no lugar de header("Location: ".$_GET['link_url']); soh pra teste Share this post Link to post Share on other sites
KS_Scream 1 Report post Posted December 30, 2012 coloca echo"oi"; no lugar de header("Location: ".$_GET['link_url']); soh pra teste Apareceu a saída do echo, mas não fez o Update no banco. Share this post Link to post Share on other sites
Marcos_imasters 288 Report post Posted December 30, 2012 tenta assim mano $click = $clicks + 1; $sql = "UPDATE usuarios SET clicks = $click WHERE link_id=$id"; mysql_query($sql); Share this post Link to post Share on other sites
KS_Scream 1 Report post Posted December 30, 2012 tenta assim mano $click = $clicks + 1; $sql = "UPDATE usuarios SET clicks = $click WHERE link_id=$id"; mysql_query($sql); Não deu certo também, deu a mesma coisa que antes, nenhum erro, porém não faz update. Share this post Link to post Share on other sites
shini 318 Report post Posted December 30, 2012 click é um int ou varchar? $sql = "UPDATE usuarios SET click='click+1' WHERE link_id='$id'"; se for int remova as aspas simples, que deve funcionar. Share this post Link to post Share on other sites
Marcos_imasters 288 Report post Posted December 30, 2012 manda sua sql ai pra da uma olhada você verificiou se esta enviado o id do usuario corretamente?? Share this post Link to post Share on other sites
lucaswxp 22 Report post Posted December 30, 2012 Tente o seguinte SQL: $sql = "UPDATE usuarios SET click=click+1 WHERE link_id='$id'"; O erro que está acontecendo não é relacionado ao problema de não estar atualizando. Share this post Link to post Share on other sites
KS_Scream 1 Report post Posted December 30, 2012 Tente o seguinte SQL: $sql = "UPDATE usuarios SET click=click+1 WHERE link_id='$id'"; O erro que está acontecendo não é relacionado ao problema de não estar atualizando. Obrigado, era as aspas mesmo o erro, o campo é int, agora está atualizando, verifiquei que por erro meu tinha definido: <div class="tittle"> <a href="click.php?id='.$resultado['link_url'].'">'.$resultado['link_title'].'</a> </div> Quando o correto seria: <a href="click.php?id='.$resultado['link_id'].'">' Porém o erro de redirecionamento continua. Segue a tabela do banco: CREATE TABLE IF NOT EXISTS `usuarios` ( `link_id` int(11) NOT NULL AUTO_INCREMENT, `link_title` varchar(255) NOT NULL, `link_url` varchar(255) NOT NULL, `foto` varchar(100) NOT NULL, `link_categoria` varchar(255) NOT NULL, PRIMARY KEY (`link_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ; Share this post Link to post Share on other sites
lucaswxp 22 Report post Posted December 30, 2012 Mas exibe algum erro? Tente dar um exit logo depois do header, assim a requisição terminará logo ali e ficará claro pro navegador que você quer um redirect, já que a mensagem HTTP não possuirá um corpo. header("Location: ".$_GET['link_url']); exit; Share this post Link to post Share on other sites
shini 318 Report post Posted December 30, 2012 aqui você vai ter a variavel $_GET['id'] <a href="click.php?id='.$resultado['link_id'].'">' não seria $_GET['id'] no lugar de $_GET['link_url']? onde esta definido $_GET['link_url']? header("Location: ".$_GET['link_url']); ou você passa mais uma variavel no $_GET <a href="click.php?id='.$resultado['link_url'].'&link_url='. $resultado['link_url'] .'">'.$resultado['link_title'].'</a> Share this post Link to post Share on other sites
KS_Scream 1 Report post Posted December 30, 2012 Mas exibe algum erro? Tente dar um exit logo depois do header, assim a requisição terminará logo ali e ficará claro pro navegador que você quer um redirect, já que a mensagem HTTP não possuirá um corpo. header("Location: ".$_GET['link_url']); exit; Não deu certo, ele exibe o mesmo erro de antes: "Notice: Undefined index: link_url in..." aqui você vai ter a variavel $_GET['id'] <a href="click.php?id='.$resultado['link_id'].'">' não seria $_GET['id'] no lugar de $_GET['link_url']? onde esta definido $_GET['link_url']? header("Location: ".$_GET['link_url']); ou você passa mais uma variavel no $_GET <a href="click.php?id='.$resultado['link_url'].'&link_url='. $resultado['link_url'] .'">'.$resultado['link_title'].'</a> Obrigado pela ajuda, mas eis um problema, não sei responder isso ao certo, mas pensei que o $_GET puxava o dado direto do banco, após o select, abaixo vou postar a index: <?php $sql= "SELECT * FROM usuarios WHERE status=1 ORDER BY click DESC"; $query = mysql_query($sql); $qtd=mysql_num_rows($query); while ($resultado = mysql_fetch_assoc($query)) { echo ' <div class="mag"> <div class="category"> <p>'.$resultado['link_categoria'].'</p> </div> <img src="img/'.$resultado['foto'].'" alt="img"/> <div class="tittle"> <a href="click.php?id='.$resultado['link_id'].'">'.$resultado['link_title'].'</a> </div> <div class="cont"><p>Cliques: '.$resultado['click'].'</p></div> </div>'; } mysql_close(); ?> Será que devo mudar algo nessa pag, já que é ela que direciona para o contador "click"? Sou leigo ainda. Share this post Link to post Share on other sites
shini 318 Report post Posted December 30, 2012 deixe assim, veja q agora você esta passando uma variavel chamada link_url e atribuindo o valor $resultado['link_url'] q vem do banco. <a href="click.php?id='.$resultado['link_url'].'&link_url='. $resultado['link_url'] .'">'.$resultado['link_title'].'</a> para ter certeza q esta vindo algum valor no $_GET faça assim: echo "<pre>"; print_r($_GET); Share this post Link to post Share on other sites
KS_Scream 1 Report post Posted December 30, 2012 deixe assim, veja q agora você esta passando uma variavel chamada link_url e atribuindo o valor $resultado['link_url'] q vem do banco. <a href="click.php?id='.$resultado['link_url'].'&link_url='. $resultado['link_url'] .'">'.$resultado['link_title'].'</a> para ter certeza q esta vindo algum valor no $_GET faça assim: echo "<pre>"; print_r($_GET); Deu certo, ele imprimiu o link, então mudei a saida para: header("Location: ".$_GET['link_url']); Então ele começou a direcionar, ams parou de fazer o update, então fiz uma pequena alteração nessa linha: <a href="click.php?id='.$resultado['link_url'].'&link_url='. $resultado['link_url'] .'">'.$resultado['link_title'].'</a> para: <a href="click.php?id='.$resultado['link_id'].'&link_url='. $resultado['link_url'] .'">'.$resultado['link_title'].'</a> e funcionou, muito obrigado pela ajuda. Share this post Link to post Share on other sites
eliezer0121 0 Report post Posted May 11, 2017 usei parte do seu código e fiz assim: index.php <?php include_once("conexao.php"); $sql= "SELECT * FROM livros"; $query = $conexao->query($sql); $dados = $query->fetch_array(); echo $query->num_rows;//testando while ($resultado = $query->fetch_array()) { echo ' <div class="mag"> <div> <p>'.$resultado['titulo'].'</p> </div> <img src="_galeria/'.$resultado['img1'].'" alt="img"/> <div> <a href="contaclique.php?id='.$resultado['id'].'&views='.$resultado['cliques'].'">'.$resultado['descricao'].'</a> </div> <div><p>Cliques: '.$resultado['cliques'].'</p></div> </div><hr>'; } ?> envio dois gets o id do registro e o total de cliques ja registrados. Agora recebendo.. contaclique.php <?php require("conexao.php"); $views =$_GET['views'];//recebo os cliques do bd $id =$_GET['id'];//recebo o id do registro $conta_c = $views +1;//soma-se mais um $sql = "UPDATE anuncios SET cliques='$conta_c' WHERE id='$id'"; $query = $conexao->query($sql) or die (mysql_error()); if ($query){ header("Location: index.php"); } else { echo 'Erro'; mysql_query($sql) or die (mysql_error()); } ?> simples neah? Share this post Link to post Share on other sites