2012-03-20 2 views
0

짧은 URL 스크립트가 있고 링크 히트 기능을 추가하고 싶습니다.짧은 URL 스크립트에 히트 추가

누군가가 스크립트에서 생성 된 링크를 방문하면 해당 조회수가 데이터베이스에서 업데이트됩니다. 어떤 도움에 감사드립니다

id, shortened_url, url, timestamp, hits. 


    `id` int(11) NOT NULL auto_increment, 
    `shortened_url` varchar(10) NOT NULL, 
    `url` varchar(255) NOT NULL, 
    `hits` int(11) NOT NULL, 
    `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP, 

:

나는 다음과 같은 필드 MySQL의 테이블을했다.

+0

@charmaine 모든 질문은 빨아. 기본 웹 페이지를 배우기 전에 고급 웹 프로그래밍에 대한 도움을 청하십시오. 아래에 요청한대로 echo 문을 추가 할 수도 없습니다! 정교한 프로그래밍으로 잘라내어 붙여 넣기 만하면됩니다. 그들이 도움이 될 수 있다고 생각하는 사람을 도우려고 할 때 사람들의 시간을 낭비하고 있습니다. –

+0

및 무엇이 문제입니까? DG로 이동하십시오. 당신은 몇 가지 핫샷 PHP 프로 수 있지만 정말 배우고 싶다. 너는 너를 빨아 먹는다. – charmaine

+0

@charmaine 배우고 싶지만 좋지 않은 접근 방법을 사용하고 있다는 것을 솔직하게 말하고 있습니다. 'echo '를 사용하는 방법을 알기도 전에 북마크릿을 사용하여 히트를 추적하려고 시도하는 것은 엉덩이를 뒤로 프로그램하는 법을 배우는 것입니다. 나는 개인적으로 당신이 잘못된 길이나 올바른 길을 배우면 상관하지 않지만,이 사이트를 통해 잘못된 길을 배우려고 사람들의 시간을 낭비하고 있습니다. 몇 가지 기본 자습서부터 시작하여 합리적인 수준까지 먼저 작업하십시오. (그리고 너는 너 자신을 아프게 할 뿐이다. 미래에 너는 돌아보고 생각할 것이다. "와우, DG는 거짓말이 아니야.) –

답변

0

Google 앱과 같은 솔루션을 사용하지 않고 데이터베이스에서 업데이트를 원한다면 다음 작업을 수행 할 수 있습니다.

$(document).ready(function(){ 
    $("a .scriptGenerated").bind('click', function(e){ 
     e.preventDefault(); 
     var postUrl = 'some page on your site to post to'; 

     var shortUrl = $(this).attr('shorturl'); ///replace short url with whatever that means 
     var url = $(this).attr('href'); 
     var time = new Date(); 

     var data = {"shorturl":shorturl, "url" : url, "time" : time}; 

     $.post({null, postUrl, data, success:function(result){window.location = url;}}); 
    }); 
}); 

내 생각은 거기에 몇 가지 버그를 가지고 있지만 아이디어는, 그것을 실행로부터 "scriptGenerated"클래스가 앵커를, 정거장이 (앵커 DOM 요소)에서 데이터를 끌어와 게시물을로 POST에서 데이터를 가져올 수있는 응용 프로그램의 일부 페이지 성공하면 해당 페이지로 리디렉션됩니다. 어쩌면 나는 당신이하고 싶은 것을 오해하고 있습니다.

당신의 짧은 URL 리디렉션 페이지에서
+0

나는 생각한다. 문제는 페이지의 임의의 링크를 리디렉션하는 것이 아니라 'postURL' 페이지를 구현하는 것입니다. – benesch

+0

그는 PHP 코드에 대해 묻는 것 같아요. – Secko

0

, 실행 다음과 같은 쿼리 :

SELECT url from [tablename] WHERE shortened_url=[short_url] 
UPDATE [table_name] SET hits=hits+1 WHERE shortened_url=[short_url] 

#redirect to url retrieved from first query 

가 그렇게 욕망, 당신은 테이블 (이후, 정의에 의해, 각각의 짧은 URL에 대한 고유 식별자로 shortened_url를 사용할 수있는 경우 고유해야합니다). 이 경우 숫자 id이 필요 없습니다.


이 시도 :

$shortened_url = mysql_real_escape_string($shortened_url); 

mysql_query("UPDATE [tablename] SET hits=hits+1 WHERE 
    shortened_url='$shortened_url'"); 

$query = mysql_query("SELECT * FROM [tablename] WHERE 
    shortened_url='$shortened_url' LIMIT 1", $db); 
echo mysql_errno($link) . ": " . mysql_error($link); 
$row = mysql_fetch_row($query); 
if (!empty($row)) { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header("Location: " . $row[2]); 
} 
+0

여전히 작동하지 않습니다 : [$ query = mysql_query ("SELECT * FROM'". mysql_escape_string ($ shortened_url) ","LIMIT 1 ", $ db); $ row = mysql_fetch_row ($ query); if (! empty ($ query_server) 행)) \t { \t 헤더 ("HTTP/1.1 301 Moved Permanently"); \t 헤더 ("위치 :". $ 행 [2]. ""); \t} ] – charmaine

+0

@charmaine, 업데이트 된 코드를 사용해보십시오. 실제 테이블 이름을 사용하고 있습니까? – benesch

+0

예. 실제 tablename을 사용하지만 여전히 운이 없다 : ( – charmaine