Gracias por la respuesta, pero afortunadamente ya solucioné el problema.
La cuestión es que al utilizar el patrón singleton creo una sola conexión lo cual provocaba que en la iteración anidada de consulta se reemplace el identificador de la consulta (id_consulta).
Para solucionarlo simplemente dejé de utilizar la iteración anidada cambiandola por una consulta "Join", de esta manera el identificador de consulta (id_consulta) no era cambiado en el recorrido del ciclo.
Para quien le pueda interesar aquí les dejo el codigo de la clase y menu...
index.class.php
Código PHP:
class bd_mysql {
/* Variables de conexion */
private $servidor;
private $usuario_bd;
private $clave_bd;
private $database;
private static $instance;
/* Identificador de conexión y consulta */
private $conexion_id;
private $consulta_id;
/* Método constructor */
private function __construct(){
$this->servidor = "localhost";
$this->usuario_bd = "root";
$this->clave_bd = "mysql";
$this->database = "dumpingoo";
$this->conectar();
}
public static function singleton(){
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
/* Clone no permitido */
public function __clone(){
trigger_error('Clone no se permite.', E_USER_ERROR);
}
/*Conexion a la bd*/
public function conectar(){
/* Conectamos al servidor */
$this->conexion_id=mysql_connect($this->servidor, $this->usuario_bd, $this->clave_bd);
/* Seleccionamos la base de datos */
mysql_select_db($this->database, $this->conexion_id);
}
public function consultar($query){
if(!empty($query)){
/* Ejecutamos la consulta */
$this->consulta_id=mysql_query($query, $this->conexion_id);
}
}
/* Almacenamos el resultado de la consulta en un objeto */
public function ver_consulta(){
return mysql_fetch_object($this->consulta_id);
}
}
index.php
Código PHP:
....
....
include_once("index.class.php");
$seccion = bd_mysql::singleton();
$seccion->consultar("SELECT secciones.*, categorias.* FROM secciones, categorias WHERE secciones.id_seccion = categorias.id_seccion");
$sec = $seccion->ver_consulta();
do{
$matriz[$sec->nombre_seccion][$sec->nombre_categoria] = $sec->id_categoria;
}while($sec = $seccion->ver_consulta());
....
....
<div id="menu1">
<ul>
<?
foreach($matriz as $seccion => $vseccion){
?>
<li><span><? echo $seccion; ?></span>
<ul>
<?
foreach($vseccion as $categoria => $vcategoria){
?>
<li><a href="<? echo $vcategoria; ?>" ><? echo $categoria; ?></a></li>
<?
}
?>
</ul>
</li>
<br />
<?
}
?>
<li><div style="text-align: center;">
<!-- start *****macro.com code -->
<a href="http://www.*****macro.com/index.php?*****macropasto" target="_blank"><b><img src="http://www.*****macro.com/images/banners/es/004.gif" title="***** Macro" alt="***** Macro" border="0" /></b></a>
<!-- end *****macro.com code --></div>
</li><br />
</ul>
</div>
....
....
Y listo... quedo abierto a cualquier sugerencia...