Dealing with Multiple-Choice Form Fields(3) - Handling checkbox groups

这一节有一些新鲜的内容:

1、多个选项的checkbox,同类的所有的checkbox的name值都是一样的,所以用单个的值很难区分他们,所以这里输入的值就是数组了。

之前还一直奇怪为什么在对输入的值的处理的时候还要考虑数组的情况,现在知道了。

那这一节我们要做什么呢?

1、要给checkbox的name添加一个不同的样式[];就像下面这样(这里的论语放的地方不规范,没有用标签包围,不过只做演示用,这里不影响):

1 <input class="books" type="checkbox" name="books[]" value="lunyu">论语

这样我们得到的输入值就是一个数组,即$_POST里面可能会有一个$books = (‘lunyu‘,‘shijing‘,‘guwenguanzhi‘);(诗经和古文观止是另外两个具有同样name的input)

2、首先,同上两节学习的checkbox和radio一样,如果用户在不选择任何一个checkbox的情况下,点击submit按钮,$_POST中是不会有$books的量的,我们甚至连一个空数组$books都得不到,不过好在我们知道这种情况(即用户没有选择任何选项点击提交按钮的时候,反映在代码上就是($_POST && isset($_POST[‘books‘]) == false的情况)),这种情况下我们可以认为的设定$_POST[‘books‘] = array();(不能设置$books = array(),因为这个代码是放在包含mail_process.php之前的,$books是在mail_process.php之中定义的,所以这个时候$books是undefined。)

1     if(!isset($_POST[‘books‘])){
2
3         $_POST[‘books‘] = array();
4     }

3、然后我们要保存用户的输入,就是如果用户其他的输入不合法,确保他再次输入的时候已经输入正确的选项能够保存下来。用到的代码如下,其实和原来的原理是一样的:

1  <input class="books" type="checkbox" name="books[]" value="lunyu"
2  <?php if($_POST && in_array(‘lunyu‘,$books)){echo ‘checked‘;} ?>
3  >论语

4、增加一个验证,验证用户的输入量必须大于某个设定的数值。我们只要设法获得用户已经选择的checkbox的数量,然后和我们设定的一个量做对比即可。

1     $minBooks = 2;
2     if($_POST && count($_POST[‘books‘]) < $minBooks){
3         $errors[] = ‘books‘;
4     }

count($_POST[‘books‘])得到的就是数组$books里面的数量(但这个时候还么有require mail_process.php所以不能用$books),也就是用户选择的的书的数量。

这样,如果in_array(‘books‘,$errors)我们就可以断定用户选择的书的数量是少于$minBooks的,就可以相应的显示错误提示信息了。说到这里还不会的话,说明前面的课没好好学哦~~

后面的,由于我们已经将这个值转化的和以前的输入是一样的,就不用担心后面的逻辑了~~

时间: 2024-10-14 14:05:54

Dealing with Multiple-Choice Form Fields(3) - Handling checkbox groups的相关文章

Dealing with Multiple-Choice Form Fields(1)-Handling radio button groups

这一节的主要内容: 1.创建一个radio input(这是HTML的内容,但是之前掌握的不熟练): 2.把它加入到原来的值的体系当中,即: 判断有没有选择gender,如果没有选择就设定:$_POST['gender'] = '';这个时候mail_process.php中的以下代码将中把'gender'添加到$missing数组中: 1 if(!$suspect){ 2 foreach($_POST as $key => $value){ 3 $temp = is_array($value)

Dealing with Multiple-Choice Form Fields(2)- Handling single checkboxes

这一节的内容跟上一节的内容很像,甚至比上一节的内容更简单,因为只有一个checkbox. 跟上一节相同的地方是,如果你不选择,那么$_POST里面就不会有这个checkbox的任何信息,连key都没有,所以我们要手动创建. 即:(terms是checkbox的name值) if(!isset($_POST['terms'])){ $_POST['terms'] = ''; } 然后就是把他加入到$expected 和$require中了. 然后就是添加错误提示信息,如果你不勾选这个选框,就不能继

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields(翻译)

0 - Abstract 我们提出了一种方法去在一张图片中有效地识别多个人体的2D姿势.这个方法使用了一个无参数表示法,我们将其叫为Part Affinity Fields(PAFs),其是去在图片中根据个体识别身体各部分的联合.这个架构编码了全体信息,并且允许一个贪婪的从底向上的解析步骤,这在实现实时性能的时候有着高度的精度而无须考虑图像中个体的数量.这个架构被设计成使用了两个分支的相同序列预测过程,从而来联合学习部分定位以及他们的联系.我们的方法在the inaugural COCO 201

Windows Form -----内容(1)

窗体: 一.控制标题栏 Text--控制标题栏的文字 Icon--控制标题栏的图标 MaximizeBox--窗体标题栏的右上角是否有最大化框(ture/false) MinimizeBox--窗体标题栏的右上角是否有最小化框(ture/false) ControlBox--所有的最大化.最小化.关闭按钮(ture/false) 二.控制背景 BackColor--控制背景色 BackgroundImage--控制背景图 BackgroundImageLayout - 背景的布局方式 Tile-

android控件开发之Radio(单选按钮)和CheckBox(多选按钮)开发

android控件开发之Radio(单选按钮)和CheckBox(多选按钮)开发 本博文主要讲述的是android开发中的单选和多选按钮的使用,具体情况请看实例代码: MainActivity.java: package com.example.radiotest; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.CheckBox; imp

通过编写串口助手工具学习MFC过程&mdash;&mdash;(五)添加CheckBox复选框

通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个串口助手再次熟悉一下MFC,并做了一下记录,以便方便以后查阅.做的过程中多是遇到问题直接百度和谷歌搜索来的,所以很多都是不求甚解,知其然不知其所以然.另外做此工具只是为了熟悉了解,许多功能还没有完善!(开发工具VS2008) (五)添加CheckBox复选框 属性:Caption用于显示文本内容.

Cocostudio学习笔记(2) Button + CheckBox

这篇记录了两个控件的使用流程:Button 和 CheckBox. ---------------------------------------------------------------------------------------------------------------------------- Button ------------------------------------------------------------------------------------

(寒假集训)Watering the Fields (最小生成树)

Watering the Fields 时间限制: 1 Sec  内存限制: 64 MB提交: 26  解决: 10[提交][状态][讨论版] 题目描述 Due to a lack of rain, Farmer John wants to build an irrigation system to send water between his N fields (1 <= N <= 2000). Each field i is described by a distinct point (x

Windows Form -----内容(10)

权限管理:一.设置权限:(一)设计界面:(二)代码:1.窗体加载时候:把人员加载上,把功能加载上.  **2.根据人员查看它相应的功能.**3.设置人员的功能.二.根据权限加载界面: namespace WindowsFormsApplication17 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Filluser() { List<UserPermiss