On Fri, 2007-01-05 at 18:48 +0200, William Stokes wrote:
> Hello,
>
> I'm making a menu script that uses mysql, php and javascript to build a "on
> mouse over" dropdown menu to a page. I ran into some problems and would need
> help to get this working. (This is just the top level of the menusystem)
>
> 1. Get the toplevel links from DB, create array and put values there.
>
> $sql ="SELECT * FROM x_menu WHERE menulevel = '1' ORDER BY 'id' ASC";
Yeesh... should be using parent ID references. How does a sub-menu item
know to which menu item it belongs? It has a parent right? What
determines a root menu entry? No parent (or "root node" parent)... What
is this wierd menulevel field?
> $result=mysql_query($sql);
> $num = mysql_num_rows($result);
> $cur = 1;
> while ($num >= $cur) {
> $row = mysql_fetch_array($result);
> $id = $row["id"];
> $menulevel = $row["menulevel"];
> $linktext = $row["linktext"];
> $linkurl = $row["linkurl"];
> $toplevel = array("$id", "$menulevel", "$linktext", "$linkurl");
> $cur ++;
> }
>
> The first problem comes here. How can I create a different array at every
> iteration of the loop? Or how this should be done if the toplevel objects
> are echoed with foreach to the browser like this:
Just create the array at each iteration of the loop...
$foo = array( /* put some data in it */ )
>
> $TopLevelCounter = 1;
> foreach ($toplevel as $value){
> print "menuSyS.addItem('labelItem', '$toplevel[2]', $TopLevelCounter,
> $width, '$colour1', '#0000aa', '$colour2');\n";
> $TopLevelCounter ++;
> }
>
> Now, because I just fill the same array again and again in the DB query all
> top level items finally contain the same text. So my question is how to
> query the DB and create the arrays so that it would be easy to refer to the
> data in the arrays when printing to screen. Do I have to make
> multidimensional arrays?
Yes.
> If so how to implement them here and how they
> should be referred to when printing to browser?
Use a foreach loop for the menu array. When you come across a menu item
with children, use another foreach loop. Alternatively you can use
recursion.
Cheers,
Rob.
--
.------------------------------------------------------------.
| InterJinn Application Framework - http://www.interjinn.com |
:------------------------------------------------------------:
| An application and templating framework for PHP. Boasting |
| a powerful, scalable system for accessing system services |
| such as forms, properties, sessions, and caches. InterJinn |
| also provides an extremely flexible architecture for |
| creating re-usable components quickly and easily. |
`------------------------------------------------------------'
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php