作者: admin

  • 解决:Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in

    mysql_connect这个模块将在未来弃用即将过时,请你使用mysqli或者PDO来替代。

    这里推荐使用mysqli模块吧

     

    连接数据库:

    $link = mysqli_connect('ip地址', 'mysql帐号', 'mysql密码', '选择数据库');

     

    php执行mysql

    mysqli_query($link, 'CREATE TEMPORARY TABLE `table`');

     

    http://www.ttlsa.com/php/deprecated-mysql-connect/

  • ubuntu环境变量的修改

    在 Ubuntu 系统中有两种设置环境变量 PATH 的方法。

    第一种适用于为单一用户设置 PATH,

    第二种是为全局设置 PATH。

    跟windows的类似例如:

    pathwin

    本人喜欢修改全局的方法,因为电脑就我一个人在用

     

     

    系统ubuntu 16.04

    修改全局:

    sudo gedit /etc/environment

    在PATH=”….”的末尾处添加:
    :/opt/EmbedSky/4.3.3/bin
    其中/opt/EmbedSky/4.3.3/bin为你自己需要设置的环境变量路径。

     

    立即生效

    source /etc/environment

     

     

    修改用户局部:

    编辑:

    sudo gedit ~/.bashrc

    在文件末尾加上:

    export PATH=/opt/EmbedSky/4.3.3/bin:$PATH
    //  其中/opt/EmbedSky/4.3.3/bin为你自己需要设置的环境变量路径。
     使其立即生效,在终端执行:
    source ~/.bashrc

     

    http://jingyan.baidu.com/article/db55b609a3f6274ba30a2fb8.html

  • node.js分页

    express分页功能,之前也写过类似的php分页功能《php简单分页

    这里也做了一下node.js分页,写法都不一样,但思路基本都相同,这里总结归来一下不过运用哪里语言都通用。

    效果如图:

    node_page

     

    教程都以上图效果为准。

    1,“首页”功能简单,“上一页”功能在获取当前页码的时减去1就行,“下一页”功能在获取当前页基础上加1。

    2,“尾页”,总共数据条数  除以  一页要显示的条数 就得到了一共多少页。得出的结果有余数,要向整数加1。

    3,“跳转到某页”功能利用js的window.location.href功能即可。

    4,页码的显示和省略号显示:

    node_page0

    (1)初始化状态要判断数据数否满足了5页,如果有那么就用5后面的省略号,如果正好是5页或者小于5页则没有。

    (2)点击大于3的页码时才开始判断,以下的判断都要以当前的页码为基准来判断。

    node_page2

    当点击5时,判断什么情况下会出现左边省略号和又边省略号如: (当前页-3)>0 && 当前页+2<总页码

     

    node_page3

    接着判断只显示左省略号的出现,当前页+2==last_page

    这时候如果点了7或者8页时就会出错, 这时候应该判断:总页码-2<当前页 && 当前页<=总页码

     

    ———————————————————————————————-

    下面贴出基于 jade+mongodb写的分页

    前台逻辑:

    div#page
    a(href="/") 首页
    if current_page==1
    a(href="/1") 上一页
    else
    a(href="/#{current_page-1}") 上一页
    if last_page<=5
    - for (var i = 1; i <= 5; i++)
            a(href="#{i}") #{i}
    else
          if current_page<=3
    - for (var i = 1; i <= 5; i++)
            a(href="#{i}") #{i}
    span ...
    if current_page>3
    if (current_page-3)>0 && current_page+2<last_page
    span ...
    - for (var i = current_page-2; i <= current_page+2; i++)
                 a(href="#{i}") #{i}
    span ...
    if current_page+2==last_page
    span ...
    - for (var i = current_page-2; i <= current_page+2; i++)
                 a(href="#{i}") #{i}
    if last_page-2<current_page && current_page<=last_page
    span ...
    - for (var i = last_page-2; i <= last_page; i++)
                     a(href="#{i}") #{i}
    if current_page==last_page
    a(href="/#{last_page}") 下一页
    else
    a(href="/#{current_page+1}") 下一页
    a(href="/#{last_page}") 尾页
    span #{last_page}| ----跳转到第
    input(type="text" value="")#page_num
    | button#up_page 确定
    | <br>

     

     

    跳转到某页功能:

    $('#up_page').click(function () {
    
        if( #{last_page}<$('#page_num').val() ){
    window.location.href='/'+#{last_page};
        }
        if( $('#page_num').val()<=0 )
        {
    window.location.href='/1';
        }else{
          window.location.href='/'+$('#page_num').val();
        }
    
    });

     

    后台逻辑:

    //首页内容
    router.get('/', function(req, res, next) {
    
    
        MongoClient.connect(DB_CONN_STR, function(err1, db) {
            if(err1){
                console.log('连接数据库失败');
            }else{
    
    
                db.collection('post').find().toArray(function (err1,result1) {
                    if(err1){
                        console.log('插入数据失败');
                    }else{
    
    
                        if(parseFloat(req.params.page_num)<=0){
                            req.params.page_num=1;
                            var num=parseFloat(req.params.page_num);
                            console.log('执行了-------------------');
                        }
    
                        if(parseFloat(req.params.page_num)>=Math.ceil(((result1).length)/5)){
                            req.params.page_num=Math.ceil(((result1).length)/5);
                            var num=parseFloat(req.params.page_num);
                        }
                        else{
                            var num=parseFloat(req.params.page_num);
    
                        }
    
    
                            db.collection('post').find({} ,{skip:0,limit:5, sort: [['_id',1]]}).toArray(function (err2,result2) {
                                if(err2){
                                    console.log('插入数据失败');
                                }else{
                                    res.render('index', {
                                        title: '首页',
                                        result:result2,
                                        current_page:parseFloat(req.params.p)?parseFloat(req.params.p):1,
                                        page_total:result1.length,
                                        last_page:Math.ceil((result1.length)/5)
                                    });
                                }
                            });
    
                    }
                });
    
            }
        });
    
    });
    
    
    
    
    
    
    
    
    //首页内容
    router.get('/:p', function(req, res, next) {
       // var num=parseFloat(req.params.p);
    MongoClient.connect(DB_CONN_STR, function(err1, db) {
            if(err1){
                console.log('连接数据库失败');
            }else{
    
    
                db.collection('post').find().toArray(function (err1,result1) {
                    if(err1){
                        console.log('插入数据失败');
                    }else{
    
                                if(parseFloat(req.params.p)<=0){
                                    req.params.p=1;
                                    var num=parseFloat(req.params.p);
                                    console.log('执行了-------------------');
                                }
    
                                if(parseFloat(req.params.p)>=Math.ceil(((result1).length)/5)){
                                    req.params.p=Math.ceil(((result1).length)/5);
                                    var num=parseFloat(req.params.p);
                                }
                                else{
                                    var num=parseFloat(req.params.p);
    
                                }
    
                                db.collection('post').find({} ,{skip:(num-1)*5,limit:5, sort: [['_id',1]]}).toArray(function (err2,result) {
                                    if(err2){
                                        console.log('插入数据失败');
                                    }else{
    
                                        res.render('index', {
                                            title: '首页',
                                            result:result,
                                            current_page:parseFloat(req.params.p)?parseFloat(req.params.p):1,  //获取到当前页码
    page_total:result.length,     //总条数据
    last_page:Math.ceil(((result1).length)/5)
                                        });
    
                                    }
                                });
    
                    }
                });
    
            }
        });
    
    });

     

    数据库结构情况

    node_page4

     

     

     

  • node.js为express添加富文本编辑器——ueditor

    先大概预览下我目录结构

    ueditor1

     

    1,首先下载ueditor模块

    npm install ueditor --save

     

    2,先下载PHP版本的ueditor:http://ueditor.baidu.com/website/download.html

    在public目录下创建一个名字为ueditor的文件夹,将下载下来的ueditor包解压后把里面的所有文件都复制粘贴到ueditor文件夹中。

    编辑文件ueditor.config.js,将里面的内容修改为如下:

    serverUrl: URL + "ue"

     

    3,后台编辑

    //app.js
    注意添加的模块和修改的地方
    
    var bodyParser = require('body-parser')  //express默认应该会加载,若没有手动添加
    var ueditor = require("ueditor")         //重点加载
    app.use(bodyParser.urlencoded({
     extended: true       //默认是false,现在改为true
    }))
    app.use(bodyParser.json());  //express默认应该是加载的
    
    
    
    app.use("/ueditor/ue", ueditor(path.join(__dirname, 'public'), function(req, res, next) {
     // ueditor 客户发起上传图片请求
     if(req.query.action === 'uploadimage'){
     var foo = req.ueditor;
    
     var imgname = req.ueditor.filename;
    
     var img_url = '/images/ueditor/';
     res.ue_up(img_url); //你只要输入要保存的地址 。保存操作交给ueditor来做
     }
     // 客户端发起图片列表请求
     else if (req.query.action === 'listimage'){
     var dir_url = '/images/ueditor/';
     res.ue_list(dir_url); // 客户端会列出 dir_url 目录下的所有图片
     }
     // 客户端发起其它请求
     else {
    
     res.setHeader('Content-Type', 'application/json');
     res.redirect('/ueditor/php/config.json')  //这里的路径要加载对否则就不能上传图片。如果你下载的是JSP那就对应jsp目录
    }}));
    
    
    

     

    4,客户端编辑

    在你需要显示编辑器的页面加载

    //添加这3个文件
    script(src="./ueditor/ueditor.config.js")
    script(src="./ueditor/ueditor.all.min.js")
    script(src="./ueditor/lang/zh-cn/zh-cn.js")
    
    
    //在需要插入编辑器的位置,加入
    textarea(value="" name="con_text" style="width:500px;min-height:420px;display:none")
    script(id="editor" type="text/plain" style="width:1024px;height:500px;")
    script.
     var ue = UE.getEditor('editor');
    
    
    
    
    //页面最底部添加,这些都是编辑器提供的方法
    $('#context').click(function(){
     $.ajax({
       type: 'post',
       url: 'admin_index',
       data:{con_text:getContent()}  //利用getContent()获取到的内容,传给name="con_text",提交到数据库里
     });
     return false;
    });
    
    function isFocus(e){
     alert(UE.getEditor('editor').isFocus());
     UE.dom.domUtils.preventDefault(e)
     }
     function setblur(e){
     UE.getEditor('editor').blur();
     UE.dom.domUtils.preventDefault(e)
     }
     function insertHtml() {
     var value = prompt('插入html代码', '');
     UE.getEditor('editor').execCommand('insertHtml', value)
     }
     function createEditor() {
     enableBtn();
     UE.getEditor('editor');
     }
     function getAllHtml() {
     alert(UE.getEditor('editor').getAllHtml())
     }
     function getContent() { //其中这个能获取内容包括HTML标签
     var arr = [];
     // arr.push("使用editor.getContent()方法可以获得编辑器的内容");
     // arr.push("内容为:");
     arr.push(UE.getEditor('editor').getContent());
     // alert(arr.join("\n"));
     return arr;
     }
     function getPlainTxt() {
     var arr = [];
     arr.push("使用editor.getPlainTxt()方法可以获得编辑器的带格式的纯文本内容");
     arr.push("内容为:");
     arr.push(UE.getEditor('editor').getPlainTxt());
     alert(arr.join('\n'))
     }
     function setContent(isAppendTo) {
     var arr = [];
     arr.push("使用editor.setContent('欢迎使用ueditor')方法可以设置编辑器的内容");
     UE.getEditor('editor').setContent('欢迎使用ueditor', isAppendTo);
     alert(arr.join("\n"));
     }
     function setDisabled() {
     UE.getEditor('editor').setDisabled('fullscreen');
     disableBtn("enable");
     }
    
     function setEnabled() {
     UE.getEditor('editor').setEnabled();
     enableBtn();
     }
    
     function getText() {
     //当你点击按钮时编辑区域已经失去了焦点,如果直接用getText将不会得到内容,所以要在选回来,然后取得内容
     var range = UE.getEditor('editor').selection.getRange();
     range.select();
     var txt = UE.getEditor('editor').selection.getText();
     alert(txt)
     }
    
     function getContentTxt() {
     var arr = [];
     // arr.push("使用editor.getContentTxt()方法可以获得编辑器的纯文本内容");
     // arr.push("编辑器的纯文本内容为:");
     arr.push(UE.getEditor('editor').getContentTxt());
     return arr;
     }
     function hasContent() {
     var arr = [];
     arr.push("使用editor.hasContents()方法判断编辑器里是否有内容");
     arr.push("判断结果为:");
     arr.push(UE.getEditor('editor').hasContents());
     alert(arr.join("\n"));
     }
     function setFocus() {
     UE.getEditor('editor').focus();
     }
     function deleteEditor() {
     disableBtn();
     UE.getEditor('editor').destroy();
     }
     function disableBtn(str) {
     var div = document.getElementById('btns');
     var btns = UE.dom.domUtils.getElementsByTagName(div, "button");
     for (var i = 0, btn; btn = btns[i++];) {
     if (btn.id == str) {
     UE.dom.domUtils.removeAttributes(btn, ["disabled"]);
     } else {
     btn.setAttribute("disabled", "true");
     }
     }
     }
     function enableBtn() {
     var div = document.getElementById('btns');
     var btns = UE.dom.domUtils.getElementsByTagName(div, "button");
     for (var i = 0, btn; btn = btns[i++];) {
     UE.dom.domUtils.removeAttributes(btn, ["disabled"]);
     }
     }
    
     function getLocalData () {
     alert(UE.getEditor('editor').execCommand( "getlocaldata" ));
     }
    
     function clearLocalData () {
     UE.getEditor('editor').execCommand( "clearlocaldata" );
     alert("已清空草稿箱")
     }