• php+mysql


    本文整理一下使用php和mysql向前端推送数据的过程。

    数据库部分:

    1.首先安装服务器,我选择xampp,安装可以选择任意地址。安装完成,打开xampp-control.exe 。

    选择开启Apache和MySQL:

    2.浏览器进去http://localhost/phpmyadmin/。

    这个时候就可以看到数据库页面。新建一个数据库。

    3.新建一个数据表,假设我们需要的数据有n个字段,字段数就选择n+1,多出的一个字段用来存放id。

    4.新建完成后设置表的内容时,id记得勾选A_I,这样新建的表项id值会自动增加。如果是字符串类型的数据,排序规则选择utf8_general_ci,这样前端也使用utf8编码,不会出现乱码。

    5.新建表完成以后,SQL页面可以看到如何使用命令行操作表格,后面我们在代码中对表格的操作也会利用这些命令行。

    代码部分:

    1.从数据库读取数据并显示在页面上,我们用jquery的ajax读取:

    js代码:
    
    var $lists = $("article ul");
        $lists.empty();
    
        $.ajax({
            url: "server/getnews.php",
            type: "get",/*ajax get方法读取数据*/
            datatype: "json",/*json方式获取*/
            data:{"newstype":newsType},/*传递一个条件,当newstype项的值为newsType时*/
            success: function(data) {
                $.each(data, function(index,item) {/*将data逐条遍历*/
                    console.log(item);
                    /*将数据内容放置到页面上*/
                    var $lists = $("article ul");
                    var $list = $("<li></li>").addClass("news-list").prependTo($lists);
                    var $newsImg = $("<div></div>").addClass("news-img").appendTo($list);
                    console.log(item.newstype);
                    var $img = $("<img>").attr("src", item.newsimg).appendTo($newsImg);
                    var $newsContent = $("<div></div>").addClass("news-content").appendTo($list);
                    var $h1 = $("<h1></h1>").html(item.newstitle).appendTo($newsContent);
                    var $p = $("<p></p>").appendTo($newsContent);
                    var $newsTime = $("<span></span>").addClass("news-time").html(item.newstime).appendTo($p);
                    var $newsSrc = $("<span></span>").addClass("news-src").html(item.newssrc).appendTo($p);
                });
    
            },
            error: function(){
                console.log('error');
            }
        });

    下面看一下getnews.php怎么实现:

    <?php
        header("Content-type:application/json;charset=utf-8");
        $link = mysql_connect('localhost','name','pwd');/*连接数据库,后两个参数是数据库的用户名密码*/
        
        if($link){
            mysql_select_db("testabc");/*连接数据库*/
            mysql_query("SET NAMES utf8");
            $newstype=$_GET["newstype"];/*获取参数newstype*/
    
            if($newstype == "all"){    
                $sql = "SELECT * FROM news";    /*传递命令行,表示获取全部的表项*/                
            }else{            
                $sql = "SELECT * FROM `news` WHERE `newstype` = '{$newstype}'";    /*传递命令行,表示获取所有newstype等于传递的参数的表项*/
            }
    
            $result = mysql_query($sql,$link);
        
            $senddata = array();
    
            while($row = mysql_fetch_assoc($result)){
                array_push($senddata,array(
                        'id'=>$row['id'],
                        'newstype'=>$row['newstype'],
                        'newsimg'=>$row['newsimg'],
                        'newstime'=>$row['newstime'],
                        'newssrc'=>$row['newssrc'],
                        'newstitle'=>$row['newstitle']
                    ));
            }
            echo json_encode($senddata);        
        }
    
        mysql_close($link);
        
    ?>

    2.向数据库写入数据:

    js代码:
    //添加一条数据
        $("#btnsubmit").click(function(e) {
            e.preventDefault();
            //提交添加
            var jsonNews = {
                "newstitle": $("#newsTitle").val(),/*从页面读取到的值*/
                "newstype": $("#newsType").val(),
                "newsimg": $("#newsImg").val(),
                "newstime": $("#newsTime").val(),
                "newssrc": $("#newsSrc").val()
            }
            $.ajax({
                url:"server/insert.php",
                type:"post",/*ajax post方法提交*/
                data:jsonNews,
                datatype:"json",
                success:function(data){
                    console.log(data);
                },
                error:function(XHR,textStatus,errorThrown){
                    console.log(textStatus+"ready:"+XHR.readyState);
                }
            })
            
        });

    php代码:

    因为我们需要很多次调用php代码连接数据库,以后需要改动库名或者用户名等会很不方便,所以我们把连接数据库的操作单独提到一个文件中,比如命名为db.php:

    //db.php
    
    <?php
        header("Content-type:application/json;charset=utf-8");
        //error_reporting(0);
        $link = mysql_connect('localhost','name','pwd');
        if(!$link){
            echo json_encode(array('linkmsg'=>'false'));
        }else{
            mysql_select_db("testabc");
            mysql_query("SET NAMES utf8");
        }
    ?>

    然后在其他php文件中直接调用这个文件:

    //insert.php
    
    <?php
        header("Content-type:application/json;charset=utf-8");
        require_once('db.php');
    
        if($link){
            //插入新闻
            $newstitle = addslashes(htmlspecialchars($_POST["newstitle"]));
            $newstype = $_POST["newstype"];
            $newsimg = $_POST["newsimg"];
            $newstime = $_POST["newstime"];
            $newssrc = $_POST["newssrc"];
    
            $sql = "INSERT INTO `news` (`newstitle`,`newstype`,`newsimg`,`newstime`,`newssrc`) VALUES ('{$newstitle}','{$newstype}','{$newsimg}','{$newstime}','{$newssrc}')";
            $result = mysql_query($sql,$link); 
    
            echo json_encode(array("success"=>"ok"));
        }
    
        mysql_close($link);
    ?>

    3.删除一条数据:

    //js代码删除一条数据
        var deleteId = null;
        $newsTbody.on("click",".btn-danger",function(e){
            $("#deleteModal").modal("show");/*模态框提示是否确认删除*/
            deleteId = $(this).parent().prevAll().eq(4).html();/*获取需要删除的数据的id*/
            console.log(deleteId);
        })
        $("#deleteModal #confirmDelete").click(function(e){
            if(deleteId){
                $.ajax({
                    url: "server/delete.php",
                    type: "post",/*post方法提交请求*/
                    data:{"newsid":deleteId},
                    success:function(data){
                        console.log("delete success");
                        $("#deleteModal").modal("hide");
                        refreshNews();
                    }
                })
            }
        });

    对应的php:

    //delete.php
    <?php
        header("Content-type:application/json;charset=utf-8");
        require_once('db.php');
        
        if($link){
            $newsid = $_POST["newsid"];/*获取id*/
            
            $sql = "DELETE FROM `news` WHERE `news`.`id`={$newsid}";/*组装删除命令*/
            $result = mysql_query($sql,$link);
    
            echo json_encode(array("delete"=>"success"));
        }
    
        mysql_close($link);
    ?>

    4.修改一条数据:

    //js代码修改新闻
        var updateId = null;
        $newsTbody.on("click",".btn-primary",function(e){
            $("#updateModal").modal("show");/*弹出模态框来给用户修改*/
            updateId = $(this).parent().prevAll().eq(4).html();/*获取修改的数据id*/
            
            $.ajax({
                    url: "server/curnews.php",
                    type: "get",/*get方法获取本条数据显示在模态框*/
                    datatype:"json",
                    data:{"newsid":updateId},
                    success:function(data){
                        $("#unewsTitle").val(data[0].newstitle);
                        $("#unewsType").val(data[0].newstype);
                        $("#unewsImg").val(data[0].newsimg);
                        $("#unewsSrc").val(data[0].newssrc);
                        var utime = data[0].newstime.split(' ')[0];
                        $("#unewsTime").val(utime);                 
                    }
                    
                })
        })
        $("#updateModal #confirmUpdate").click(function(e){
            $.ajax({
                url: "server/update.php",
                type: "post",/*post方法将修改后的数据传回php*/
                data:{
                    "newstitle":$("#unewsTitle").val(),
                    "newstype":$("#unewsType").val(),
                    "newsimg":$("#unewsImg").val(),
                    "newstime":$("#unewsTime").val(),
                    "newssrc":$("#unewsSrc").val(),
                    "id":updateId
                },
                success:function(data){
                    $("#updateModal").modal("hide");
                    refreshNews();              
                }
                
            })
            
        });
    //curnews.php
    
    <?php
        header("Content-type:application/json;charset=utf-8");
        require_once('db.php');
    
        if($link){
            $newsid = $_GET["newsid"];
            //$newsid = 2;
            $sql = "SELECT * FROM `news` WHERE `id`={$newsid}";
            
            $result = mysql_query($sql,$link);
            
            $senddata = array();
    
            while($row = mysql_fetch_assoc($result)){
                array_push($senddata,array(
                        'id'=>$row['id'],
                        'newstype'=>$row['newstype'],
                        'newsimg'=>$row['newsimg'],
                        'newstime'=>$row['newstime'],
                        'newssrc'=>$row['newssrc'],
                        'newstitle'=>htmlspecialchars_decode($row['newstitle'])
                    ));
            }
            echo json_encode($senddata);
    
        }
    
        mysql_close($link);
    ?>
    
    //update.php
    
    <?php
        header("Content-type:application/json;charset=utf-8");
        error_reporting(0);
        require_once('db.php');
    
        if($link){
            //插入新闻
            $newstitle = addslashes(htmlspecialchars($_POST["newstitle"]));
            $newstype = $_POST["newstype"];
            $newsimg = $_POST["newsimg"];
            $newstime = $_POST["newstime"];
            $newssrc = $_POST["newssrc"];
            $newsid = $_POST['id'];
    
            $sql = "UPDATE `news` SET `newstitle`='{$newstitle}',`newstype`='{$newstype}',`newsimg`='{$newsimg}',`newstime`='{$newstime}',`newssrc`='{$newssrc}' WHERE `id`={$newsid}";
    
            $result = mysql_query($sql,$link); 
    
            echo json_encode(array("success"=>"ok"));
        }
        mysql_close($link);
    ?>

    以上就是php+mysql数据库的增删查改方案。

    附几张页面参考,利用bootstrap完成:

    增加:

    删除:

    修改:

     

     endding~

  • 相关阅读:
    第十二周学习进度条
    课堂练习四
    搜狗输入法
    第十一周学习进度条
    《代码大全(第二版)》阅读笔记01
    典型用户及用户场景描述
    第十周学习进度条
    团队冲刺第六天
    团队冲刺第五天
    团队冲刺第四天
  • 原文地址:https://www.cnblogs.com/weirihan/p/6137741.html
Copyright © 2020-2023  润新知