Jump to content
php.lv forumi

Recommended Posts

Posted

Labdien kolēģi..

 

Cīnos idejiski ar dinamisku menubar.. Ar pirmā līmeņa menu linkiem taka nebūtu problēmas. Viegli izvilkt burtiski, kā vērtību. Bet..

Kā to visu padarīt dziļāk: Derētu:

ir: links1 links2 links3

derētu arī: links1.1 links2.1 links 3.3

 

Paldies..

Posted (edited)

Tas, ko tu meklē, saucas rekursija. Pseidokods -

 

$items = get_menu_items(0);
function get_menu_items($parent){
  $items = SQL::query("SELECT `title`,`url`,`id` WHERE `parent`='$parent'");
   foreach ($items as $item){
  	$item->childs = get_menu_items($item->id);
   }
 return $items;
}

Edited by F3llony
Posted

Diezgan daudz kveriji var tikt izpildīti, jo katram apakšlīmenim tiek izsaukts jauns kverijs. Izmanto kešošanu!

Posted

Paldies, ceru ka noderēs.. pašlaik man ir:

 

function getMenu () {
$sql = "SELECT * FROM menu WHERE parent='0' ORDER BY sort ASC";
$result = mysql_query ($sql) or die (mysql_error());
echo "<ul id=\"menu\">";
while ($r = mysql_fetch_array($result)) {
 	echo  "<li><a href='".$r['link']."'>".$r['label']."</a></li>";
     	}
echo "</ul>";
}

 

Kaut kā idejiski man neiet kopā ar F3llony.

Un paldies Dagreiv, bet tas jau vēlāk..

Posted

Lūdzu beidz jaukt kopā visu ar HTML!

 

~~~

$menu = get_items();

 

?>

 

<?php foreach ($menu as $items): ?>

 

<html><?= $item ?></html>

 

<?php end; ?>

~~~

 

Tavā funkcijā nav rekursija! Rekursija ir sevis izsaukšana.

Papēti vērleiz Feļona piemēru.

Posted (edited)

Diezgan daudz kveriji var tikt izpildīti, jo katram apakšlīmenim tiek izsaukts jauns kverijs. Izmanto kešošanu!

Normālā situācijā, dati tiek saņemti no DB masīvā ar vienu kveriju un no tā tiek uzbūvēts menu apgriezti rekursīvi ciklējot caur masīvu, ne ar N kverijiem. Pardon, biju pusaizmidzis.

Edited by F3llony

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...