Telle antall ganger en link blir klikket?

SveinT83

New Member
Hei. Jeg har et enkelt html side, med en liste over noen linker.
Det jeg ønsker, er å ha en funksjon som teller antall ganger en av disse linkene blir klikket på. Slik at den med flest antall klikk`s vises i toppen av listen.

Er dette mulig i php?
Alle linkene ligger i en SQL-database, med en ledig kollone for å huske klikk`s.
 

adeneo

Medlem
Å telle klikk på serversiden gjøres nok enklest på de sidene klikkene leder til, forutsatt at de er dine egne. Dersom du ikke har kontroll over sidene som lenkene leder til, må du enten ha en "mellomside" som teller klikkene eller bruke javascript.
 

adeneo

Medlem
Du må bruke ajax (asynkron javascript) og kjøre et script på serveren når noen trykker på lenker, slik at du lagrer enten adressen (href) til lenken, ID eller noe annet som du kan kjenne igjen lenken ved eller finne rette kolonne i databasen og bare øke et tall e.l. og når dette er lagret, gå videre til lenken.

Det vil være enklere å bruke en "mellomside", men da må du selvfølgelig lenke til den siden i stedet, og så ha en querystring eller noe slikt med den virkelige lenken, og en videresending dit når klikket er registrert.

En ajax forespørsel gjør man slik, i jQuery (gidder ikke skriver det i vanlig javascript ettersom det blir ti ganger lengre) :

PHP:
$('a').on('click', function(e) { //velger alle a elementer
    e.preventDefault();       //forhindrer det opprinnelige klikket fra å gå videre
    var self=this;         //lagre pga scope
    $.ajax({              //sender ajax til serveren
        type: 'POST',
        url : 'lagre_klikk.php'
        data: {href : self.href}
    }).always(function() {  // når ajax er ferdig og alt er lagret i database...
        document.location.href = self.href;  //gå videre til siden som ble klikket
    });
});

så på serveren i "lagre_klikk.php" tar du igjen lenken slik:

PHP:
<?php
    $url = $_POST['href']

    //lagre URL i databasen
    $db = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);  
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  
    $query = $db->prepare("INSERT INTO lenker ( href ) values ( '".$url."' )");  
    $query->execute();   
?>

litt ettersom hvordan du legger ting i databasen (helst uten å bruke mysql funksjonene).
 
Topp