首页 > 编程语言 >PHP阶段案例之Web表单生成器 转摘的

PHP阶段案例之Web表单生成器 转摘的

时间:2022-11-20 00:55:07浏览次数:68  
标签:Web attr default text 生成器 表单 PHP generate option

HP阶段案例之Web表单生成器

 

① 准备表单

这里是用form.php文件来保存表单信息,通过$element元素以数组的形式来保存需要生成的表单项,然后在form中调用我后面介绍的表单生成函数即可。***【注意:文件后缀是.php,而不是.html;在html文件中php代码会被注释,但是html代码却可以在php文件中正常使用。】***

② 定义表单生成函数
编写一个generate.php文件用于存放表单生成函数,generate()负责分配任务给其他函数,然后通过各种拆分组合后返回html代码。(图片中含详细解释)

generate()函数与generate_attr()函数
————————————————
版权声明:本文为CSDN博主「GSCY」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_48592827/article/details/114026722

generate_input()函数

完整代码

form.php文件完整代码

<?PHP
require 'generate.php'; //引入表单生成函数
// -------------准备表单数组$elements------------
//定义一个变量$elements用于保存需要生成的表单项,
$elements = [
0=>[
'tag' => 'input', //tag元素用于保存标签
'text' => '姓 名:', //text元素用于保存提示文本
'attr' => ['type'=>'text','name'=>'username'] //attr元素用于保存表单元素属性
],
1=>[
'tag' => 'input',
'text' => '邮 箱:',
'attr' => ['type'=>'text','name'=>'email']
],
2=>[
'tag' => 'input',
'text' => '手机号码:',
'attr' => ['type'=>'text','name'=>'phone_number'],
],
3=>[
'tag' => 'input',
'text' => '性 别:',
'attr' => ['type'=>'radio','name'=>'gender'],
'option'=>['m'=>'男','w'=>'女'], //option元素用于保存单选框或复选框中的每一个选项
'default'=>'w' //default元素用于保存默认值
],
4=>[
'tag' => 'input',
'text' => '爱 好:',
'attr' => ['type'=>'checkbox','name'=>'hobby[]'],
'option'=>['swimming'=>'游泳','reading'=>'读书','runing'=>'跑步'], //option元素用于保存单选框或复选框中的每一个选项
'default'=>['swimming','runing'] //default元素用于保存默认值
],
5=>[
'tag' => 'select',
'text' => '住 址:',
'attr' => ['name'=>'address'],
'option'=>[''=>'--请选择--','chongqing'=>'重庆','beijin'=>'北京','shanghai'=>'上海','guangzhou'=>'广州'],
],
6=>[
'tag' => 'textarea',
'text' => '自我介绍:',
'attr' => ['name'=>'self_introduction','cols'=>'40','rows'=>'5']
],
7=>[
'tag' => 'input',
'attr' => ['type'=>'submit','value'=>'提交']
]
];
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Web表单生成器</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div>个人信息</div>
<form method="post">
<?=generate($elements)?>
</form>
</body>
</html>

 

generate.php文件完整代码

<?php
//用于保存表单
function generate($elements){
$item = ''; //$item用于保存拼接结果
$default = ['tag'=>'','text'=>'','attr'=>[],'option'=>[],'default'=>''];
foreach($elements as $v){
$v = array_merge($default,$v); //array_merge 用于合并一个或多个数组
$generate = 'generate_'.array_shift($v); //array_shift 将数组开头的单元移出数组
$v['attr'] = generate_attr($v['attr']); //将属性数组转化为HTML格式 这句很关键!!!
$item.='<tr>'.call_user_func_array($generate,$v).'</tr>'; //call_user_func_array 调用回调函数,并把一个数组参数作为回调函数的参数
}
return "<table>$item</table>";
}

//实现表单元素的拼接
function generate_attr($attr,$items=''){ //$attr是一个一维关联数组 保存的表单元素属性
foreach($attr as $k => $v){ //$items用于保存属性拼接的字符串
$items .= " $k=\"$v\" ";
}
return $items;
}

//input控件的生成
function generate_input($text,$attr,$option,$default){
if(empty($option)){ //判断$option是否为空
//拼接type属性值为text、password、hidden、reset、submit
$items = "<input $attr value=\"$default\">";
}else {
//拼接type属性值为radio、checkbox的元素
$items = '';
foreach($option as $k=>$v){
$checked = in_array($k,(array)$default,true)?'checked':''; //in_array 检查数组中是否存在某个值
$items .= "<lable><input $checked $attr value=\"$k\">$v</lable>";
}
}
return "<th>$text</th><td>$items</td>";
}

//拼接select下拉列表
function generate_select($text,$attr,$option,$default){
$items = '';
foreach($option as $k=>$v){ //foreach用于拼接下拉列表选项
$selected = ($default ===$k)?'selected':'';
$items .= "<option $selected value=\"$k\">$v</option>";
}
$select = "<select $attr>$items</select>"; //完成selec标签的完整拼接
return "<th>$text</th><td>$select</td>"; //返回含有描述信息的拼接结果
}

//拼接textarea文本区 元素
function generate_textarea($text,$attr,$option,$default){
$textarea = "<textarea $attr>$default</textarea>";
return "<th>$text</th><td>$textarea</td>";
}

?>

标签:Web,attr,default,text,生成器,表单,PHP,generate,option
From: https://www.cnblogs.com/tomcat2022/p/16907658.html

相关文章

  • zblogphp GetPostList()与GetArticleList()的区别
    GetArticleList()与 GetPostList()获取文章列表的逻辑大差不差,区别在于:GetArticleList()只会查询 log_Type=0的文章,也就是只查询post_type=0的文章,返回的列表全是\P......
  • ES6之生成器
    生成器生成器函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同比如:function*gen(){yield'一只没有耳朵';yield'一只没有尾巴';return'真......
  • java网上商城与php网上商城比较
    java网上商城与php商城比较1.应用比较:JAVA的应用比较广泛,比如世界五百强网站,大型政府网,各大银行等网站都是基于JAVA构建。基于JAVA技术开发的商城......
  • 转:web开发常用工具
    测试网站加载时间​​​http://www.iwebtool.com​​​http://tools.pingdom.com/fpt/使用Pingdomtools的用户可测试他们的网站加载时间并找出......
  • Web表单生成器--转摘-守护那份情,给自己学习用。侵权情通知,会删。
     在项目的实际开发中,经常需要设计各种各样表单。直接编写HTML表单虽然简单,但修改、维护相对麻烦。  因此,可以利用PHP实现一个Web表单生成器,使其可以根据具体的需求定......
  • zblogphp如何使用模板引擎Template类如何使用
    Template类的构造函数没有任何参数,所有的功能都是通过调用其成员函数实现的。$template=newTemplate();//设置模板标签.zblog内置的模板变量和sidebar都在该函数绑定......
  • zblogphp的Pagebar类如何使用
    当我们为Zblog开发的插件/模板不走系统内置的ViewXX()编辑器时,模板中就没有pagebar对象了。想用系统的Pagebar功能,但是官方文档里没有介绍该怎么使用,就只能查看源码了。......
  • web页面漂浮广告
    <divid="kefuLayer"style="position:absolute;right:100px;top:100px;width:210px;height:275px;z-index:10000;border:1pxsolid#cdcdcd;white-......
  • JavaWeb学习(五)学号自增设计起始值、优化链接为按钮
    一、NavicatPremium12设置主键自增、起始值  二、优化链接为按钮 <inputtype="button"value="学生"onclick="location.href='S_Deng_lu.jsp'"/> ......
  • java web 操作Cookie
    importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclass......