PHP MySQL图像点击计数器

时间:2015-05-09 08:04:26

标签: php mysql image hitcounter

我是PHP的新手并且一直致力于打击计数器。点击计数器效果很好但现在我想将数字转换为图像。

我创建了12个图像0-9,一个间隔符和一个逗号图像。

我已经搜索了一下我需要做些什么来将数字格式转换为图像并且没有成功。到目前为止,我所发现的是如何使用仅文件,PHP / MySQL以及如何使用PHP / MySQL显示加密图像来创建基本命中计数器。

所以问题是: 如何告知给定代码显示图像以代替每个数字?

当前PHP结果示例:点击:2,435

我希望我的PHP获得命中总数(示例),然后使用以下代码获取并替换2,435:

<img src="img/2.png"><img src="img/comma.png"><img src="img/4.png"><img src="img/3.png"><img src="img/5.png">

<小时/> 注意:我在此处显示的代码中使用了大量注释。这样,任何新的编码器都可以更容易地理解正在显示的脚本。我将在本文的底部添加我的最终/完成代码,以便每当我找到解决方案时,每个人都可以看到最终产品。 此代码完全虚构为文本点击计数器

// Begin open SQL connection to database
$concount = mysqli_connect("site","username","password","database");
// End connection to database

// Begin update number of hits
mysqli_query($concount,"UPDATE counter SET hits = hits + 1");
// End update number of hits

// Begin get number of hits
$hits = ("SELECT SUM(hits) FROM counter");
// End get number of hits

// Begin show number of hits
$result = mysqli_query($concount,$hits);
while($row = mysqli_fetch_array($result)) {
  echo "Hits:&nbsp;" . number_format((float)$row['0']) . "&nbsp;";
}
// End show number of hits

// Begin close SQL connection
mysqli_close($con);
// End close SQL connection

<小时/> 编辑:以下是我的代码的最终结果。 请注意,此脚本中的数组会放置一个&#39;在图像数组的开头和结尾。 (参见以下示例)

Array ( [0] => ' [1] => 2 [2] => 4 [3] => 3 [4] => 5 [5] => ' )

因此,除非我想在我的点击计数器的以太端上打破图像,否则我必须使用它们。我将我已经计划使用的透明图像重命名为&#39; .png(参见下面的示例)

<img src="img/'.png"><img src="img/2.png"><img src="img/4.png"><img src="img/3.png"><img src="img/5.png"><img src="img/'.png">

<小时/> 最终代码 此代码完全虚构为图像点击计数器

// Begin open SQL connection to database
$concount = mysqli_connect("site","username","password","database");
// End connection to database

// Begin update number of hits
mysqli_query($concount,"UPDATE counter SET hits = hits + 1");
// End update number of hits

// Begin get number of hits
$hits = ("SELECT SUM(hits) FROM counter");
// End get number of hits

// Begin assign $hits an id
$result = mysqli_query($concount,$hits);
while($row = mysqli_fetch_array($result)) {
$totalhits=("'" . $row[0] . "'");
}
// End assign $hits an id

// Begin get id for number of hits, split the string into array, and assign id to numbers
$arr = str_split($totalhits);
$numbers = $arr;
foreach ($numbers as $value) {
// End get id for number of hits, split the string into array, and assign id to numbers

// Begin show number of hits as images
    echo "<img src=\"img/".$value.".png\">";
} 
// End show number of hits as images

// Begin close SQL connection
mysqli_close($con);
// End close SQL connection

<小时/> 最终说明: 我还没有尝试过向较大的数字添加逗号或删除数组上的撇号。如果我这样做,我会回来编辑它。

2 个答案:

答案 0 :(得分:2)

您可以使用str_split($str)将字符串转换为字符数组。 接下来,您可以使用简单的forforeach循环对其进行迭代。

修改

如何可视化图像有多种选择。 你可以使用html <img src=''>标签或CSS。

如果使用CSS ,则可以创建包含所有单个图像(即spritemap或tilemap)的1个图像。然后使用CSS在单个图像中再次将其拆分。您可以通过为背景图像定义一般声明来完成此操作,然后让每个数值定义该图像内的偏移量。

.nr1 .nr2 .nr3 {    
  background: url(sprites.png) no-repeat;
}
.nr1 { background-position: 0 0 ; }
.nr2 { background-position: 0 -21px ; }
.nr3 { background-position: -21px -42px ; }

找到确切偏移的任务可能看起来很耗时。但有几个免费在线工具可以为您做到这一点。我个人经常使用this one。您可以将单个图像拖动到Web浏览器中,它将创建单个图像和必要的CSS。

使用spritemap的一个优点是所有图像一起加载。如果你使用单独的图像,你可以在加载图像时看到某种闪烁。

答案 1 :(得分:2)

您需要将点击计数器拆分为数组,每个值包含一位数,然后使用for循环来附加图像。

<?php
$array = str_split($your_hit_variable_from_mysql);
if(!empty($array)){
  foreach($array as $single){
        echo '<img src="'.$single.'.jpg"'>;
  }
}else{
        echo '<img src="0.jpg"'>;
}
?>

确保以整数格式存储数字,而不是使用逗号存储52,200字符串。

如需更多检查 Here.

编辑:当图片的计数器为0时添加了异常处理。