Quiero agregar dos atributos de clase diferentes a mis primeras y cuartas etiquetas <ol>
, pero realmente no sé cómo agregarlas a mi función recursiva. ¿alguien me puede ayudar?Problema de la función recursiva de PHP?
Aquí está mi script PHP.
function make_list ($parent = 0, $parent_url = '') {
global $link;
echo '<ol>';
foreach ($parent as $id => $cat) {
if($cat['parent_id'] == '0'){
$url = $parent_url . $cat['url'];
echo '<li><a href="' . $url . '" title="' . $cat['category'] . ' Category Link" style="color: orange; font-weight: bold;">' . $cat['category'] . '</a>';
} else {
$url = $parent_url . $cat['url'];
// Display the item:
echo '<li><a href="' . $url . '" title="' . $cat['category'] . ' Category Link">' . $cat['category'] . '</a>';
}
if (isset($link[$id])) {
make_list($link[$id], $url);
}
echo '</li>';
}
echo '</ol>';
}
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT * FROM categories ORDER BY parent_id, category ASC");
if (!$dbc) {
print mysqli_error();
}
$link = array();
while (list($id, $parent_id, $category, $url, $depth) = mysqli_fetch_array($dbc)) {
$link[$parent_id][$id] = array('parent_id' => $parent_id, 'category' => $category, 'url' => $url, 'depth' => $depth);
}
make_list($link[0]);
salida
<ol>
<li>First Nested List</li>
<li>First Nested List</li>
<li>First Nested List
<ol>
<li>Second Nested List</li>
<li>Second Nested List</li>
<li>Second Nested List
<ol>
<li>Third Nested List</li>
<li>Third Nested List</li>
<li>Third Nested List
<ol>
<li>Fourth Nested List</li>
<li>Fourth Nested List</li>
<li>Fourth Nested List</li>
</ol>
</li>
<li>Third Nested List</li>
<li>Third Nested List</li>
</ol>
</li>
<li>Second Nested List</li>
<li>Second Nested List</li>
</ol>
</li>
<li>First Nested List</li>
<li>First Nested List</li>
</ol>
Creo que la recursividad es innecesaria. Está iterando sobre todos los pares clave, valor de una matriz. Parece que tienes problemas para ordenar las variables que necesitas usar. El uso de variables necesita mucho trabajo. –
@Peter Ajtai, la recursividad es necesaria para mostrar las categorías correctamente, a menos que pueda obtener un mejor guión que haga lo mismo. – GENx
Debería pasar '$ link' y solo eso en' make_list', entonces parece que puede usar 1 foreach anidado en otro para iterar y producir todos los enlaces que desee. No entiendo exactamente lo que intentas hacer, así que no puedo generar una respuesta detallada, pero está claro que deberías iterar sobre '$ link'. –