博客列表 >4月13日作业——表格生成器

4月13日作业——表格生成器

钱光照的博客
钱光照的博客原创
2018年04月14日 18:41:46632浏览
利用PHP代码,做成的表格生成器,分为前端和后端,代码如下:
前端代码: bg1.php

实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>表格生成器</title>
	<style type="text/css">
	     h3{

	     	color: green;
	     	margin-left: 80px;
	     }
	     button{
	     	width: 80px;
	     	height:30px;
	     	border: none;
	     	background-color: green;
	     	color: white;
	     	margin-left: 30px;
	     }
	</style>

</head>
<body>
    <h3>表格生成器</h3>
    <!-- 增加标题输入栏 -->
    <P><label>输入标题:<input type="text" name="title1"></label></P>
    <P><label>输入行数:<input type="text" name="rows"></label></P>
    <p><label>输入列数:<input type="text" name="cols"></label></p>
    <p><button>生成表格</button><button>重置表格</button></p>
    <!-- 下载好jquery,注意路径,下面我就放在同目录 -->
    <script type="text/javascript" src="jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
    
         $('button:first').on('click',function(){
        	//each() 方法规定为每个匹配元素规定运行的函数。返回 false 可用于及早停止循环。
        	//$(选择器).each(对象索引,当前对象):用来循环遍历获取到所有jquery对象
        	//这里检验用户输入的3种错误数据:空,非零及是否大于零

        	 //创建请求标志flag,防止重复生成
             var flag=true
             //创建错误输入标志input_flag,防止发送错误请求
             var input_flag=true
             $(':input').not('button').each(function(index,obj){
        		if ($(obj).val().length==0) {
                                input_flag=false
        			$(obj).after('<span style="color:red">不能为空</span>')
        			//用定时器使提示信息2秒后消失
        			setTimeout(function(){
        				$(obj).next().remove()
        			}, 2000);
        			return false
        			//isNaN() 函数用于检查其参数是否是非数字值
        			//跳过对标题的数字检测
        		}else if (!($(obj).name="title1") && isNaN($(obj).val())) {
                                input_flag=false
        			$(obj).after('<span style="color:red">必须是数字</span>')
        			setTimeout(function(){
        				$(obj).next().remove()
        			}, 2000)
        			return false
        		}else if (!($(obj).name="title1") &&($(obj).val()<=0) ){
                                input_flag=false
        			$(obj).after('<span style="color:red">数字必须大于零</span>')
        			setTimeout(function(){
        				$(obj).next().remove()
        			}, 2000);
        			return false
        		}})
        		//检测结束
        		//处理用户的请求(Ajax实现)
        		if(flag==true&&input_flag==true){
        			$.get(
        				//1.请求处理的脚本bg2.php
        				'bg2.php',
        				//2.发送的请求参数,包括标题,行,列
        				{
        				title1:$('input[name="title1"]').val(),
        				rows:$('input[name="rows"]').val(),
        				cols:$('input[name="cols"]').val()
        			    },
        			   //3.请求成功的回调函数
        			    function(data){
        			    	//先将上一次生成的表格删除
				        	$('p:last').next().remove()
				        	//生成新的表格
        				    $('P:last').after(data)
        				//将请求标志设置为false,禁止重复请求
        				flag=false
        			})
        		}
        	

        		
         }) 
         //重置按钮
         $('button').eq(1).click(function(){
         	//将行与列数据全部清空
         	$(':input').not('button').val('')
         	//将输入焦点重置到行文本框上
         	$(':input:first').focus()
         	//将上一次请求生成的表格删除
         	$('P:last').next().remove()
         	//重置请求状态为true:允许用户继续生成表格
         	flag=true
            input_flag=true
         })
    </script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行结果:表格生成器界面.png


后端代码:   bg2.php

实例

<?php
//检测方法必须是GET
if($_SERVER['REQUEST_METHOD']=='GET'){
	//检测行列非空,增加标题检测
	if(!empty($_GET['rows']) && !empty($_GET['cols']) && !empty($_GET['title1'])){
		//接收标题内容、行数、列数的数据
		$title1=$_GET['title1'];
		$rows=$_GET['rows'];
		$cols=$_GET['cols'];
		//
		//创建表格的基本架构,采用字符串拼接方式,最后统一生成。
		$table='<table border="1" cellspacing="0" cellpadding="3" align="center" width="80%">';
		//显示标题
		echo '<h2 align="center">'.$title1.'</h2>';
		//生成表头
		$table.='<tr align="center" bgcolor="lightgreen">';
		//for($i=0;$i<$cols;$i++) {
		//	$table.='<th> X </th>';
		//	}
		//	
			$i=0; //试试用当循环实现
			while ($i<$cols) {
			$table.='<th> X </th>';
			$i++;
			}
		//	
		$table.='</tr>';	//结束表头
		
		//生成表格内容区
		//使用双循环

		for($r=0;$r<$rows;$r++){
			$table.='<tr>';
			for($c=0;$c<$cols;$c++){
				$data=$r*$cols+$c+1;//表格内容填上数字从1开始
				$table.='<td align="center">'.$data.'</td>';
			}
			$table.='</tr>';//结束表格内容
		}
		$table.='</table>';//整个表格完成
		echo $table;//输出表格
		exit();//结束当前脚本
	}
}else{
	exit('<span style="color:red">非法请求</span>');
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

执行结果:

输入数据.png

生成表格.png重置后再次生成.png

总结:

1、前端使用了jQuery库,通过jQrery $each遍历函数对输入数据进行检查;

2、接着使用超全局变量_GET,发送和搜集数据;虽然没有$_POST安全,但是我们做的仅仅是表格生成器,不涉及用户隐私信息,所以用GET方法没关系。

3、重置按钮还是用的遍历函数的.eq()、.first()、.next()、.last()、.not()和一些方法。

4、后端先检查GET,再检查数据非空,然后创建表格基本框架(采用字符串拼接方法),最后统一生成表格。

5、表头采用单循环,表格内容区采用双循环实现,最后exit()结束脚本。

6、有点小瑕疵,还在考虑改正,就是生成表格模块(出现模块多次重复)。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
钱光照2018-04-14 21:18:371楼
测试通过