1-6留言板,请看下代码留言标题怎么没有显示,编辑部分怎么不能保存留言?谢谢
<?php
date_default_timezone_set("PRC");
header('content_type:text/html;charset=utf-8');
//msg.txt是提交后的信息,是序列化后的
$filename="msg.txt";
$msgs=[];
//检测文件是否存在
if (file_exists($filename)){
//读取文件中的内容
$string=file_get_contents($filename);
if (strlen($string)>0){
$msgs=unserialize($string);
}
}
//检测用户是否点击了提交按钮
if (isset($_POST['pubMsg'])){
$username=$_POST['username'];
$title=strip_tags($_POST['title']);
$content=strip_tags($_POST['content']);
$time=time();
//将其组成关联数组
$data=compact('username','title','content','time');
array_push($msgs,$data);
$msgs=serialize($msgs);
//将数组写进$filename,如果成功回到第八行代码读取msg.txt文件内容赋值给数组,然后往下遍历出来;
if(file_put_contents($filename,$msgs)){
echo "<script>alert('留言成功!');location.href='liuyanban.php';</script>";
}else{
echo "<script>alert('留言失败!');location.href='liuyanban.php';</script>";
}
}
/*
$msgs=[
[...],
[...]
];
file_get_content($filename):得到文件中的内容,返回的是字符串
file_put_contents($filename,$data):向指定文件写内容;如果文件不存在会创建
serialize($str):序列化字符串
unserialize($str):反序列化字符串
*/
?>
<!DOCTYPE html>
<html>
<head>
<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>
IMOOC-v1.0
</h1>
</div>
<div class="hero-unit">
<h1>
Hello, world!
</h1>
<p>
这是一个可视化布局模板, 你可以点击模板里的文字进行修改, 也可以通过点击弹出的编辑框进行富文本修改. 拖动区块能实现排序.
</p>
<p>
<a rel="nofollow" class="btn btn-primary btn-large" href="#">参看更多 »</a>
</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=>$v):
?>
<tr class="success">
<td><?php echo $i++; ?></td>
<td><?php echo $v['username'];?></td>
<td><?php echo $v['title'];?></td>
<td><?php echo date('Y-m-d H:i:s',$v['time']);?></td>
<td><?php echo $v['content'];?></td>
<!-- get传参的格式是问号后面跟get传参名称和值,在edit.php中接收; -->
<td><a href="edit.php?id=<?php echo $key;?>" name="edit">编辑</a></td>
<td><a href="" >删除</a></td>
</tr>
<?php
endforeach;
?>
</tbody>
</table>
<?php
endif;
?>
<button><a href="add.php">我要留言</a></button>
</div>
</div>
</div>
</body>
</html>
-----------编辑
<?php
// 获取数组的键名
$editkey=$_GET['id'];
$string=file_get_contents('msg.txt');
$msgs=unserialize($string);
$editmsgs=$msgs[$editkey];
//判断是否点击保存留言按钮
if (isset($_POST['save-msgs'])) {
$editmsgs['username']=$_POST['username'];
$editmsgs['title']=$_POST['title'];
$editmsgs['constant']=$_POST['content'];
$editmsgs=serialize($editmsgs);
if (file_put_contents($filename, $editmsgs)) {
alert('编辑程功');
}else
alert('编辑失败');
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<p>发布</p>
<hr/>
<form action="liuyanban.php" method="post">
<table>
<tr>
<td><span>用户名</span></td>
<td><input type="text" name="username" value="<?php echo $editmsgs['username'];?>"></td>
</tr>
<tr>
<td><span>标题</span></td>
<td><input type="text" name="title" value="<?php echo $editmsgs['title']?>"></td>
</tr>
<tr>
<td><span>内容</span></td>
<td><textarea name="content" cols="30" rows="10" ><?php echo $editmsgs['content']?></textarea></td>
</tr>
<tr>
<td><input type="submit" value="保存留言" name="save-msgs"></td>
</tr>
</table>
</form>
</body>
</html>
-------------添加
<form action="liuyanban.php" method="post">
<fieldset>
<legend>请留言</legend>
<label>用户名</label>
<input type="text" name="username" required>
<hr/>
<label>标题</label>
<input type="text" name="titile" required>
<hr/>
<label>内容</label>
<textarea name="content" rows="10" cols="30" required style="resize: none"></textarea>
<hr>
<input type="submit" class="btn btn-primary btn-lg" value="发布留言" name="pubMsg">
<input type="submit" class="btn btn-primary btn-lg" value="查看留言" name="pubMsg">
</fieldset>
</form>
正在回答
您好,1.添加留言页面中input框的name值为titile,首页中接收post数据时使用的是title,所以没有接收到标题。将名称与POST接收数据时的名称改为一致。
2.编辑留言的逻辑代码写在编辑页面中,是不需要跳转首页的。编辑页面中action写为:action=""即可。
3.编辑页面中更改指定留言时,应该是更改的留言内容content,注意$editmsgs数组的下标名称。
4.编辑页面中序列化时应该是操作的$msgs数组,将其写入数据库。而不是操作需要修改的指定留言,将其写入数据库中。
5.编辑页面中$filename变量并不存在,未定义。应该指定写入数据的文件名称。
6.PHP编辑页面中不能直接使用alert。
编辑页面修改为:
<?php $filename="msg.txt"; $msgs=[]; //检测文件是否存在 if (file_exists($filename)){ //读取文件中的内容 $string=file_get_contents($filename); if (strlen($string)>0){ $msgs=unserialize($string); } } // 获取数组的键名 $editkey=$_GET['id']; $editmsgs=$msgs[$editkey]; //判断是否点击保存留言按钮 if (isset($_POST['save-msgs'])) { $editmsgs['username']=$_POST['username']; $editmsgs['title']=$_POST['title']; $editmsgs['content']=$_POST['content']; //将指定位置的数据修改为接收到的新数据。 $msgs[$editkey]=$editmsgs; //将所有数据序列化 $msgs=serialize($msgs); //重新写入文件 if (file_put_contents($filename, $msgs)) { echo "<script>alert('留言成功!');location.href='function.php';</script>"; }else{ echo "<script>alert('留言失败!');location.href='function.php';</script>"; } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <p>发布</p> <hr/> <form action="" method="post"> <table> <tr> <td><span>用户名</span></td> <td><input type="text" name="username" value="<?php echo $editmsgs['username'];?>"></td> </tr> <tr> <td><span>标题</span></td> <td><input type="text" name="title" value="<?php echo $editmsgs['title']?>"></td> </tr> <tr> <td><span>内容</span></td> <td><textarea name="content" cols="30" rows="10" ><?php echo $editmsgs['content']?></textarea></td> </tr> <tr> <td><input type="submit" value="保存留言" name="save-msgs"></td> </tr> </table> </form> </body> </html>
祝学习愉快!
- 参与学习 人
- 提交作业 626 份
- 解答问题 4930 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星