重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
//1.连接数据库
目前成都创新互联已为上千余家的企业提供了网站建设、域名、网站空间、网站托管、服务器托管、企业网站设计、怀远网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
$link = @mysql_connect('localhost','root','123456');
//2.判断是否连接成功
if(!$link) exit('数据库连接失败');
//3.选择数据库
mysql_select_db('mydatabase');
//4.设置字符集 utf8
mysql_set_charset('utf8');
//5.准备一个SQL语句
$sql = 'select * from user';
//6.发送SQL语句
$result = mysql_query($sql);
//7.判断并处理返回结果
if($result){
while($row = mysql_fetch_array($result)){
$list[] = $row;
}
echo "pre";
print_r($list);
echo "/pre";
}
//8.释放资源
mysql_free_result($result); //查询操作才需要释放结果集
mysql_close();
function get_category($id){
$str=array();
//$sql = "select * from biao where id=$id";查询节点,自己写吧
$result = array('id'=,'parent_id'=);//查询结果一个数组格式
if($result){
$str = get_category($result['parent_id']);
$str[]=$result;
}
return $str;
}
}
调用get_category()就行了,$str第一个元素是节点本身,去掉就行了。
从数据库直接查多好,用php遍历很耗资源的
例如SELECT * FROM `表名` WHERE pid = 29 group by id desc;
假设你系统里数据库请求的函数是 pdo_query (你自己根据情况调整),表名是tblcate
另外,这段代码使用到了array_column函数,该函数从php5.5起才有,如果你的版本较低,要找一个兼容函数放到函数库里(官方文档评论中就有实现)
以下是代码文本 如果复制过去出现T_VARIABLE错误,就是代码中字符被系统混掉了,你要重新手打一下
//这里根据你的意思,应该是选出没有下级的节点,如果需要全部或其它的,你根据情况修改,不影响后面的其它操作
$selectedNodes = pdo_query("select * from tblcate where pid not in(select pid from tblcate)");
//选出全部节点
$allNodes = pdo_query("select * from tblcate ");
//将节点数据使用id索引,方便获取
$allNodes = array_column($allNodes, NULL, 'id');
foreach($selectedNodes as $node){
$tree = getParentNode($node['pid']);
//这里的$tree 是上级名称拼起来的,不包含本级名称,如要包含,在后面附加上就行了
$node['tree'] = implode(',',$tree);
}
unset($node);
var_export($selectedNodes );
function getParentNode($pid){
global $allNodes;
$pnodes=[];
if($pid 0 isset($allNodes[$pid])){
$pNode = $allNodes[$pid];
$pnodes[]= $pNode['name'];
$rnodes = getParentNode($pNode['pid']);
if(!empty($rnodes)){
$pnodes = array_merge($pnodes,$rnodes);
}
}
return $pnodes;
}