最近在研究小程序,发现文章页面的调用没找到适合的ajaxphp现成的!
于是想着自己写一下吧!
首先,我们确定逻辑
逻辑属性
1、先判断id和channel 是否为空//理论上来说,从列表页进入文章页,列表的php是可以获取到channel 的,所以为了省事,直接得到channel
2、不为空则先用channel 查询 `dede_channeltype` 表得到addtable 是哪个表
3、然后根据id查询`dede_archives` 表得到标题 关键字等数据
4、接着查询2步骤得到的表名字 查询 body等其他信息
5、合并2个表
6、输出合并的数组,说起来容易
我们先本地测试
获取文章id和channel 判断是否为数字 然后如果没有就设置为0
$arcID = $aid = (isset($aid) && is_numeric($aid)) ? $aid : 0; $channelID = $channel = (isset($channel) && is_numeric($channel)) ? $channel : 0;//获取$channel 默认为0
如果有一个为0 则die 停止
if($aid==0 || $channelID==0) die(" Request Error! ");//如果有一个为0则退出
定义2个表
$channelcx = 'dede_channeltype';//根据channel 查询的表,需要得到附加表 $bodycx = "";//定义附加表字段
进行第二步骤查询得到附加表
global $dsql,$ftp; $dsql->IsError = FALSE;//IsError(返回 Boolean 值)是EXCEL中的一个函数,主要用于判断公式运行结果是否出错。只要在公式中加入ISERROR函数进行判断就可以避免出现错误值而返回一个空值。 $sql = "SELECT addtable FROM $channelcx WHERE id='$channelID'"; $rows = $dsql->GetOne($sql); $bodycx=$rows['addtable'];//得到附加表的字段值
得到附加表后,因为织梦附加表只有body 和自定义字段,还需要查询和列表一样的archives里面标题等数据表
合并查询 ,具体sql语句意思请查看 https://www.xhcss.com/xh/sqljc/sqlcjwt/215.html 一文
$sqls = "SELECT a.*,t.* FROM `dede_archives` as a JOIN $bodycx AS t ON a.id=t.aid where id=$aid"; $dsql->SetQuery($sqls);//执行一条查询 $dsql->Execute('list'); $row = $dsql->GetArray("list"); $state = 0;//是否有数据,默认没有数据 $data = array(); $index = 0; $data= $row;
得到$data就是最后的查询数据了!输出即可