Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 面包屑导航链接,递归数组,PDO_Php_Pdo - Fatal编程技术网

Php 面包屑导航链接,递归数组,PDO

Php 面包屑导航链接,递归数组,PDO,php,pdo,Php,Pdo,我有一个数据库表,其中有两列用于页面URL和URL父项,如下所示: URL |父 动物|(空) 哺乳动物 老虎|哺乳动物 我想把它转换成PDO。这是原始脚本: $TopnavTable = 'gz_life'; $TopnavName = 'Taxon'; function get_path($node, $TopnavTable, $TopnavName) { $result = mysql_query('SELECT Parent FROM ' . $TopnavTable . ' WHE

我有一个数据库表,其中有两列用于页面URL和URL父项,如下所示:

URL |父 动物|(空) 哺乳动物 老虎|哺乳动物

我想把它转换成PDO。这是原始脚本:

$TopnavTable = 'gz_life';
$TopnavName = 'Taxon';

function get_path($node, $TopnavTable, $TopnavName) {
$result = mysql_query('SELECT Parent FROM ' . $TopnavTable . ' WHERE ' . $TopnavName .  '="'.$node.'";');

 $row = mysql_fetch_array($result);
 $path = array();
 if ($row['Parent']!='') {
   $path[] = $row['Parent'];

  $path = array_merge(get_path($row['Parent'], $TopnavTable, $TopnavName), $path);
  }
 return $path;
}

switch ($MyPage)
{
 case 'ChildPage':
 $TopNav = str_replace('Carnivora', '', $TopNav);
 break;
 default:
 break;
}

$mypath = get_path($MyURL, $TopnavTable, $TopnavName);
$MyLink = $mypath;
$MyLink = str_replace('Life', '', $MyLink);
$MyDisplay = $mypath;
for($i=0;$i<count($mypath);$i++){
$TopNav = "<a href=\"".$MyLink[$i]."\"> ".$MyDisplay[$i]."</a>&nbsp;&gt;";
$That = array('<a href="Life">', '"> ', '&gt;', '<a href="');
$This = array('<a href="/Life/">', '">', '&gt; ', '<a href="/Life/');
$TopNav = str_replace($That, $This, $TopNav);
$TopnavTable='gz_life';
$TopnavName='Taxon';
函数get_path($node、$TopnavTable、$TopnavName){
$result=mysql_query('SELECT Parent FROM'.$TopnavTable.'WHERE'.$TopnavName.'='.$node.';');
$row=mysql\u fetch\u数组($result);
$path=array();
如果($row['Parent']!=''){
$path[]=$row['Parent'];
$path=array\u merge(获取路径($row['Parent'],$TopnavTable,$TopnavName),$path);
}
返回$path;
}
交换机($MyPage)
{
案例“ChildPage”:
$TopNav=str_替换('Carnivora','',$TopNav);
打破
违约:
打破
}
$mypath=get_path($MyURL、$TopnavTable、$TopnavName);
$MyLink=$mypath;
$MyLink=str_replace('Life',''$MyLink);
$MyDisplay=$mypath;

对于($i=0;$iSee
根目录的路径:$stm=$pdo->prepare中的面包屑路径("选择:MyURL作为节点\名称,up1。分类单元作为up1 \分类单元,up2。分类单元作为up2 \分类单元,up3。分类单元作为up3 \分类单元从gz\ U life作为节点左外连接gz\ U life作为up1上的up1。分类单元=:MyParent left outer join gz\ U life作为up2上的up2。分类单元=up1。Parent left outer join gz\ U life作为up3上的up3。分类单元=up2。Parent GROUP BY up1。Taxon ORDER BY nod BYe_name);$stm->execute(数组('MyURL'=>$MyURL,'MyParent'=>$MyParent));而($row=$stm->fetch()){$Taxon1=$row['up1\u Taxon'];$Taxon2=$row['up2\u Taxon'];$Taxon3=$row['up3\u Taxon']}我发布了我最终使用的查询。它似乎工作正常,但与教程中使用的查询不同。我感到困惑,直到我意识到教程使用了一个带有两个数字键的表,id和parentid。我的表只有一个。但我发现,如果我为两个变量提供值-$MyURL,我仍然可以使表工作(特定网页的URL,与my table.field gz_life.Taxon中的值匹配)和$MyURL的父项。因此,如果我查看URL MySite/life/Canis_luse(狼),它的父项应该是Canis、它的祖父母Canidae和它的曾祖父母Carnivora。我对显示多个结果的脚本有问题(例如,肉食动物),但我发现我可以通过添加GROUP by(up1.分类单元、up2.分类单元或up3.分类单元,但不是普通的“分类单元”)来修复它。一个小问题:为什么我必须创建$MyParent?我也可以提供一个特定的值:在up1上。Taxon='Canis',但这似乎也应该起作用:在up1上。Taxon=node.Parent。但它不起作用,我找不到任何其他有效的值。我想这没什么大不了的,因为我从其他查询。我在此使用嵌套集模型的
版本。这不需要您使用的查询中的节点深度。有关详细信息,请向我发送电子邮件(请参阅我的配置文件)
$TopnavTable = 'pox_topics';
$TopnavName = 'URL';

function get_path($dbh,$node,$TopnavTable, $TopnavName) {
 $stmt = $dbh->prepare("SELECT name FROM $TopnavTable WHERE $TopnavName = ?");
 $stmt->bindValue(1,$node);
 $stmt->execute();
 $stmt->setFetchMode(PDO::FETCH_ASSOC);  
 $row = $stmt->fetch();  
 $path = array_merge(get_path($pdo,$row['Parent'], $TopnavTable, $TopnavName), $path);
 return  $path ;  
}

$Path2 = explode("/", $path);
$arrlength=count($Path2);
$html ='<a href="/Topics">'.$Path2[0].'</a> > ';//First Member
for($x=1;$x<$arrlength-1;$x++)  {//Between first & last
 $html .= '<a href="/Topics/'.$Series.''.$Path2[$x].'">'.$Path2[$x].'</a> > ' ;
}
$html .= '<span class="navHere"><b>'.$Path2[$x].'</b></span>'; //Last member
$html = str_replace('/'.$MySection.'/'.$MySection.'', '/'.$MySection.'', $html);
echo $html ;