m0_52748368 2021-06-17 09:39 采纳率: 100%
浏览 75
已采纳

💰求一个PHP新闻发布系统网页

能过增加删除内容,能导入数据库,有正常登录的登录页面以及页码以及其他基础小功能,

  • 写回答

1条回答 默认 最新

  • 小P聊技术 2021-06-17 09:44
    关注

    PHP新闻发布系统:

    源码已上传至百度网盘,链接: https://pan.baidu.com/s/1TBh3XW5kHMGaYQ4XHnv_Mw 密码: k5d6

    这里写图片描述
    这里写图片描述

    推荐一个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
    );
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效