0

画像/バナーのクリック/ビューを追跡するために、この既存のコードをどのように変更できますか?これはPHPだけでも可能ですか、それともjQuery(ajax)を使用する必要がありますか?

私はMYSQLテーブルにbannerClicksあります。bannerViewstblbanners

これは、画像/バナーを生成するためのコードです。

    $query91 = 'SELECT * FROM tblbanners WHERE tblbanners.bannerStatus!=\'1\'';
    $result91 = full_query ($query91);

    $bannerCounter = 1;
    while ($data91 = mysql_fetch_array ($result91))
    {

        $ID = $data91['ID'];
        $bannerName = $data91['bannerName'];
        $bannerLocation = $data91['bannerLocation'];
        $bannerUrl = $data91['bannerUrl'];      

        $bannerCode[$bannerCounter] = '<a id="' . $ID . '" class="banner-url" href="' . $bannerUrl . '" target="_blank"><img alt="' . $bannerName . '" src="banners/' . $bannerLocation . '" width="100px" height="200px" /></a>';
        $bannerCounter++;
    }

    $bannerAdTotals = $bannerCounter - 1;

    if($bannerAdTotals > 1)
    {
       mt_srand((double)microtime() * 1234567);
       $bannerPicked = mt_rand(1, $bannerAdTotals);
    }
    else
    {
       $bannerPicked = 1;
    }

    $bannerAd = $bannerCode[$bannerPicked];

    print $bannerAd;
4

1 に答える 1

2

JavaScriptを使用するか、クリックをインターセプトすることができます。クリックをインターセプトするには、バナーURLをデータベースに保存していると仮定して、クリックをインターセプトし、クリックを追跡してからリダイレクトするPHPスクリプトを設定するだけです。次のような単純なもの:

<?php

$sql = "SELECT `url` FROM `banners` WHERE `id` = :banner_id LIMIT 1";
$stmt = $db->prepare($sql);
$stmt->bindParam(':banner_id', $_GET['id'], PDO::PARAM_INT);
$stmt->execute();
$banner = $stmt->fetchObject();

$sql = "INSERT INTO `clicks` (`banner_id`) VALUES (1)";
$res = $db->exec($sql);

header('Location: ' . $banner->url);

明らかに、データベース接続/オブジェクトをインスタンス化し、データベースのテーブルと列の名前を変更し、検証する必要があります。

このアプローチでは、バナーを表示するときに、データベースからバナーを選択するときに代わりにこれを行います。

<a href="track_click.php?id=<?php echo $banner->id; ?>">
  <img src="<?php echo $banner->img; ?>" alt="<?php echo $banner->alt; ?>" />
</a>
于 2012-09-17T16:48:31.903 に答える