原形文档使用

<html>
<head>
	<meta http-equiv="content-type" charset="utf-8" />
</head>
<body>
<?php
	/*
	*原形文档的应用
	*/
	function make_list($parent){
		global $tasks;		
		echo '<ol>';
		//遍历每个有子菜单的项
		foreach($parent as $task_id => $todo){
		/*
		*原形文档输出,注意结束符EOT要在新行的最前端
		*
		*/				
		echo <<<EOT
		<li><input type="checkbox" name="tasks[$task_id]" value="done" />$todo	
EOT;
			//判断这项是否有子菜单,有的话,用相同的方法遍历
			//判断的方法是,是否有数据项以这个项的路径为父路径
			if(isset($tasks[$task_id])){
				make_list($tasks[$task_id]);	
			}
			
			echo '</li>';
		}
		echo '</ol>';
	}
	$dbc = mysqli_connect('localhost','root','gonglishan520','xsphpdb') or die('could connect to database');
	if(isset($_POST['submitted']) && isset($_POST['tasks']) && is_array($_POST['tasks'])){
		$q = 'update tasks set date_completed=NOW() where task_id in(';
		
		foreach($_POST['tasks'] as $task_id => $v){
				$q .= $task_id.', ';
		}
		//去除末尾的', ';
		$q = substr($q,0,-2).')';
		$r = mysqli_query($dbc,$q);
		
		if(mysqli_affected_rows($r) == count($_POST['tasks'])){
			echo '<p>all completed</p>';
		}else{
			echo '<p>not all completed</p>';
		}
	}
	
	
	//先把所有项取出来
	$q = 'select task_id,parent_id,task from tasks where date_completed="0000-00-00 00:00:00" order by parent_id,date_added asc';	
	$r = mysqli_query($dbc,$q);	
	$tasks = array();
	//根据父路径,自身路径重新组合数组
	while(list($task_id,$parent_id,$task) = mysqli_fetch_array($r,MYSQLI_NUM)){
		$tasks[$parent_id][$task_id] = $task; 	
	}
	
	if(empty($tasks)){
		die('not data yet');
	}else{
		echo '<form action="test.php" method="post">';
		
		make_list($tasks[0]);
		
		echo '<input name="submitted" type="hidden" value="true">
			<input name="submit" type="submit" value="update">
			</form>
		';		
	}
?>
</body>
</html>

数据表结构图:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值