因为不打算使用数据库,所以使用了json进行数据存储
有很多基础的东西需要注意
逻辑是html通过ajax提交数据给php,php收到新数据后打开服务器的sql.json文件,json文件内容为
[{"name":1,"where":1},{"name":3,"where":3}]
php读取整个json文件后在最后的]位置写入新获取到的数据,这里用到了php中fwrite函数,首先php打开json文件
$file = 'sql.json';
$fp1 = @fopen($file,'rb+');
注意是要用rb+模式,进行读写
使用fseek($fp1, 0, SEEK_END);
移动到最后一位
获取当前位置,存进变量$zishu
$zishu=ftell($fp1);
移动位置到倒数第二位
fseek($fp1,$zishu-1);
现在就移动到了
[{"name":1,"where":1},{"name":3,"where":3}]
中的]位置
然后使用fwrite写进新的内容就可以了。
fwrite是分段谢json格式的
注意字母类型的数据需要加” “号
{“name”:“z”,“where”:“z”}
fwrite($fp1,',{"name":"');//把123替换文件前三个字节
fwrite($fp1,$user);//把123替换文件前三个字节
fwrite($fp1,'","where":"');//把123替换文件前三个字节
fwrite($fp1,$where);//把123替换文件前三个字节
fwrite($fp1,'"}]');//把123替换文件前三个字节
fclose($fp1);
{“name”:3,“where”:3}
下面是参考文章
PHP file() 函数
ajax发送json到php,使用ajax将JSON发送到PHP
json标准格式举例_json几个小例子
PHP基础与Ajax网络请求教程_尚学堂PHP零基础入门到精通_学好AJA
PHP fseek 文件系统函数
PHP fseek( )实例讲解
php fseek函数,php fseek函数怎么用
PHP fgets() 函数
php怎么删除txt里指定行
php怎么删除txt里指定行
php如何删除文本文件内容
PHP 写入文件
几个小例子
<?php
$file = fopen("1.txt","rb+");
// 输出当前位置
echo ftell($file);
echo "。。。";
//输出读取一行内容(这里只有一行)
echo fgets($file);
echo "。。。";
// 改变当前位置
#fseek($file,"12");
//改变到最后位置
fseek($file, 0, SEEK_END);
echo "。。。";
// 再次输出当前位置
echo ftell($file);
//将当前位置保存到变量
$zishu=ftell($file);
//移动光标到最后一位减一的地
fseek($file,$zishu-1);
fwrite($file,"r");
?>
小李子
<?php
$file = 'sql.json';
$fp1 = @fopen($file,'rb+');//r+指针在文件头部,改成a表示文件指针在文件末尾
echo ftell($fp1);
echo "。。。";
//输出读取一行内容(这里只有一行)
echo fgets($fp1);
echo "。。。";
// 改变当前位置
//改变到最后位置
fseek($fp1, 0, SEEK_END);
echo "。。。";
//再次输出当前位置
echo ftell($fp1);
//将当前位置保存到变量
$zishu=ftell($fp1);
//移动光标到最后一位减一的地
fseek($fp1,$zishu-1);
fwrite($fp1,',{"name":');//把123替换文件前三个字节
fwrite($fp1,"ff");//把123替换文件前三个字节
fwrite($fp1,',"where":');//把123替换文件前三个字节
fwrite($fp1,"kl");//把123替换文件前三个字节
fwrite($fp1,'}]');//把123替换文件前三个字节
fclose($fp1);
echo $user,$where;
?>
1.txt
[{"name":3,"where":3},{"name":3,"where":3},{"name":3,"where":3},{"name":44,"where":4},{"name":1,"where":1},{"name":1,"where":1}]
下面是完整代码
html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<title>ServletJson</title>
</script>
<style>
body {
background-color:#a9e3ee;
}
</style>
<head runat="server">
<title></title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$.ajax({
url: "sql.json",//同文件夹下的json文件路径
type: "GET",//请求方式为get
dataType: "json", //返回数据格式为json
success: function (data) {//请求成功完成后要执行的方法
//data.push(cc);
console.log(data);
}
})
var sz=[];
function zs(){
var na=$("#name").val();
var wh=$("#where").val();
sz.push({name:na,where:wh});
$.ajax({
url: "sql.json",//同文件夹下的json文件路径
type: "GET",//请求方式为get
dataType: "json", //返回数据格式为json
success: function (data) {//请求成功完成后要执行的方法
//data.push(cc);
sz.push(data);
console.log(sz);
}
})
}
function tj(){
var na=$("#name").val();
var wh=$("#where").val();
var dataString = JSON.stringify(sz);
console.log(dataString);
$.ajax({
type: "post", //get or post 个人感觉post安全很多
url: "c.php", // 目的url
dataType: "json", //数据类型 可以有很多种
//data: {s:dataString}, //传输的数据 在验证文件接受
data:{name:na,where:wh},
success: function(res){ //请求成功后的回调函数
console.log(res);
}
});
}
</script>
</head>
<body>
<form method="post" action="">
<div>物品名称
<input type="text" id="name" name="name" />
放在哪里
<input type="text" id="where" >
<input type="submit" id="button" value="form" />
</div>
</form>
<button type="button" onclick="tj()">ajax</button>
<button type="button" onclick="zs()">zs</button>
</body>
</html>
下面是php
<?php
#header('Content-type:text/json;charset=utf-8');
#file_put_contents('sql.json', "cc")
#$c=array();
$user = $_POST['name'];
$where =$_POST['where'];
$file = 'sql.json';
$fp1 = @fopen($file,'rb+');//r+指针在文件头部,改成a表示文件指针在文件末尾
echo ftell($fp1);
echo "。。。";
//输出读取一行内容(这里只有一行)
echo fgets($fp1);
echo "。。。";
// 改变当前位置
//改变到最后位置
fseek($fp1, 0, SEEK_END);
echo "。。。";
//再次输出当前位置
echo ftell($fp1);
//将当前位置保存到变量
$zishu=ftell($fp1);
//移动光标到最后一位减一的地
fseek($fp1,$zishu-1);
fwrite($fp1,',{"name":');//把123替换文件前三个字节
fwrite($fp1,$user);//把123替换文件前三个字节
fwrite($fp1,',"where":');//把123替换文件前三个字节
fwrite($fp1,$where);//把123替换文件前三个字节
fwrite($fp1,'}]');//把123替换文件前三个字节
fclose($fp1);
echo $user,$where;
?>
原文地址:https://blog.csdn.net/weixin_40938312/article/details/127561420
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_51021.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!