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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<?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下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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