【问题标题】:how to show hit counter then make it back to zero?如何显示命中计数器然后使其归零?
【发布时间】:2010-06-21 02:25:34
【问题描述】:

我希望在我提交表单后它可以显示命中计数器.. 但我希望它达到“20”后它可以回到零。bcoz提交的限制是20次,所以它不能超过限制。

我如何使它工作?我一直在尝试这个代码......

<?
$limit="20";
$Query_counter=mysql_query("SELECT model FROM inspec");
$Show_counter=mysql_fetch_array($Query_counter);
$show_counter = $show_counter["model"]+1;

if($show_counter > $limit[0]) {
      $show_counter = 0;
}elseif ($show_counter > $limit[1]) {
      $show_counter = 0;
}


$Query_update=mysql_query("UPDATE inspec SET model=$Show_counter");
$Show_counter=number_format($Show_counter);
$Show_counter=str_replace(",",".",$Show_counter);
echo "Hit:</br><strong>$show_counter</strong>";
?>

【问题讨论】:

  • 对不起,你的问题太模糊了......不确定你想要达到什么目的。什么目标?什么碎片?柜台在哪里?尝试粘贴您目前拥有的代码,并更详细地描述它应该做什么。
  • 我一直在改变我的问题...
  • 请使用我们在学校都学过的标点符号并正确大写。难道大多数语言,不仅仅是英语,都有标点符号的概念,以防万一你不是以英语为母语的人?但是,如果我在这里错了,那仍然不是借口。如果您编写正确的语法,编译器和运行时将不会那么宽容。

标签: php jquery mysql


【解决方案1】:

要使计数器上升到某个值然后循环回零,您可以使用模数运算符,在很多语言(包括 PHP 和 MySQL)中是 %

$x = 0;
$limit = 4;
for ($i = 0; $i < 10; ++$i) {
    $x = ++$x % $limit;
    echo $x;
}
// 1, 2, 3, 0, 1, 2, 3, 0, 1, 2

我希望这有足够的意义。我无法从这个问题中弄清楚你到底想要什么......也许是这样的?

UPDATE `mytable` SET `mycounter` = (`mycounter` + 1) % {{the limit}}

【讨论】:

  • @klox - 一点也不。不应该添加“{{ }}” - 它只是为了突出显示您需要替换的内容。你也不需要做两次模数(在你的代码中你已经把它放在 PHP 和 SQL 中)。您还必须保持大小写一致($Show_counter$show_counter 不同)。您刚刚复制了我的示例,该示例旨在说明它是如何工作的。除非您希望您的脚本只打印出一长串数字,否则您可能必须自己更改它。我将使用更接近您可能想要的内容进行编辑。
  • ...实际上,我不会,因为我仍然不知道您真正想要什么。
  • 我想要的是在我提交表单后它可以显示命中计数器..但我希望它达到“20”后它可以回到零..bcoz 提交的限制是 20 次所以它不能超过限制..
【解决方案2】:

这里的概念是测试您要递增的变量是否由于下一次递增而超出了某个可接受的范围。简单地增加变量,然后测试它的值。

在您的情况下,只需在增加计数器后添加一个测试:

$show_counter = $show_counter["model"]+1;
if($show_counter > $limit){
    $show_counter = 0;
}

请务必将$limit 定义为您想要循环的任何数字。

如果您想对多个阈值执行此操作,您可以添加额外的测试。请注意,您可以将$limit 硬编码为您想要的任何数字或任何变量,这正是您要测试的对象。

【讨论】:

  • 如果我有两个类别我该怎么办..limit[1]=20 limit[2]=8
  • @klox,更新了我的答案,希望它能提供您需要的说明。
【解决方案3】:
<?
$Query_counter=mysql_query("SELECT model FROM inspec");
$Show_counter=mysql_fetch_array($Query_counter);
$show_counter = $show_counter["model"]+1;

$x = 0;
$limit = 20;
for ($i = 0; $i < 30; ++$i) {
    $x = ++$x % $limit;
    echo $x;
}

$Query_update=mysql_query("UPDATE inspec SET model= (model + 1) % 20");
$Show_counter=number_format($Show_counter);
$Show_counter=str_replace(",",".",$Show_counter);
echo "Hit:</br><strong>$show_counter</strong>";
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 2021-05-30
    相关资源
    最近更新 更多