文章列表项目(php增删查改功能接口)

因为刚学习php,所以对php并熟悉,很多地方其实可以优化或者可以把所有接口封装成一个接口调用,这个项目本意是学习通过php写增删改查接口,实现功能,前端页面只简单写了布局,所以请原谅前端页面只能将就的显示数据而已,文章底部附项目的下载地址。进入正题吧

1、创建本地服务器存放项目

本地服务器是我通过PHPstudy集成环境创建的。
在这里插入图片描述

2、创建项目的数据库

数据库是我通过Navicat Premium 12快速创建的,数据库命名为articles,然后再创建一张表article。需要添加6个字段,分别是id(id作为主键需要自增长),title,auther,description,content,dateline保存各项数据
在这里插入图片描述

3、连接数据库创建增删查改4个接口

  1. 创建config.php文件,配置数据库信息
<?php
	$servername = "localhost";
	$username = "root";
	$password = "123456";
?>
  1. 创建connnect.php文件,用于连接数据库
<?php
require_once('config.php');


$dbname = "articles";
//连接数据库
$con = new mysqli($servername, $username, $password, $dbname);
if($con->connect_error){
	die('连接失败');
}
?>

3.接下来分别写增删改查4个接口,创建articleList.php文件,用于获取文章列表数据

<?php

//连接数据库
$action = $_GET['action'];
if($action == 'getList'){
require_once('connect.php');

$getInfoSql = "SELECT * FROM  article order by id ASC";
$result = $con->query($getInfoSql);

if($result->num_rows > 0){
	while($row = $result->fetch_assoc()) {
		$data[] = $row;
    }

    $json = json_encode(array(
            "resultCode"=>200,
            "message"=>"查询成功!",
            "data"=>$data
        ),JSON_UNESCAPED_UNICODE);
        
        //转换成字符串JSON
        echo($json);
}else{
     $json = json_encode(array(
            "resultCode"=>200,
            "message"=>"暂无数据",
            "data"=>''
        ),JSON_UNESCAPED_UNICODE);
        
        //转换成字符串JSON
        echo($json);
}

}

?>
  1. 创建addArticle.php,增加文章的时候调取该接口
<?php



$action = $_POST['action'];
if($action == 'add'){
	//连接数据库
	require_once('connect.php');

	// //获取前端的数据
	$title = $_POST['title'];
	$auther = $_POST['authod'];
	$description = $_POST['description'];
	$content = $_POST['content'];
	//获取当前的时间
	$dateTime = date('Y-m-d h:i:s',time());

	

	// 把数据写入数据库
	$addSql = "INSERT  INTO  article(title,auther,description,content,dateline) VALUES  ('$title','$auther','$description','$content','$dateTime')";
	if ($con->query($addSql) === TRUE) {
	     $json = json_encode(array(
            "resultCode"=>200,
            "message"=>"添加成功!",
            "data"=>[]
        ),JSON_UNESCAPED_UNICODE);
        echo  $json;
	} else {
	    echo "Error: " . $addSql . "<br>" . mysqli_error($con);
	}


	
    }
?>
  1. 创建fix.php,用来修改文章时候调取
<?php

$action = $_POST['action'];
if($action == 'fixInfo'){
	//连接数据库
	require_once('connect.php');

	// //获取前端的数据
	$itemID = $_POST['id'];
	$title = $_POST['title'];
	$authod = $_POST['authod'];
	$description = $_POST['description'];
	$content = $_POST['content'];
	
	
	
	
	$update = "UPDATE article SET title='$title',auther='$authod',description='$description',content='$content' WHERE id=$itemID ";

	

	$result = $con->query($update);

	if ($con->query($update) === TRUE) {
     
	} else {
	    echo "Error: " . $update . "<br>" . mysqli_error($con);
	}

	$json = json_encode(array(
            "resultCode"=>200,
            "message"=>"更新成功!",
            "data"=>[]
        ),JSON_UNESCAPED_UNICODE);
        
        //转换成字符串JSON
        echo($json);
    }
?>
  1. 创建delete.php,删除文章接口
<?php
$action = $_POST['action'];
if($action == 'deleteItem'){
	//连接数据库
	require_once('connect.php');

	// //获取前端的数据
	$itemID = $_POST['id'];

	
	
	
	// 把数据写入数据库
	$deleteSql = "DELETE FROM article WHERE id = $itemID";
	

	if ($con->query($deleteSql) === TRUE) {
	     $json = json_encode(array(
            "resultCode"=>200,
            "message"=>"删除成功!",
            "data"=>[]
        ),JSON_UNESCAPED_UNICODE);
        echo  $json;
	} else {
	    echo "Error: " . $deleteSql . "<br>" . mysqli_error($con);
	}

    }
