1-6留言板,请看下代码留言标题怎么没有显示,编辑部分怎么不能保存留言?谢谢

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回答

您好,1.添加留言页面中input框的name值为titile,首页中接收post数据时使用的是title,所以没有接收到标题。将名称与POST接收数据时的名称改为一致。

http://img1.sycdn.imooc.com//climg/5c89ed3b0001262104660112.jpg

2.编辑留言的逻辑代码写在编辑页面中,是不需要跳转首页的。编辑页面中action写为:action=""即可。

http://img1.sycdn.imooc.com//climg/5c89ee050001566e03730046.jpg

3.编辑页面中更改指定留言时,应该是更改的留言内容content,注意$editmsgs数组的下标名称。

http://img1.sycdn.imooc.com//climg/5c89eec90001fd4104150209.jpg

4.编辑页面中序列化时应该是操作的$msgs数组,将其写入数据库。而不是操作需要修改的指定留言,将其写入数据库中。

http://img1.sycdn.imooc.com//climg/5c89effd00016ad903150054.jpg

5.编辑页面中$filename变量并不存在,未定义。应该指定写入数据的文件名称。

http://img1.sycdn.imooc.com//climg/5c89f0130001cd1904180053.jpg

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>

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
PHP小白零基础入门
  • 参与学习           人
  • 提交作业       626    份
  • 解答问题       4930    个

想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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