如何创建一个变量,该变量为每个选中的复选框增加1


How to create a variable which increments by 1 for each checkbox which is ticked

我试图创建一个返回布尔值(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
    // 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'];
}
?>

你正在设置

$_SESSION['counter']= 0; 

在每次PHP脚本被调用时被置零。不管它之前是什么,这一行总是将它重置为0。

将此更改为仅在它不存在时初始化它。像. .

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