PHP新闻发布系统
源码已上传至百度网盘,链接: https://pan.baidu.com/s/1TBh3XW5kHMGaYQ4XHnv_Mw 密码: k5d6
大致如图,若有建议和问题,可联系QQ:1124652741。
推荐一个mysql图形化工具:adminer 下载地址:https://pan.baidu.com/s/1dE7TFNV
1.mysqli与php
连接数据库
<?php
header("Content-Type: text/html; charset=utf-8");
//1.
//$mysqli = new mysqli();
//$mysqli->connect('localhost','root','root2');
//$mysqli->select_db('news');
//2.
//$mysqli = new mysqli('localhost','root','root');
//$mysqli->select_db('news');
//3.
$mysqli = new mysqli('localhost','root','root','news');
//echo '<pre>';
//print_r($mysqli);
//echo '</pre>';
$mysqli->set_charset('utf8');
if($mysqli->connect_errno) {
die('<h2 style="color: red">连接错误</h2>'.$mysqli->connect_error);
}
//else {
// echo '<h2>连接成功</h2>';
//}
插入数据
<?php
require 'mysqli_connect.php';
$sql = "INSERT root(username,password) VALUES('wen','simiao')";
if($mysqli->query($sql)) {
echo '成功添加了'.$mysqli->affected_rows.'条记录,新增的主键id是:'.$mysqli->insert_id;
}
else {
echo '添加失败'.$mysqli->errno.': '.$mysqli->error;
}
//关闭连接
$mysqli->close();
更新数据
<?php
require 'mysqli_connect.php';
$sql = "UPDATE root SET username='ww',password='yy' WHERE id=235";
if($mysqli->query($sql)) {
echo '成功更新了'.$mysqli->affected_rows.'条记录';
}
else {
echo '更新失败'.$mysqli->errno.': '.$mysqli->error;
}
$mysqli->close();
删除数据
<?php
require 'mysqli_connect.php';
$sql = "DELETE FROM root WHERE id=235";
if($mysqli->query($sql)) {
echo '成功删除了'.$mysqli->affected_rows.'条记录';
}
else {
echo '删除失败'.$mysqli->errno.': '.$mysqli->error;
}
$mysqli->close();
查询操作
<?php
require 'mysqli_connect.php';
$sql = "SELECT goods_name,goods_price,goods_id FROM tdb_goods WHERE goods_price>3500";
//执行查询,返回结果集对象
$mysqli_reseult = $mysqli->query($sql);
//如果结果集存在并且有数据
if ($mysqli_reseult && $mysqli_reseult->num_rows) {
//查询第一条满足条件的记录,然后指针下移,返回的是一维数组
$row = $mysqli_reseult->fetch_array();
echo '货物: '.$row['goods_name'].' 价格: '.$row['goods_price'].' id: '.$row['goods_id'].'<br>';//查询第一条满足条件的记录,然后指针下移,返回的是一维数组
//对象
$row = $mysqli_reseult->fetch_object();
echo '货物: '.$row->goods_name.' 价格: '.$row->goods_price.' id: '.$row->goods_id.'<br>';
$row = $mysqli_reseult->fetch_array(MYSQL_BOTH); //MYSQL_ASSOC MYSQL_NUM
echo '<pre>';
print_r($row);
echo '</pre>';
//fetch_row() == MYSQL_NUM
//fetch_assoc() == MYSQL_ASSOC
echo '<hr color="red">';
//指针复位
$mysqli_reseult->data_seek(0);
echo '<h3 align="center">商品货物表</h3>';
echo '<table border="1" cellpadding="1" cellspacing="0" width="800" align="center">';
echo '<tr bgcolor="#87ceeb"><th>货物</th><th>价格</th><th>编号</th></tr>';
while($row = $mysqli_reseult->fetch_assoc()) {
echo '<tr>';
echo '<td>'.$row['goods_name'].'</td><td>'.$row['goods_price'].'</td><td>'.$row['goods_id'].'</td>';
echo '</tr>';
}
echo '</table>';
} else {
echo '么有你想要的东西';
}
$mysqli->close();
总感觉写这种代码舒服一些。
fetch_all()
<?php
require 'mysqli_connect.php';
$sql = "SELECT goods_name,goods_price,goods_id FROM tdb_goods WHERE goods_price>8000";
$mysqli_result = $mysqli->query($sql);
if ($mysqli_result && $mysqli_result->num_rows>0) {
$rows = $mysqli_result->fetch_all(MYSQLI_ASSOC);
echo '<pre>';
print_r($rows);//二维数组
echo '</pre>';
echo '<h3 align="center">商品货物表</h3>';
echo '<table border="1" cellpadding="1" cellspacing="0" width="800" align="center">';
echo '<tr bgcolor="#87ceeb"><th>货物</th><th>价格</th><th>编号</th></tr>';
foreach ($rows as $row) {
echo '<tr>';
echo '<td>'.$row['goods_name'].'</td><td>'.$row['goods_price'].'</td><td>'.$row['goods_id'].'</td>';
echo '</tr>';
}
echo '</table>';
} else {
echo '么有你想要的东西';
}
$mysqli->close();
2.登陆&退出(后台)
我们要实现一个按键调用php代码,最初我是写js函数,里面加php代码,但是调了好久,发现根本不能怎么写 = =。
正确方法是调用ajax,之后用ajax连到php。可以参考:http://www.runoob.com/php/php-ajax-php.html
我的功能比较简单,代码如下:
index.php
<!-- 检查是否登陆过-->
<?php
session_start();
if(!isset($_SESSION['uname'])) {
echo "<script>alert('您没有权限,请先登陆!');window.location.href=\"login.html\"</script>";
}
?>
<!-- 按键调用ajax 调用php-->
<script>
function Logout()
{
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行的代码
xmlhttp=new XMLHttpRequest();
}
else
{
//IE6, IE5 浏览器执行的代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","logout.php",true);
xmlhttp.send();
}
</script>
<!-- 退出登录按键调用ajax-->
<a class="button button-little bg-red" href="login.html" onclick="Logout()" ><span class="icon-power-off"></span> 退出登录</a>
logout.php(调试时,可以查看session文件是否消失)
<?php
session_start();
session_destroy();
3.连接数据库(后台)
解决php缓存问题
<!-- ajax刷新头像-->
<script>
$(function(){
$.ajax({
success: function(msg){
$("#flush_head").attr("src", "images/h1.jpg");
},
error:function(msg){
console.log(msg);
}
});
})
<!-- 通过给url+?1 可以刷新缓存-->
<iframe scrolling="auto" rameborder="0" src="page.html?1" name="right" width="100%" height="100%"></iframe>
创建news表
CREATE TABLE news (
news_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200) NOT NULL,
content TEXT NOT NULL,
cre_date DATETIME,
click INT DEFAULT 0,
category VARCHAR(200)
);
mysqli_connect.php
<?php
header("Content-Type: text/html; charset=utf-8");
$mysqli = new mysqli('localhost','root','root','news');
echo "<link rel=\"stylesheet\" href=\"css/bootstrap.min.css\">";
echo "<script src=\"js/jquery.js\"></script>";
echo "<script src=\"js/bootstrap.min.js\"></script>";
$mysqli->set_charset('utf8');
if($mysqli->connect_errno) {
die('<h2 style="color: red">连接错误</h2>'.$mysqli->connect_error);
}
page.php(插入发布新闻数据,显示结果用了bootStrap)
<?php
require 'mysqli_connect.php';
$title = $_POST['title'];
$content = $_POST['content'];
$category = $_POST['category'];
//echo '<pre>';
//print_r($title);
//echo '</pre>';
//
//echo '<hr>';
//
//echo '<pre>';
//print_r($category);
//echo '</pre>';
$sql = "INSERT news(title,content,cre_date,category) VALUES('{$title}','{$content}',NOW(),'{$category}')";
if($mysqli->query($sql)) {
$res1 = '成功添加了'.$mysqli->affected_rows.'条记录';
$res2 = '新增的主键id是:'.$mysqli->insert_id;
echo "<div class=\"container\">
<div class=\"jumbotron\">
<h1>{$res1}</h1>
<p>{$res2}</p>
</div>
</div>";
}
else {
echo '添加失败'.$mysqli->errno.': '.$mysqli->error;
}
//关闭连接
$mysqli->close();
4.注册,登陆(前台)
发现一个好漂亮的注册,登陆模版:http://www.mycodes.net/192/9784.htm
建表user
CREATE TABLE user(
user_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(30) NOT NULL,
password VARCHAR(30) NOT NULL,
email VARCHAR(30) NOT NULL
);
chrome关闭js缓存:
哇,这个是真的恶心,整了1天,最后发现我改的js,在域名访问根本就没变,才发现是缓存的问题,又在QQ问了老师Peter Zhu(网上教程的)才解决的,不得不说,老师好负责任,都不认识,还免费解答问题。
解决方法:chrome 中 按F12 之后点 NetWork 接着勾选 Disable cache,这样你改的js就可以实时显示在域名的网页上了。
register.php(注册,插入数据库)
<?php
require '..\admin\mysqli_connect.php';
header('Access-Control-Allow-Origin:*');
echo "<script> alert('success register'); </script>";
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$sql = "INSERT user(username,password,email) VALUES('{$username}','{$password}','{$email}')";
if($mysqli->query($sql)) {
$res1 = '成功添加了'.$mysqli->affected_rows.'条记录';
$res2 = '新增的主键id是:'.$mysqli->insert_id;
echo "<div class=\"container\">
<div class=\"jumbotron\">
<h2 style='color: #30ff09;'>{$res1}</h2>
<p>{$res2}</p>
<p><a href='login.html' class=\"btn btn-primary btn-lg\" role=\"button\">
转到登陆</a>
</p>
</div>
</div>";
}
else {
echo '添加失败'.$mysqli->errno.': '.$mysqli->error;
}
//关闭连接
$mysqli->close();
建表其他表
CREATE TABLE root(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(30) NOT NULL,
password VARCHAR(30) NOT NULL
);
CREATE TABLE comment(
cid INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
ctext TEXT NOT NULL,
ctime DATETIME NOT NULL,
cuser VARCHAR(30) NOT NULL,
nid INT UNSIGNED
);
CREATE TABLE recycle(
news_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
title TEXT NOT NULL,
content TEXT NOT NULL,
cre_time DATETIME NOT NULL,
category VARCHAR(30) NOT NULL,
click INT UNSIGNED
);