?>
  1. 创建check.php,查看文章接口
<?php
$action = $_POST['action'];
if($action == 'check'){
	//连接数据库
	require_once('connect.php');

	// //获取前端的数据
	$itemID = $_POST['id'];
	
	
	
	// 把数据写入数据库
	$checkSql = "SELECT * FROM article WHERE id=$itemID";

	$result = $con->query($checkSql);

	// print_r($result);

	if($result->num_rows){
		$data[] = $result->fetch_assoc();
	};
	


	$json = json_encode(array(
            "resultCode"=>200,
            "message"=>"查询成功!",
            "data"=>$data
        ),JSON_UNESCAPED_UNICODE);
        
        //转换成字符串JSON
        echo($json);
    }
?>

4、创建前端页面,分别是列表页面,增加文章页面,查看文章页面,修改文章页面

  1. 创建前端列表页面,引入jq,使用ajax调取接口数据显示在前端页面,一进入页面就直接调取文章列表接口获取文章列表信息
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>文章列表</title>
	</head>
	<script src="js/jquery-1.12.4.js"></script>
	<body>
		<button id='addBtn' style='width: 80px;height: 30px;margin: 10px' >增加文章</button>
		<table id="tableBox" border='1'  width="800">
		</table>
	</body>
	<script type="text/javascript">
		$(function(){
			getList();
			function getList(){
					$.ajax({
					type: "get",
					url:'articleList.php',
					data:{
						action:'getList'
					},
					dataType:'JSON',
					success:(data)=>{
						let tableInfo = data.data;
						$('#tableBox').html('');
						$('#tableBox').html('<tr><th>id</td><th>标题</td><th>作者</td><th>描述</td><th>内容</td><th>时间</td><th>操作</td></tr>');
						tableInfo.forEach((item,index)=>{
							let info = `<tr><td>${item.id}</td><td>${item.title}</td><td>${item.auther}</td><td>${item.description}</td><td>${item.content}</td><td>${item.dateline}</td><td><button id='checkBtn'  myIndex='${index}'>查看</button>  <button  id='delete' myIndex='${index}'>删除</button>  <button id="fixBtn"  myIndex='${index}'>修改</button> </td></tr>`
							$('#tableBox').append(info);

						})
					},
					error:(e)=>{
						console.log(e);
					}
				})
			}

			//删除按钮
			$(document).on("click","#delete",function () {
       			let index = Number($(this).attr('myIndex'))+1;
       			let id = $(`tr:eq(${index})`)[0].children[0].innerText
       			deleteData(id);
    		});
    		//增加按钮
    		$(document).on('click','#addBtn',function(){
    			window.location.href = 'addArticle.html';
    		});
    		//查看按钮
    		$(document).on('click','#checkBtn',function(){
    			let index = Number($(this).attr('myIndex'))+1;
       			let id = $(`tr:eq(${index})`)[0].children[0].innerText
    			window.location.href = `checkArticle.html?id=${id}`;
    		});
    		//修改按钮
    		$(document).on('click','#fixBtn',function(){
    			let index = Number($(this).attr('myIndex'))+1;
       			let id = $(`tr:eq(${index})`)[0].children[0].innerText
    			window.location.href = `fixArticle.html?id=${id}`;
    		});


			function deleteData(itemId){
				$.ajax({
					type:'post',
					url:'delete.php',
					data:{
						action:'deleteItem',
						id:itemId
					},
					dataType:'JSON',
					success:(data)=>{
						getList();
						alert('删除成功');
					},
					error:(e)=>{
						alert('删除失败');
					}
				})
			}
	
		})
	</script>
</html>

  1. 修改页面
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>文章修改</title>
	</head>
	<script src="js/jquery-1.12.4.js"></script>
	<style type="text/css">
		.box{
			text-align: center;
		}
	</style>
	<body>
			<table border="1">
			<tr>
				<td align="center" colspan='2' height='50'>修改文章</td>
			</tr>
			

			<tr>
				<td align="center">标题:</td>
				<td ><input type="text" name="title"></td>
			</tr>


			<tr>
				<td align="center">作者:</td>
				<td ><input type="text" name="authod" ></td>
			</tr>

			<tr>
				<td align="center">简介:</td>
				<td ><textarea cols="100" rows="10" name="description" id="description" ></textarea></td>
			</tr>


			<tr>
				<td align="center">内容:</td>
				<td ><textarea cols="100" rows="10" name="content" id="content" ></textarea></td>
			</tr>

			<tr>
				<td><input id="btn" type="submit" name="submit" value="修改" align="center"></td>
			</tr>
			</table>
	</body>
	<script type="text/javascript">
		$(function(){
			function getUrlParam(name) {
		        // 用该属性获取页面 URL 地址从问号 (?) 开始的 URL(查询部分)
		        var url = window.location.search;
		        // 正则筛选地址栏
		        var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
		        // 匹配目标参数
		        var result = url.substr(1).match(reg);
		        //返回参数值
		        return result ? decodeURIComponent(result[2]) : null;
    		}
    		let articleId = getUrlParam("id");
    		

			$.ajax({
				type:'post',
				url:'check.php',
				data:{
					action:'check',
					id:articleId
				},
				dataType:'JSON',
				success:(data)=>{
					let articleData = data.data[0];
					$("input[ name = 'title']").val(articleData.title);
					$("input[ name = 'authod']").val(articleData.auther);
					$(" textarea[ name='description' ] ").val(articleData.description);
					$(" textarea[ name='content' ] ").val(articleData.content);
				},
				error:(e)=>{
					console.log(e);
				}
			});


			$(document).on('click','#btn',()=>{
				let title = $("input[ name = 'title']").val();
				let authod = $("input[ name = 'authod']").val();
				let description = $("textarea[ name = 'description']").val();
				let content = $("textarea[ name = 'content']").val();
				fixData(articleId,title,authod,description,content);
			})

			function fixData(id,title,authod,description,content){
				$.ajax({
					type:'post',
					url:'fix.php',
					data:{
						action:'fixInfo',
						id:id,
						title:title,
						authod:authod,
						description:description,
						content:content,
					},
					dataType:'JSON',
					success:(data)=>{
						alert('更新成功');
						$(window).attr('location','articleList.html');
					},
					error:(e)=>{
						alert('失败');
					}
				})
			}
		});
	</script>
	
</html>

  1. 查看文章页面
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>文章查看</title>
	</head>
	<script src="js/jquery-1.12.4.js"></script>
	<style type="text/css">
		.box{
			text-align: center;
		}
	</style>
	<body>
		<div class='box'></div>
	</body>
	<script type="text/javascript">
		$(function(){
			function getUrlParam(name) {
		        // 用该属性获取页面 URL 地址从问号 (?) 开始的 URL(查询部分)
		        var url = window.location.search;
		        // 正则筛选地址栏
		        var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
		        // 匹配目标参数
		        var result = url.substr(1).match(reg);
		        //返回参数值
		        return result ? decodeURIComponent(result[2]) : null;
    		}
    		let articleId = getUrlParam("id");
    		

			$.ajax({
				type:'post',
				url:'check.php',
				data:{
					action:'check',
					id:articleId
				},
				dataType:'JSON',
				success:(data)=>{
					let articleData = data.data[0];
					let info = `<h2>标题:${articleData.title}</h1><h2>作者:${articleData.auther} </h2><h3>时间:${articleData.dateline}	</h3><h4>描述:${articleData.description}</h4><p>内容:${articleData.content}</p>`
					$('.box').append(info);
				},
				error:(e)=>{
					console.log(e);
				}
			})
		})
	</script>
	
</html>

  1. 增加文章页面
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>文章发布的界面</title>
	</head>
	<script src="js/jquery-1.12.4.js"></script>
	<body>
			<table border="1">
			<tr>
				<td align="center" colspan='2' height='50'>发布文章</td>
			</tr>
			

			<tr>
				<td align="center">标题:</td>
				<td ><input type="text" name="title"></td>
			</tr>


			<tr>
				<td align="center">作者:</td>
				<td ><input type="text" name="authod"></td>
			</tr>

			<tr>
				<td align="center">简介:</td>
				<td ><textarea cols="100" rows="10" name="description" id="description"></textarea></td>
			</tr>


			<tr>
				<td align="center">内容:</td>
				<td ><textarea cols="100" rows="10" name="content" id="content"></textarea></td>
			</tr>

			<tr>
				<td><input id="btn" type="submit" name="submit" value="提交文章" align="center"></td>
			</tr>
			</table>
	</body>
	<script type="text/javascript">
		$(function(){
			$('#btn').click(()=>{
				// alert($(" input[ name='title' ] ").val());
				let title = $(" input[ name='title' ] ").val();
				let authod = $(" input[ name='authod' ] ").val();
				let description = $(" textarea[ name='description' ] ").val();
				let content = $(" textarea[ name='content' ] ").val();
				$.ajax({
					type:'post',
					url:'addArticle.php',
					data:{
						action:'add',
						title:title,
						authod:authod,
						description:description,
						content:content,
					},
					dataType:'JSON',
					success:(data)=>{
						alert('添加文章成功');
						$(window).attr('location','articleList.html');
					},
					error:(e)=>{
						console.log(e);
					},
				})
			})
		})
	</script>
</html>

5、项目演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

6、项目已经上传github,可以直接下载下来

GitHub:https://github.com/xiaoyaoFreedom/Article

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值