mysql_connect这个模块将在未来弃用即将过时,请你使用mysqli或者PDO来替代。
这里推荐使用mysqli模块吧
连接数据库:
$link = mysqli_connect('ip地址', 'mysql帐号', 'mysql密码', '选择数据库');
php执行mysql
mysqli_query($link, 'CREATE TEMPORARY TABLE `table`');
mysql_connect这个模块将在未来弃用即将过时,请你使用mysqli或者PDO来替代。
这里推荐使用mysqli模块吧
连接数据库:
$link = mysqli_connect('ip地址', 'mysql帐号', 'mysql密码', '选择数据库');
php执行mysql
mysqli_query($link, 'CREATE TEMPORARY TABLE `table`');
在 Ubuntu 系统中有两种设置环境变量 PATH 的方法。
第一种适用于为单一用户设置 PATH,
第二种是为全局设置 PATH。
跟windows的类似例如:

本人喜欢修改全局的方法,因为电脑就我一个人在用
系统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
express分页功能,之前也写过类似的php分页功能《php简单分页》
这里也做了一下node.js分页,写法都不一样,但思路基本都相同,这里总结归来一下不过运用哪里语言都通用。
效果如图:
教程都以上图效果为准。
1,“首页”功能简单,“上一页”功能在获取当前页码的时减去1就行,“下一页”功能在获取当前页基础上加1。
2,“尾页”,总共数据条数 除以 一页要显示的条数 就得到了一共多少页。得出的结果有余数,要向整数加1。
3,“跳转到某页”功能利用js的window.location.href功能即可。
4,页码的显示和省略号显示:
(1)初始化状态要判断数据数否满足了5页,如果有那么就用5后面的省略号,如果正好是5页或者小于5页则没有。
(2)点击大于3的页码时才开始判断,以下的判断都要以当前的页码为基准来判断。
当点击5时,判断什么情况下会出现左边省略号和又边省略号如: (当前页-3)>0 && 当前页+2<总页码
接着判断只显示左省略号的出现,当前页+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) }); } }); } }); } }); });
数据库结构情况
先大概预览下我目录结构
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("已清空草稿箱")
}