gumetis 0 Denunciar post Postado Novembro 30, 2009 Boa tarde, Estou precisando fazer um Contador de Clicks Avançado, basicamente vai ter que ser assim: Gravar todos os dados no Banco SQL, Tabelas: id, link, qtd_downloads, data. Bom como eu não manjo muito bem de PHP não sei por onde nem começar alguem poderia me ajudar? Obrigado. Erick Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Novembro 30, 2009 <? chdir('./DIRETORIO/DOS/ARQUIVOS'); if (!is_file($arquivo)) { // se o arquivo não é arquivo ... echo "Erro: arquivo $file não encontrado !"; exit; // ... aborte o programa } $con = mysql_connect('localhost','usuario','senha'); mysql_select_db('database'); $consulta = "SELECT arquivo,qtd_downloads FROM contador WHERE arquivo='$arquivo'"; $res = mysql_query($consulta,$con); /* certificar se o arquivo já foi clicado alguma vez. Se o arquivo ainda não consta em nossa tabela, vamos inserir um novo registro, caso contrário vamos somar um hit ao registro existente */ if ($saida = mysql_fetch_array($res)) { // registro existe $hit = ++$saida[1]; // some 1 (um) ao número de cliques $update = "UPDATE contador SET qtd_downloads = $hit WHERE arquivo='$arquivo'"; mysql_query($update,$con); // atualize o registro } else { $insert = "INSERT INTO contador (arquivo) VALUES ('$arquivo')"; mysql_query($insert,$con); // insira o novo arquivo na tabela. O valor padrão // de hit é 1 (um) } $tamanho = filesize($arquivo); // pega o tamanho do arquivo em bytes // enviar os cabeçalhos HTTP para o browser header("Content-Type: application/save"); header("Content-Length: $tamanho"); header("Content-Disposition: attachment; filename=$arquivo"); header("Content-Transfer-Encoding: binary"); // abrir e enviar o arquivo $fp = fopen("$arquivo", "r"); fpassthru($fp); fclose($fp); ?> CREATE TABLE contador ( arquivo VARCHAR(100) PRIMARY KEY NOT NULL, qtd_downloads INT DEFAULT 1 ); Não é do jeito que você queria.. mas tá ae um pouco.. é só você pedir pro povo te ajudar agora.. a terminar o resto. e para se fazer downloads.. você deve digitar no navegador assim: download.php?arquivo=ARQUIVO.rar você pode alterar o nome, você escolhe o nome do arquivo.. mas baixe sempre colocando o ?arquivo=ARQUIVO.rar você pode colocar baixar.php?arquivo=ARQUIVO.rar você escolhe.. flw Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Dezembro 1, 2009 Bom dia, Estou tentando fazer este codigo funcionar mais não esta indo, está dizendo: Erro: arquivo não encontrado ! Já tentei de td coloquei o arquivo na raiz e nada...: chdir(''); chdir('./'); - O arquivo arquivo.zip está na raiz. chdir('./ARQUIVOS/'); chdir('ARQUIVOS'); chdir('ARQUIVOS/'); - Diretorio que criei ARQUIVOS e o arquivo arquivo.zip está dentro. Nada funcionou sempre diz q o arquivo nao é encontrado. Obs: Codigo php (baixar.php) baixar.php?arquivo=arquivo.zip Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Dezembro 1, 2009 Ok.. olha.. veja se o nome verdadeiro da pasta está do jeito que você tá colocando (maiúsculas, minúsculas..) você explicar esses pontos antes do diretório.. quando vem um "./", é porque você está setando um diretório onde se encontra o arquivo! EX.: ./arquivo.zip quando vem um "../", é porque você está setando um diretório B que se encontra antes do diretório A! EX.: ../arquivo.zip E assim por diante.. Verifique tbm se o arquivo está em maiusculas ou minusculas.. pode ser um desses problemas.. isso acontece de vez em quando, se tiver uma letra maiuscula, dá erro.. Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Dezembro 1, 2009 Ok.. olha.. veja se o nome verdadeiro da pasta está do jeito que você tá colocando (maiúsculas, minúsculas..) você explicar esses pontos antes do diretório.. quando vem um "./", é porque você está setando um diretório onde se encontra o arquivo! EX.: ./arquivo.zip quando vem um "../", é porque você está setando um diretório B que se encontra antes do diretório A! EX.: ../arquivo.zip E assim por diante.. Verifique tbm se o arquivo está em maiusculas ou minusculas.. pode ser um desses problemas.. isso acontece de vez em quando, se tiver uma letra maiuscula, dá erro.. Olá Good bele... Cara então nao sei porque está dando erro olha ai veh se não está certo. Coloquei o arquivo "001.zip" na pasta raiz onde tem o arquivo com o codigo .php "baixar.php" na config do .php está assim: chdir('./'); e quando clico no Browser pra fazer o teste coloco assim: "baixar.php?arquivo=001.zip" td está em minuscula, e mesmo assim está dando o erro de não encontrar o arquivo. Oque pode ser? Valeuuuuuuuuuu Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Dezembro 1, 2009 o arquivo ZIP deve estar no mesmo local do baixar.php Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Dezembro 1, 2009 o arquivo ZIP deve estar no mesmo local do baixar.php Então está. mais mesmo assim não esta funcionando. Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Dezembro 1, 2009 olha.. então vai no seu navegador, e digite o diretório lá.. como se você estivesse baixando normal.. http://www.seusite.com.br/001.zip veja se encontra ou não o arquivo.. se não encontrar, eu não sei o que fazer.. Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Dezembro 1, 2009 olha.. então vai no seu navegador, e digite o diretório lá.. como se você estivesse baixando normal.. http://www.seusite.com.br/001.zip veja se encontra ou não o arquivo.. se não encontrar, eu não sei o que fazer.. Então qd eu clico: "http://localhost/suporte/001.zip" baixa o arquivo normalmente. Mais quando eu clico: "http://localhost/suporte/baixar.php?arquivo=001.zip" da o erro: Erro: arquivo não encontrado ! Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Dezembro 1, 2009 Bom.. não sei não.. tente colocar isso $arquivo = $_GET['arquivo']; antes de if (!is_file($arquivo)) { // se o arquivo não é arquivo ... se não der certo, eu não sei.. e deixo para outra pessoa te ajudar, pq aqui não tá dadno nenhum problema.. flw Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Dezembro 1, 2009 Bom.. não sei não.. tente colocar isso $arquivo = $_GET['arquivo']; antes de if (!is_file($arquivo)) { // se o arquivo não é arquivo ... se não der certo, eu não sei.. e deixo para outra pessoa te ajudar, pq aqui não tá dadno nenhum problema.. flw Opa, Good agora foi... Mais não está gravando no Banco. <? chdir('./'); $arquivo = $_GET['arquivo']; if (!is_file($arquivo)) { // se o arquivo não é arquivo ... echo "Erro: arquivo $file não encontrado !"; exit; // ... aborte o programa } $con = mysql_connect('localhost8889','root','root'); mysql_select_db('database'); $consulta = "SELECT arquivo,qtd_downloads FROM contador WHERE arquivo='$arquivo'"; $res = mysql_query($consulta,$con); /* certificar se o arquivo já foi clicado alguma vez. Se o arquivo ainda não consta em nossa tabela, vamos inserir um novo registro, caso contrário vamos somar um hit ao registro existente */ if ($saida = mysql_fetch_array($res)) { // registro existe $hit = ++$saida[1]; // some 1 (um) ao número de cliques $update = "UPDATE contador SET qtd_downloads = $hit WHERE arquivo='$arquivo'"; mysql_query($update,$con); // atualize o registro } else { $insert = "INSERT INTO contador (arquivo) VALUES ('$arquivo')"; mysql_query($insert,$con); // insira o novo arquivo na tabela. O valor padrão // de hit é 1 (um) } $tamanho = filesize($arquivo); // pega o tamanho do arquivo em bytes // enviar os cabeçalhos HTTP para o browser header("Content-Type: application/save"); header("Content-Length: $tamanho"); header("Content-Disposition: attachment; filename=$arquivo"); header("Content-Transfer-Encoding: binary"); // abrir e enviar o arquivo $fp = fopen("$arquivo", "r"); fpassthru($fp); fclose($fp); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Dezembro 1, 2009 você deve configurar direito.. Acho que você tá errando.. BASE: $con = mysql_connect('ip OU localhost','usuario do banco de dados','senha do banco de dados'); mysql_select_db('banco de dados que você criou'); Se tiver tudo certo mesmo, você deve criar uma tabela.. CREATE TABLE contador ( arquivo VARCHAR(100) PRIMARY KEY NOT NULL, qtd_downloads INT DEFAULT 1 ); Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Dezembro 1, 2009 você deve configurar direito.. Acho que você tá errando.. BASE: $con = mysql_connect('ip OU localhost','usuario do banco de dados','senha do banco de dados'); mysql_select_db('banco de dados que você criou'); Se tiver tudo certo mesmo, você deve criar uma tabela.. CREATE TABLE contador ( arquivo VARCHAR(100) PRIMARY KEY NOT NULL, qtd_downloads INT DEFAULT 1 ); Opa entaum está certinho aqui eu uso MAC e uso o MAMP a config é: servidor mysql: localhost8889 user:root senha:root base:database Tenho outro sistema de cadastro de pessoas q funciona certinho com essas configs... O que sera q esta errado? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Dezembro 1, 2009 você já criou a tabela na database? Se sim, e se tiver mostrando algum erro na página.. copia e cola pra eu ver aqui.. Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Dezembro 1, 2009 você já criou a tabela na database? Se sim, e se tiver mostrando algum erro na página.. copia e cola pra eu ver aqui.. Opa já criei sim um banco com o nome "database" e importei essas conf para o SQL. CREATE TABLE contador ( arquivo VARCHAR(100) PRIMARY KEY NOT NULL, qtd_downloads INT DEFAULT 1 ); e nada não da erro nenhum e nem grava no banco... fica sempre vazio a tabela "contador" Table Op Msg_type Msg_text database.contador check status OK Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Dezembro 1, 2009 Faça essa atualização e veja se aparece alguma mensagem agora.. Substitua isso: $con = mysql_connect('ip OU localhost','usuario do banco de dados','senha do banco de dados'); mysql_select_db('banco de dados que você criou'); por $hostsql = "localhost8889"; $usersql = "root"; $passsql = "root"; $dbsql = "database"; mysql_connect("$hostsql", "$usersql", "$passsql")or die("<br><font size='2' face='Tahoma'><b>Erro de Configuração:</b><br>Erro na conexão!</font>"); mysql_select_db("$dbsql")or die("<br><font size='2' face='Tahoma'><b>Erro de Configuração:</b><br>Erro ao selecionar Banco de Dados!</font>"); Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Dezembro 1, 2009 Faça essa atualização e veja se aparece alguma mensagem agora.. Substitua isso: $con = mysql_connect('ip OU localhost','usuario do banco de dados','senha do banco de dados'); mysql_select_db('banco de dados que você criou'); por $hostsql = "localhost8889"; $usersql = "root"; $passsql = "root"; $dbsql = "database"; mysql_connect("$hostsql", "$usersql", "$passsql")or die("<br><font size='2' face='Tahoma'><b>Erro de Configuração:</b><br>Erro na conexão!</font>"); mysql_select_db("$dbsql")or die("<br><font size='2' face='Tahoma'><b>Erro de Configuração:</b><br>Erro ao selecionar Banco de Dados!</font>"); EDIÇÃO: INTERNET LENTA ¬¬.. POR ISSO QUE SAIU 2 POSTS.. MAL AE! Vamos lá deu esse erro agora. Erro de Configuração: Erro na conexão! Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Dezembro 1, 2009 hm.. simplesmente, não tá conectando ao banco de dados. a configuração tá errada.. tente criar um novo usuário, uma nova senha, e crie a database. Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Dezembro 1, 2009 Olá Good, Cara vou testar no servidor Linux e no Windows q tenho em casa, pq aqui naum estah dando certo nem com usuario q eu criei continua o mesmo problema. Amanha eu posto a resposta... Obrigadao mesmo... Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Dezembro 2, 2009 Boa noite Good, Cara testei tando no servidor Linux com Apache aqui e no Wiondows com o WampServer, o erro é o mesmo: Erro de Configuração: Erro na conexão!"); mysql_select_db("$dbsql")or die(" Erro de Configuração: Erro ao selecionar Banco de Dados!"); $consulta = "SELECT arquivo,qtd_downloads FROM contador WHERE arquivo='$arquivo'"; $res = mysql_query($consulta,$con); /* certificar se o arquivo já foi clicado alguma vez. Se o arquivo ainda não consta em nossa tabela, vamos inserir um novo registro, caso contrário vamos somar um hit ao registro existente */ if ($saida = mysql_fetch_array($res)) { // registro existe $hit = ++$saida[1]; // some 1 (um) ao número de cliques $update = "UPDATE contador SET qtd_downloads = $hit WHERE arquivo='$arquivo'"; mysql_query($update,$con); // atualize o registro } else { $insert = "INSERT INTO contador (arquivo) VALUES ('$arquivo')"; mysql_query($insert,$con); // insira o novo arquivo na tabela. O valor padrão // de hit é 1 (um) } $tamanho = filesize($arquivo); // pega o tamanho do arquivo em bytes // enviar os cabeçalhos HTTP para o browser header("Content-Type: application/save"); header("Content-Length: $tamanho"); header("Content-Disposition: attachment; filename=$arquivo"); header("Content-Transfer-Encoding: binary"); // abrir e enviar o arquivo $fp = fopen("$arquivo", "r"); fpassthru($fp); fclose($fp); ?> Obs: Cara testei outro codigo aqui pra ver se era acesso ao DB e nada funcionou certinho... agora o codigo q estamos tentando esta dando este erro. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites