Re: Arrays help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux