2-9作业编辑功能 提交没反应

2-9作业编辑功能 提交没反应

<?php
header("Content-type:text/html;charset=utf-8;");
date_default_timezone_set("PRC");
$edkey=$_GET["edkey"];
$filename="msg.txt";

$msgs=[];

if(file_exists($filename)){
	$string=file_get_contents($filename);
	if(strlen($string)>0){
		$msgs=unserialize($string);//如果有内容就把反序列化一下
	}
	
	$edarr=$msgs[$edkey];
	
	
	
	if(!is_array($edarr) || count($edarr)<=0){
		echo "<script>alert('编辑错误 ,无法编辑');location.href='index.php';</script>";
	}
	
}

?>

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://www.francescomalagrino.com/BootstrapPageGenerator/3/js/jquery-2.0.0.min.js"></script>
<script type="text/javascript" src="http://www.francescomalagrino.com/BootstrapPageGenerator/3/js/jquery-ui"></script>
<link href="http://www.francescomalagrino.com/BootstrapPageGenerator/3/css/bootstrap-combined.min.css" rel="stylesheet" media="screen">
<script type="text/javascript" src="http://www.francescomalagrino.com/BootstrapPageGenerator/3/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
	<div class="row-fluid">
		<div class="span12">
			<div class="page-header">
				<h1>
					<small><span>编辑留言</span>v1.0</small>
				</h1>
			</div>
			<div class="hero-unit">
				<h1>
					Hello, world!
				</h1>
				<p>
					这是一个可视化布局模板, 你可以点击模板里的文字进行修改, 也可以通过点击弹出的编辑框进行富文本修改. 拖动区块能实现排序.
				</p>
			</div>
			
			<form action="index.php" method="post">
				<fieldset>
					 <legend>发布留言</legend> 
					 <label>用户名</label><input class="form-control" type="text" name="username" required value="<?php echo $edarr['username']?>"/> 
					 <label>标题</label><input class="form-control" type="text" name="title" required value="<?php echo $edarr['title']?>"/>
					 <label>内容</label><textarea name="content" rows="6" cols="4" required value=""><?php echo $edarr['content']?></textarea>
					 <label></label><button type="submit" name="pubmsg" class="btn">编辑完成</button>
					 <a href="index.php"><button type="submit"  class="btn">查看留言</button></a>
				</fieldset>
				<input type="hidden" name="edkey" id="" value="<?php echo $edkey ?>" />
			</form>
		</div>
	</div>
</div>
</body>
</html>
<?PHP
header("Content-type:text/html;charset=utf-8;");
date_default_timezone_set("PRC");
$filename="msg.txt";
$msgs=[];
//检测文件是否存在;
if(file_exists($filename)){
	$string=file_get_contents($filename);//如果存在就读取这个文件内容 并且赋值给string
	if(strlen($string)>0){
		$msgs=unserialize($string);//如果有内容就把反序列化一下
	}
}	


if(isset($_POST["sub"])){
	
	$username=$_POST["username"];
	$title=strip_tags($_POST["title"]);//strip_tags()去除用户填写 html和php标记 注入
	$content=strip_tags($_POST["content"]);
	$time=time();
	
	//将以上的post过来的数据组成关联数组;
	$data=compact("username","title","content","time");
	
	//把关联数组数据插入$msgs
	array_push($msgs,$data);
	
	//在把序列化一下,变成字符串 用于存储
	$msgs=serialize($msgs);
	
	//像filename 中写入 内容
	if(file_put_contents($filename,$msgs)){
		
		echo "<script>alert('留言成功');location.href='index.php'</script>";
	}else{
		echo "<script>alert('留言失败');location.href='index.php'</script>";
	}
	
}


if(isset($_POST["pubmsg"])){
	
	$username=$_POST["username"];
	$title=strip_tags($_POST["title"]);//strip_tags()去除用户填写 html和php标记 注入
	$content=strip_tags($_POST["content"]);
	$time=time();
	
	//将以上的post过来的数据组成关联数组;
	$data=compact("username","title","content","time");
	
	//把关联数组数据插入$msgs
	//array_push($msgs,$data);
	
	//替换数组的
	//array_replace($msgs,$data);
	
	
	//在把序列化一下,变成字符串 用于存储
	$msgs=serialize($msgs);
	

	
	//像filename 中写入 内容
	if(file_put_contents($filename,$msgs)){
		
		echo "<script>alert('编辑成功');location.href='index.php'</script>";
	}else{
		echo "<script>alert('编辑失败');location.href='index.php'</script>";
	}
	
}


	
?>	



