PHP新闻发布系统

PHP新闻发布系统

源码已上传至百度网盘,链接: https://pan.baidu.com/s/1TBh3XW5kHMGaYQ4XHnv_Mw 密码: k5d6
大致如图,若有建议和问题,可联系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_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
);

猜你喜欢

转载自blog.csdn.net/s1124yy/article/details/78948460