董川民 发布的文章

帝国cms自定义列表和内容的动态页面

当帝国CMS栏目启用静态生成之后,这种/action/ListInfo.php动态页面就访问不到了,系统做了跳转。有时候我们希望栏目生成静态html之后,还可以通过动态地址访问栏目,并且启用另外的模板。

下载附件,上传到网站根目录。

1,列表页面使用方法:http://你的域名/info/ListInfo.php?classid=64&tempid=2
classid是栏目ID,tempid是列表模板ID

2,内容页面使用方法:http://你的域名/info/ShowInfo.php?id=23&tempid=1&classid=64
id是文章ID,tempid是内容模板ID,classid是栏目ID

如果模板id不指定,程序会自动判断栏目或内容设置的模板。

阅读剩余部分

PHP中$_REQUEST、$_POST、$_GET的区别

1,$_GET 变量接受所有以 get 方式发送的请求,及浏览器地址栏中URL的 ? 之后的内容。
2,$_POST 变量接受所有以 post 方式发送的请求,例如,一个 form 以 method=post 提交,提交后 php 会处理 post 过来的全部变量。
3,$_REQUEST 支持两种方式发送过来的请求,即 postget 它都可以接受,显示不显示要看传递方法,get 会显示在 url 中(有字符数限制),post 不会在 url 中显示,可以传递任意多的数据(只要服务器支持)。

阅读剩余部分

PHP实例:php如何在json里嵌套一个json

常见需求:把一个父栏目下的子栏目循环出来,每个子栏目下再显示最新的几篇内容。

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "test";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

//一级菜单id
$pid = $_REQUEST['pid'];
$sql = "SELECT  *  FROM `master_class` WHERE pid=" . $pid;

//分类数据
$class_result = $conn->query($sql);

//最终数据json
$data_json = array();
//文章数据
$tmp_art=array();
//分类
$tmp_cla=array();

//有结果 
if ($class_result->num_rows > 0) {
    // while 输出数据
    while ($row = $class_result->fetch_assoc()) {
        //得到classid
        $classid = $row['id']; 
        $article_sql = "SELECT  *  FROM  `master_article` WHERE `classid`=" . $classid; 
        $tmp_cla['id']=$row['id'];
        $tmp_cla['name']=$row['name'];
        $tmp_cla['pid']=$row['pid'];
        
        //查询文章数据
        $article_result = $conn->query($article_sql);
        if ($article_result->num_rows > 0) {
            // while 输出数据
            while ($r= $article_result->fetch_assoc()) { 
               $tmp=array('id'=>$r['id'],'name'=>$r['name'],'classid'=>$r['classid']);
               $tmp_art[]=$tmp;
            }
            $tmp_cla['article']=$tmp_art;
            $tmp_art=null;
        } 
        $data_json[]=$tmp_cla;
    }

} else {
    echo "0 结果";
}

echo json_encode($data_json);

$conn->close();
?>

阅读剩余部分

PHP实例:将SQL查询结果循环显示,但最后一条数据显示额外的结构

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "test";
 
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 
 
$sql = "SELECT * FROM master";
$result = $conn->query($sql);
//有结果 
if ($result->num_rows > 0) { 
    //返回数据总条数
    $data_count=$result->num_rows;
    //方案1 
    //循环次数
    $num=1;
    // while 输出数据
    while($row = $result->fetch_assoc()) { 
        //之前的次数
        if($num<$data_count){
            echo 'num:'.$num.'id='.$row['id'].'<br/>';
        }
        //当循环次数等于数据总是 就是最后一条数据
        if($data_count==$num){
            echo 'Last num;'.$num.'id='.$row['id'].'<br/>'; 
        }
        //累加循环次数
        $num++;
    }
     
} else {
    echo "0 结果";
}
$conn->close();
?>

阅读剩余部分

帝国CMS以插件形式开发json格式的API接口

直接贴代码:

<?php
require('../../class/connect.php'); //引入数据库配置文件和公共函数文件
require('../../class/db_sql.php'); //引入数据库操作文件
require('../../data/dbcache/class.php'); //引入栏目缓存文件
$link=db_connect(); //连接MYSQL
$empire=new mysqlquery(); //声明数据库操作类
$editor=1; //声明目录层次

$bclassid = $_REQUEST['bclassid'];
$class_result = $empire->query("select classid,classname,bname,classing,classpagekey,intro from phome_enewsclass where bclassid = $bclassid");

$data_json = array();

while ($row=$empire->fetch($result)){
    $data_json[]=array(
        'classid'=>$row['classid'],
        'classname'=>$row['classname'],
        'classing'=>$row['classing'],
        'seotitle'=>$row['bname'],
        'keywords'=>$row['classpagekey'],
        'description'=>$row['intro']
    );
}
echo json_encode($data_json, json_unescaped_unicode);

db_close(); 
$empire=null; 
?>

使用说明:
1,将以上代码保存为sort_sub.php文件,上传到/e/extend/api/目录下,就可以通过:你的域名/e/extend/api/sort_sub.php?bclassid=1 访问接口,输出的是json格式
2,看文件中SQL语句的含义,这是获取指定栏目的下级子目录列表。
3,API地址后面的?bclassid是指定栏目的ID,在接口文件中是通过$_REQUEST['bclassid']获取。

阅读剩余部分