Jump to content
php.lv forumi

Menu, sub-menu


rausis

Recommended Posts

Ir funkcija, kura rāda izvēlnes sadaļas un apakšsadaļas, darbojas kā nākas, tikai veic pārāk daudz mysql vaicājumus, varbūt ir kāda iespēja viņu optimizēt, taisīt savādāk, tomēr 5 sql vaicājumi priekš 2 sadaļām un 2 apakšadaļām ir par šerpu, ir plānotas stipri vairāk sadaļas un apakšadaļas, tapēc griežos pie jums, pēc palīdzības, padoma. Paldies... :)

 

function display_sub_menu($parent, $lim) {
  global $selected;
  $sql = sprintf("SELECT id, title, body FROM article_lv WHERE parent_id = %d",$parent);
  $res = sql_query($sql) or die(mysql_error());
  echo ($lim > 0 ? '<i>' : '');
  while ($row = mysql_fetch_array($res)) {
  echo "<li><a href=\"index.php?p=".$row['id']."\">\n";
  echo "<span".($selected == "index.php?p=".$row['id']."" ? " style=\"font-weight: bold;\"" : "").">".$row['title']."</span></a>\n";
  echo "</a></li>\n";
  display_sub_menu($row['id'], $lim+1);
  }
  echo ($lim > 0 ? '</i>' : '');
}// function display_sub_menu

Link to comment
Share on other sites

Jā, es arī agrāk šādi veidoju lapas kartes (teorētiski tas pats vien ir).

Šodien jau es to daru šādi:

<?
 function sitemap($pid,$t){
  global $lx;
  if(empty($t[$pid]) || !is_array($t[$pid])){
  return "";
  }
  $s='<ul>';
  foreach($t[$pid] as $key=>$value){
  $s.='<li><a href="/'.$lx.'/'.url($key).'">'.$value.'</a>'.sitemap($key,$t).'</li>';
  }
  $s.='</ul>';
  return $s;
 }
 $topics=array();
 $tsql="SELECT t.id, t.parent_id, ta.name FROM `topics` t, `topics_alias` ta WHERE t.active=1 AND ta.topic_id=t.id AND ta.lang_id=".intval($l)." ORDER BY t.position ASC";
 $tres=mysql_query($tsql);
 while($trow=mysql_fetch_object($tres)){
$topics[$trow->parent_id][$trow->id]=$trow->name;
 }
 echo sitemap(0,$topics);
?>

Link to comment
Share on other sites

×
×
  • Create New...