Как реализовать счетчик ударов с лайтбоксом - PullRequest
0 голосов
/ 22 апреля 2011

Я хочу посчитать количество попаданий на изображение, а также изображение будет отображаться в лайтбоксе.вот мой код:

//image-show-content.php

<script>
function hitcounter(imgid)
{
//alert(imgid);
var imgid = imgid;
window.location.href ="image-show-content.php?img_id="+imgid;

}
</script>
<?php
if(!empty($_REQUEST['img_id']))
{
$show = "SELECT * FROM `tbl_image_gallery` WHERE image_id =".$_REQUEST['img_id']." ";
$result_show = mysql_query($show);
$row = mysql_fetch_array($result_show);

$new_click_count = $row['click_on_image'] +1;
$update_sql = "UPDATE `tbl_image_gallery` SET click_on_image =".$new_click_count." WHERE image_id=".$_REQUEST['img_id']."";
$result_sql= mysql_query($update_sql);

}

// image ...

<a href="uploadedimage/gallery/big/<?=$val['gallery_image']?>" rel="lightbox[100,200]" title="<?=ucfirst($val['category_name'])?>"><img src="uploadedimage/gallery/thumble/<?=$val['gallery_image']?>" onclick="hitcounter('<?=$val[image_id]?>')"/></a>
?>

Моя проблема в том, что когда я нажимаю на изображение, оно возвращает ошибку.Пожалуйста, помогите решить ее. Заранее спасибо. Можете ли вы указать другой вариант, чтобы показать световой короб и счетчик ударов вместе.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2011

Поместите свой php-код в один файл с именем hit_image.php и поместите туда свой код,

<?php
if(!empty($_REQUEST['image_id']))
{
$show = "SELECT * FROM `tbl_image_gallery` WHERE image_id =".$_REQUEST['image_id']." ";
$result_show = mysql_query($show);
$row = mysql_fetch_array($result_show);

$new_click_count = $row['click_on_image'] +1;
$update_sql = "UPDATE `tbl_image_gallery` SET click_on_image =".$new_click_count." WHERE image_id=".$_REQUEST['image_id']."";
$result_sql= mysql_query($update_sql);

}

Теперь ваш HTML-файл должен выглядеть следующим образом,

<script type="text/javascript">
    function counter(imageId)
    {   
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            //document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","hit_image.php?image_id="+imageId,true);
    xmlhttp.send();
    }
</script>

<a onclick="counter(<?=$val[image_id]?>)" rel="lightbox[100,200]" title="<?=ucfirst($val['category_name'])?>"><img src="uploadedimage/gallery/thumble/<?=$val['gallery_image']?>" onclick="hitcounter('<?=$val[image_id]?>')"/></a>

Это просто обзорный код для ваших подсказок.

0 голосов
/ 22 апреля 2011

Проблема в том, когда ваша страница загружается.Лайтбокс уже генерирует динамический узел для вашего тега.

Для достижения этой цели вы можете попробовать с помощью функции onclick в.В этой функции вы должны вызывать AJAX call с вашим идентификатором изображения.Вполне возможно, что ваша функция onclick может вызываться после вызова lightbox или перед вызовом lightbox.Поэтому, пожалуйста, отладка для этого тоже.

Это был бы только один способ достичь этого, по моему мнению.

...