帝国CMS判断会员是否登录及登录后才能看到内容的方法,帝国CMS下在PHP文件中调用数据库类执行SQL语句实例
分类:微服架构

帝国ECMS实现AJAX无刷新加入购物车的方法主要步骤如下:

例1:连接MYSQL数据库例子。(a.php)

本文实例讲述了帝国CMS判断会员是否登录及登录后才能看到内容的方法。分享给大家供大家参考。具体实现方法如下:

帝国cms相关链接,这里以帝国cms 7.0为例具体代码 在/e/class/functions.php

一、修改商城内容模板,头部加入如下代码:

复制代码

适用版本6.6

$keyboardtext='=GetKeyboard($ecms_gr[keyboard],$ecms_gr[keyid],$ecms_gr[classid],$ecms_gr[id],$class_r[$ecms_gr[classid]][link_num])?>';可以看到相关链接的信息是通过GetKeyboard得到,找到 GetKeyboard修改一下就可以了,也是在/e/class/functions.php  

代码如下:

代码如下:

效果是:会员登录后才能看到手机号码,未登录时显示“登录后可见”

复制代码代码如下:
//取得相关链接
function GetKeyboard($keyboard,$keyid,$classid,$id,$link_num){
global $empire,$public_r,$class_r,$fun_r,$dbtbpre;
if($keyid&&$link_num)
{
$add="id in (".$keyid.")";
$tr=$empire->fetch1("select otherlinktemp,otherlinktempsub,otherlinktempdate from ".GetTemptb("enewspubtemp")." limit 1");//取得相关链接模板
$temp_r=explode("[!--empirenews.listtemp--]",$tr[otherlinktemp]);
$key_sql=$empire->query("select id,newstime,title,isurl,titleurl,classid,titlepic,lastvolume from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where ".$add." order by newstime desc limit $link_num");
while($link_r=$empire->fetch($key_sql))
{
//=========================================================2012-12-25 4usky.com
$text=RepOtherTemp($temp_r[1],$link_r,$tr);
$text=str_replace('[!--no--]',$i,$text);
$text=str_replace('[!--state--]',$link_r[state],$text);
$text=str_replace('[!--lastvolume--]',$link_r[lastvolume],$text);
$keyboardtext.=$text;
//$keyboardtext.=RepOtherTemp($temp_r[1],$link_r,$tr);
}

<script type="text/javascript" src="[!--news.url--]skin/default/js/jquery.js"></script>
<script type="text/javascript" src="[!--news.url--]skin/default/js/addBuyCar.js"></script>
<script type="text/javascript">
   var newsurl='<?=$public_r[newsurl]?>';
</script>

<?php
require('e/class/connect.php');        //引入数据库配置文件和公共函数文件
require('e/class/db_sql.php');        //引入数据库操作文件
$link=db_connect();                //连接MYSQL
$empire=new mysqlquery();        //声明数据库操作类</p> <p>db_close();                        //关闭MYSQL链接
$empire=null;                        //注消操作类变量
?>

1、新建show.php文件,放到e目录里下面;

$keyboardtext=$temp_r[0].$keyboardtext.$temp_r[2];
}
else
{
//-------------生成的时候加载一次keyid zhuxianfei.com 2013/5/17 星期五
$keyid=GetKeyid($keyboard,$classid,0,$link_num);
if($keyid)
{
$fsql=$empire->query("update {$dbtbpre}ecms_".$class_r[$classid][tbname]."_data_1 set keyid='$keyid' where id='$id'");
$add="id in (".$keyid.")";
$tr=$empire->fetch1("select otherlinktemp,otherlinktempsub,otherlinktempdate from ".GetTemptb("enewspubtemp")." limit 1");//取得相关链接模板
$temp_r=explode("[!--empirenews.listtemp--]",$tr[otherlinktemp]);
$key_sql=$empire->query("select id,newstime,title,isurl,titleurl,classid,titlepic,lastvolume from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where ".$add." order by newstime desc limit $link_num");
while($link_r=$empire->fetch($key_sql))
{
//=========================================================2012-12-25 4usky.com
$text=RepOtherTemp($temp_r[1],$link_r,$tr);
$text=str_replace('[!--no--]',$i,$text);
$text=str_replace('[!--state--]',$link_r[state],$text);
$text=str_replace('[!--lastvolume--]',$link_r[lastvolume],$text);
$keyboardtext.=$text;
//$keyboardtext.=RepOtherTemp($temp_r[1],$link_r,$tr);
}

 
 
二、修改商城内容模板,加入购物车部分修改成如下代码:

例2:更新数据例子。(b.php)

2、show.php内容以下:

$keyboardtext=$temp_r[0].$keyboardtext.$temp_r[2];
}
else //没有关键字的时候读取人气最高的几条信息 2013/5/17 星期五 zhuxianfei.com
{
$add="";
$tr=$empire->fetch1("select otherlinktemp,otherlinktempsub,otherlinktempdate from ".GetTemptb("enewspubtemp")." limit 1");//取得相关链接模板
$temp_r=explode("[!--empirenews.listtemp--]",$tr[otherlinktemp]);
$key_sql=$empire->query("select id,newstime,title,isurl,titleurl,classid,titlepic,lastvolume from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where order by onclick desc limit $link_num");
while($link_r=$empire->fetch($key_sql))
{
//=========================================================2012-12-25 4usky.com
$text=RepOtherTemp($temp_r[1],$link_r,$tr);
$text=str_replace('[!--no--]',$i,$text);
$text=str_replace('[!--state--]',$link_r[state],$text);
$text=str_replace('[!--lastvolume--]',$link_r[lastvolume],$text);
$keyboardtext.=$text;
//$keyboardtext.=RepOtherTemp($temp_r[1],$link_r,$tr);
}

代码如下:

复制代码

复制代码代码如下:require("class/connect.php");
include("class/db_sql.php");
include("class/config.php");
include("data/dbcache/class.php");
$link=db_connect();
$empire=new mysqlquery();
$classid=intval($_GET['classid']);
$id=intval($_GET['id']);
$muserid=(int)getcvar('mluserid');//用户id
$musername=RepPostVar(getcvar('mlusername'));//用户名
$mgroupid=(int)getcvar('mlgroupid');//会员组id
if($classid&&$id&&$class_r[$classid][tbname]&&$muserid)
{
$r=$empire->fetch1("select id,phone from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where id='$id' and classid='$classid' limit 1");
if($r[id])
{
?>
document.write('

$keyboardtext=$temp_r[0].$keyboardtext.$temp_r[2];
}
//----------------------------------------------------------------------------------------------
//$keyboardtext=$fun_r['NotLinkNews'];
}
return $keyboardtext;
}

<a href="#ecms" onclick="AddProduct([!--classid--],[!--id--]);">加入购物车</a>

代码如下:

手机:=$r[phone]?>

原来的官方代码

 
 
三、至于jquery文件,兼容1.3和1.4版本,自行下载。文件addBuyCar.js源代码如下:

<?php
require('e/class/connect.php');        //引入数据库配置文件和公共函数文件
require('e/class/db_sql.php');        //引入数据库操作文件
$link=db_connect();                //连接MYSQL
$empire=new mysqlquery();        //声明数据库操作类</p> <p>$empire->query("update {$dbtbpre}ecms_news set onclick=onclick+1");        //给新闻表的点击数加1</p> <p>db_close();                        //关闭MYSQL链接
$empire=null;                        //注消操作类变量
?>

');

在没有关键字的时候直接就给出

代码如下:

例3:查询MYSQL数据的例子。(c.php)

}
}
else
{
?>
document.write('

$keyboardtext=$fun_r['NotLinkNews'];
这显示无相关信息

function AddProduct(classid,id) {
   $.ajax({
       type: "post",
       url: newsurl+"e/template/ShopSys/addBuyCar.php",
       data:"classid="+classid+"&id="+id,
       dataType: "json",
       success: function (json) {
           alert(json.msg);
       }
   })
}

复制代码

手机:登录后可见

我做了一个无keyid的时候再去获取一次keyid,

四、加入处理程序e/template/ShopSys/addBuyCar.php,其源代码如下:

代码如下:

');

$keyid=GetKeyid($keyboard,$classid,0,$link_num);
确实没有关键字的时候读取人气最高的几条信息

代码如下:

<?php
require('e/class/connect.php');        //引入数据库配置文件和公共函数文件
require('e/class/db_sql.php');        //引入数据库操作文件
$link=db_connect();                //连接MYSQL
$empire=new mysqlquery();        //声明数据库操作类</p> <p>$sql=$empire->query("select * from {$dbtbpre}ecms_news order by newstime limit 10");        //查询新闻表最新10条记录
while($r=$empire->fetch($sql))        //循环获取查询记录
{
       echo"标题:".$r['title']."
";
}</p> <p>db_close();                        //关闭MYSQL链接
$empire=null;                        //注消操作类变量
?>

}
db_close();
$empire=null;
?>
3、内容模板显示调用:

$key_sql=$empire->query("select id,newstime,title,isurl,titleurl,classid,titlepic,lastvolume from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where  order by onclick desc limit $link_num");

<?php
require("../../class/connect.php");
require("../../class/db_sql.php");
require("../../data/dbcache/class.php");
require("../../class/ShopSysFun.php");
$link=db_connect();
$empire=new mysqlquery();</p> <p>//$_POST
$classid=(int)$_POST['classid'];
$id=(int)$_POST['id'];</p> <p>//add function
function json_AddBuycar($classid,$id){
   global $class_r,$empire,$dbtbpre,$public_r;
   $classid=(int)$classid;
   $id=(int)$id;
   if(empty($classid)||empty($id)||empty($class_r[$classid][tbname]))
   {
       return json_encode(array('msgid'=>1,'msg'=>'此商品不存在'));
   }
   //验证产品是否存在
   $num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where classid='$classid' and id='$id' limit 1");
   if(!$num)
   {
       return json_encode(array('msgid'=>1,'msg'=>'此商品不存在'));
   }
   $record="!";
   $field="|";
   $productid=$classid.",".$id;
   $buycar=getcvar('mybuycar');
   //重复
   if(strstr($buycar,"|".$productid."|"))
   {
       $pr=explode("|".$productid."|",$buycar);
       $pr1=explode("!",$pr[1]);
       $oldbuycar="|".$productid."|".$pr1[0]."!";
       //数量
       $pr1[0]=ReturnBuycarProductNum($pr1[0]);
       if(empty($pr1[0]))
       {
           $pr1[0]=1;
       }
       $newnum=$pr1[0]+1;
       $newbuycar="|".$productid."|".$newnum."!";
       $buycar=str_replace($oldbuycar,$newbuycar,$buycar);
   }
   else
   {
       //只存放一个
       if($public_r['buycarnum']==1)
       {
           $buycar='';
       }
       $buycar.="|".$productid."|1!";
   }
   $re=SetBuycar($buycar);
   if($re)
   {
       return json_encode(array('msgid'=>2,'msg'=>'商品加入购物车成功'));
   }
}
echo json_AddBuycar($classid,$id);
db_close();
$empire=null;
?>

/e/class/db_sql.php文件中数据库操作类常用的函数说明:

复制代码代码如下:

至此,问题搞定!

1、执行SQL函数:

4、上面的sql语句只是查询phone,其他字段自行修改(注:phone有两处地方的,如果修改要同时进行)

复制代码

5、若是多字段,请参考:

代码如下:

希望本文所述对大家的帝国CMS建站有所帮助。

$empire->query("SQL语句");
$empire->query1("SQL语句");

说明:
执行成功返回true,执行不成功返回false ;
两者区别是:query()出错直接中断程序执行,query1()出错不中断程序执行。

使用范例:

复制代码

代码如下:

$sql=$empire->query("select * from {$dbtbpre}ecms_news");

2、循环读取数据库记录函数:

复制代码

代码如下:

$empire->fetch($sql)

说明:

$sql为query执行SQL返回的结果。

使用范例:

复制代码

代码如下:

$sql=$empire->query("select * from {$dbtbpre}ecms_news");
while($r=$empire->fetch($sql))
{
       echo"标题:".$r['title']."
";
}

3、读取单条数据库记录函数:(不循环)

复制代码

代码如下:

$empire->fetch1("SQL语句")

使用范例:

复制代码

代码如下:

$r=$empire->fetch1("select * from {$dbtbpre}ecms_news where id=1");
echo"标题:".$r['title'];

4、统计SQL查询记录数函数:

复制代码

代码如下:

$empire->num("SQL语句")
$empire->num1($sql)

说明:

两者的区别是:num()直接写SQL语句,而num1()中的$sql为query执行SQL返回的结果。

使用范例:

复制代码

代码如下:

$num=$empire->num("select id from {$dbtbpre}ecms_news");
echo"新闻表共有 ".$num." 条新闻";

5、统计SQL查询记录数函数2:(相对于num更高效的函数)

复制代码

代码如下:

$empire->gettotal("统计SQL语句");

说明:
gettotal()和num()的区别是:gettotal()采用SQL本身的count(*)函数来统计,而num()是采用PHP本身的函数,gettotal()更高效一些。
gettotal()里的统计数一定要as total,如:“count(*) as total”。

使用范例:

复制代码

代码如下:

$num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_news");
echo"新闻表共有 ".$num." 条新闻";

6、取得刚插入表的自增ID值函数:

复制代码

代码如下:

$empire->lastid()

使用范例:

复制代码

代码如下:

$empire->query("insert into {$dbtbpre}ecms_news(title) values('标题')");
$lastid=$empire->lastid();
echo"刚插入的信息ID为:".$lastid;

7、移动SQL查询结果记录指针:

复制代码

代码如下:

$empire->seek($sql,$pit)

说明:
$sql为query执行SQL返回的结果,$pit为指针的偏移数。

使用范例:

复制代码

代码如下:

$sql=$empire->query("select * from {$dbtbpre}ecms_news");
$empire->seek($sql,2);

8、释放SQL查询结果函数:(一般不需要使用)

复制代码

代码如下:

$empire->free($sql)

说明:
$sql为query执行SQL返回的结果。

使用范例:

复制代码

代码如下:

$sql=$empire->query("select * from {$dbtbpre}ecms_news");
$empire->free($sql);

导航查询例子:

复制代码

代码如下:

<DIV class=news_dh style="color:#000000"></p> <p><!--主栏目导航,此模板中直接指定为classid=69,即法律法规栏目-->
[e:loop={"select classid,classname,classpath from [!db.pre!]enewsclass where classid='69' and  showclass=0  order by myorder ",0,24,0}]
<span><a href="<?=$public_r[newsurl]?><?=$bqr[classpath]?>" ><?=$bqr[classname]?></a></span>   <SPAN><IMG
src="[!--news.url--]skin/tx/zixun/images/index_line_nav.gif"></SPAN>
[/e:loop]</p> <p> </p> <p><!--子栏目导航-->
[e:loop={"select classid,classname,classpath from [!db.pre!]enewsclass where bclassid='69' and  showclass=0  order by myorder ",0,24,0}]
<?
$lanmuclass= "lanmu";
//echo $bqr[classid] ;
//echo "cur:".$GLOBALS[navclassid];
if ( $bqr[classid]==$GLOBALS[navclassid]) {
//echo "-";
$lanmuclass ="curlanmu";
}
?></p> <p><span class="<?=$lanmuclass?>"><a href="<?=$public_r[newsurl]?><?=$bqr[classpath]?>" ><?=$bqr[classname]?></a></span>   <SPAN><IMG
src="[!--news.url--]skin/tx/zixun/images/index_line_nav.gif"></SPAN></p> <p>[/e:loop]</p> <p>
<!--新闻导航结束-->
</DIV>

本文由10bet手机官网发布于微服架构,转载请注明出处:帝国CMS判断会员是否登录及登录后才能看到内容的方法,帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

上一篇:php上传大文件,帝国CMS单次只能上传20个文件问题的解决方法 下一篇:没有了
猜你喜欢
热门排行
精彩图文