您的位置:首页 > 编程语言 > PHP开发

PHP新闻发布系统

2018-01-02 02:06 295 查看

PHP新闻发布系统

好消息:我已经把这个挂到了我的服务器上,链接:https://www.s1124yy.top/news

大致如图,若有建议和问题,可联系QQ:1124652741





由于期末作业,所以需要写这个东西,简单为主。

推荐一个mysql图形化工具:adminer 下载地址:https://pan.baidu.com/s/1dE7TFNV

1.mysqli与php

视频:http://www.php.cn/code/20545

连接数据库

<?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_i
4000
d'].'<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
);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php