PHP - Menu desplegable

 
Vista:

Menu desplegable

Publicado por Alberto (2 intervenciones) el 19/12/2014 19:16:26
Buenas,

He creado un menu desplegable por categorías que muestra subcategorías.

Quería hacer algo similar pero esta vez mostrando de la A a la Z, desplegando en cada letra las subcategorías que empiecen por dicha letra, pero lo estoy pasando mal aunque el planteamiento no parece ser demasiado complicado.

Esta es la forma en la que he hecho el desplegable de categoría

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
foreach( $header_action_categories as $row ) {
	$hijos = NULL;
	$list = NULL;
	echo "<ul class='dropdown'>";
	$list .= "<li>" . $row['name'];
	foreach( $header_action_subcategories as $row2 ) {
		if ( $row2['parent_id'] == $row['id'] ) {
			$hijos .= "<li><a href=".$row2['full_friendly_url'].">".$row2['name']."</a></li>";
			}
		}
	}
	if ( isset( $hijos ) && $hijos != NULL )	{
		$list .= "<ul>".$hijos."</ul>";
	}
	echo $list."</li></ul>";
}

Desde $header_action_categories recorro las categorías y $header_action_subcategories las subcategorías, mostrándolas con un desplegable mediante <ul class='dropdown'>.

Para el menú de la A a la Z he hecho esto, pero obviamente no está mostrando el menú como debería:

1
2
3
4
5
6
7
8
9
10
11
for ($i="A" ; $i!="AA" ; $i++) {
echo "<ul class='dropdown'>";
	$list .= "<li>" . $i;
	foreach( $header_action_subcategories as $row2 ) {
			$letra_ini = $row2['name'].substr($row2['name'],0,1);
			$letra_ini = substr($letra_ini,0,1);
				if ($letra_ini == $i){
					echo $list .= "<ul><a href=".$row2['full_friendly_url'].">".$row2['name']."</a></ul></li></ul>";
				}
	}
}

¿Alguien puede echarme una mano?

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Menu desplegable

Publicado por Alberto (2 intervenciones) el 19/12/2014 20:23:42
Creo que voy por el buen camino:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for ($i="A" ; $i!="AA" ; $i++) {
	echo "<ul class='dropdown'>";
	$list .= "<li>" . $i;
	foreach( $header_action_subcategories as $row2 ) {
			$letra_ini = $row2['name'].substr($row2['name'],0,1);
			$letra_ini = substr($letra_ini,0,1);
				if ($letra_ini == $i){
					$hijos .= "<li><a href=".$row2['full_friendly_url'].">".$row2['name']."</a></li>";
				}
	}
	if ( isset( $hijos ) && $hijos != NULL )	{
		$list .= "<ul>".$hijos."</ul>";
	}
	echo $list."</li></ul>";
}

Pero me está concatenando tanto $i como el contenido de cada desplegable ¿como podría hacer para que mostrase solo los que comienzan en cada letra sin que me muestre los anteriores?

082b6fc5c70e36b73d1ebcfcaa1272e2o
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Menu desplegable

Publicado por xve (6935 intervenciones) el 20/12/2014 10:43:17
Hola Alberto, he visto la imagen y tu código, y no me queda claro que quieres hacer...

Exactamente, como quieres que se muestre?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar