【问题标题】:How to create a variable which increments by 1 for each checkbox which is ticked如何为每个选中的复选框创建一个递增 1 的变量
【发布时间】:2015-07-18 14:44:47
【问题描述】:

我正在尝试创建一个函数,该函数在选中复选框时返回布尔值(1 或 0)......这里没有问题。我还希望它包含一个会话变量,该变量为每个选中的复选框增加 1。当我在提交表单后回显 $_SESSION ['counter'] 的值时,$_SESSION ['counter'] 保持为零或我最初设置的任何值。谁能看到我哪里出错了?非常感谢您提前提供的任何帮助!

<?php
if(!isset($_SESSION)) 
{ 
    session_start(); 
} 


$_SESSION['counter']= 0; 


function checkbox_boolean ($checkboxID){ 

   $checkboxID= 0;
   if(isset($_POST[$checkboxID])){
       $checkboxID = 1;
       $_SESSION['counter']++;
   }
} 


if(isset($_POST['submit'])){

    echo $_SESSION['counter'];


    checkbox_boolean ('slot1');
    checkbox_boolean ('slot2');
    checkbox_boolean ('slot3');
    checkbox_boolean ('slot4');
    checkbox_boolean ('slot5');
    checkbox_boolean ('slot6');
    checkbox_boolean ('slot7');
    checkbox_boolean ('slot8');
}

?>

【问题讨论】:

    标签: php function increment


    【解决方案1】:

    您的代码中有很多错误,请参阅建议的修改

    ?php
        // dont need to test anything just call session_start()
        session_start();   
    
       // initialise only if not already in existance
        if ( !isset( $_SESSION['counter'] ) ) {
            $_SESSION['counter'] = 0; 
        }
    
    
    function checkbox_boolean ($checkboxID){ 
       // this just destroyed whatever was passed in the $checkboxID parameter
       // $checkboxID= 0;  
       if(isset($_POST[$checkboxID])){
           // This does nothing useful
           //$checkboxID = 1;
           $_SESSION['counter']++;
       }
    } 
    
    
    if(isset($_POST['submit'])){
    
        echo 'Session counter before = ' . $_SESSION['counter'];
    
        checkbox_boolean ('slot1');
        checkbox_boolean ('slot2');
        checkbox_boolean ('slot3');
        checkbox_boolean ('slot4');
        checkbox_boolean ('slot5');
        checkbox_boolean ('slot6');
        checkbox_boolean ('slot7');
        checkbox_boolean ('slot8');
    
        echo 'Session counter after = ' . $_SESSION['counter'];
    }
    
    ?>
    

    【讨论】:

    • 非常感谢 Raphael diSanto 和 RiggsFolly!这几天我一直在追我的尾巴,所以我真的很感谢你的帮助。感谢 RiggsFolly 指出错误!
    【解决方案2】:

    你正在设置

    $_SESSION['counter']= 0; 
    

    每次调用 PHP 脚本时归零。不管以前是什么,这条线总是将它重置为零。

    将其更改为仅在它不存在时才对其进行初始化。有点像..

    if (!isset($_SESSION['counter'])) {
      $_SESSION['counter']= 0; 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 2013-08-11
      • 2022-09-24
      • 2018-08-23
      • 1970-01-01
      • 2020-10-14
      • 2021-04-03
      相关资源
      最近更新 更多