<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://www.francescomalagrino.com/BootstrapPageGenerator/3/js/jquery-2.0.0.min.js"></script>
<script type="text/javascript" src="http://www.francescomalagrino.com/BootstrapPageGenerator/3/js/jquery-ui"></script>
<link href="http://www.francescomalagrino.com/BootstrapPageGenerator/3/css/bootstrap-combined.min.css" rel="stylesheet" media="screen">
<script type="text/javascript" src="http://www.francescomalagrino.com/BootstrapPageGenerator/3/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
	<div class="row-fluid">
		<div class="span12">
			<div class="page-header">
				<h1>
					<small><span>留言板-</span>v1.0</small>
				</h1>
			</div>
			<div class="hero-unit">
				<h1>
					Hello, world!
				</h1>
				<p>
					这是一个可视化布局模板, 你可以点击模板里的文字进行修改, 也可以通过点击弹出的编辑框进行富文本修改. 拖动区块能实现排序.
				</p>
			</div>
			<?php if(is_array($msgs)&&count($msgs)>0):  ?>
			<table class="table">
				<thead>
					<tr>
						<th>
							编号
						</th>
						<th>
							用户
						</th>
						<th>
							标题
						</th>
						<th>
							时间
						</th>
						<th>
							内容
						</th>
						<th>
							操作
						</th>
					</tr>
				</thead>
				<tbody>

					<?php $i=1; foreach($msgs as $key=>$val): ?>
						
						
						<tr class="success">
							<td>
								<?php echo $i++; ?>
							</td>
							<td>
								<?php echo $val["username"]; ?>
							</td>
							<td>
								<?php echo $val["title"]; ?>
							</td>
							<td>
							<?php echo @ date("Y/m/d H:i:s",$val["time"]); ?>
							</td>
							<td>
								<?php echo $val["content"]; ?>
							</td>
							<td>
								<a href="edit.php?edkey=<?php echo $key ?>">编辑</a> |
								<a href="delete.php?delekey=<?php echo $key ?>">删除</a> 
							</td>
					    </tr>
						
					<?php endforeach; ?>
	
				</tbody>
			</table>
			<?php endif; ?>
			<form action="#" method="post">
				<fieldset>
					 <legend>请留言</legend> 
					 <label>用户名</label><input type="text" name="username" required/> 
					 <label>标题</label><input type="text" name="title" required/>
					 <label>内容</label><textarea name="content" rows="" cols="" required></textarea>
					 <label></label><button type="submit" name="sub" class="btn">提交</button>
				</fieldset>
			</form>
		</div>
	</div>
</div>
</body>
</html>





正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕查理 2017-09-27 18:41:53

您好,删除留言时,先获取需要删除留言的唯一标识,匹配数组中的内容,可使用unset进行删除。祝学习愉快!

好帮手慕查理 2017-09-27 18:38:29

您好,edit.php写不写都可以。

http://img1.sycdn.imooc.com/climg//59cb7dba00015e3a04490175.jpg(这张图片为您添加的留言)

http://img1.sycdn.imooc.com/climg//59cb7dde00013ed103320110.jpg(这张图片为您获取到的用户更改后编辑留言的内容)

当您获取到编辑留言的内容后,您可直接将原本数组的内容更改为您获取到的内容。

而您更改时需要使用唯一标识来查找您想要更改的是哪个内容,例如您更改的是下标0的内容,您可使用$msgs[0]=$data更改($msgs就好比第一张图片中的内容,$data就好比第二张中的内容)。

编辑留言的内容并非是新添加留言,需要找到唯一标识来判断需要更新的内容,因此在编辑时一定要返回唯一标识。

如果解决了您的问题,请采纳,祝学习愉快!

  • 提问者 小朱1 #1
    $msgs[0]=$data 这个我明白了 ,但是$msgs[0] 这个数组的键 总不能就写0 如何是对应的 ,是get获取的值么
    2017-09-27 20:33:11
  • imooc_澈 回复 提问者 小朱1 #2
    是的,在index页面foreach循环展示的时候使用$key=>$val获取,数据的下标就是$key,在编辑和删除的跳转链接中使用get方式把它传到跳转页面中即可。 <a href="edit.php?edkey=<?php echo $key ?>">编辑</a> 您贴出的代码就是正确的,在相应的页面使用$_GET[参数名]就能接收到了。
    2017-09-28 10:07:24
好帮手慕查理 2017-09-27 10:28:01

您好,您的代码逻辑错误。当您跳转到编辑页面后,用户会进行内容上的更改,当用户点击提交按钮之后,是要获取到用户更改后的内容的。将更改后的内容获取到,在写入数组中。而您的代码中没有获取用户更改后内容的操作,因此写入数组的还是原有的内容,因此您的编辑步骤既没有报错,但也没有成功。祝学习愉快!

  • 提问者 小朱1 #1
    也获取了啊 在index.php 主要 post 方式name值是pubmsg过来的数据啊 ,是不是我这些代码要写要edit.php 这个文件
    2017-09-27 18:18:59
  • 提问者 小朱1 #2
    还有请问下 删除数组 是什么思路 用那个删除数组的函数?
    2017-09-27 18:21:47
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师