Existen muchas formas de hacer algo, pero no todas son eficientes. Por ejemplo, no debes hacer una consulta a base de datos por cada dos datos. Haz una para todos.
Se me ocurre cómo hacer lo que buscas con estas dos funciones:
Código PHP:
Ver original//$elementos=array(array('nota10'),array('nota9'),array('nota8'),array('nota7'),array('nota6'),array('nota5'));
//guardamos todos las entradas recuperadas de la base de datos en un array
while($fila = mysql_fetch_row($result)) $elementos[]=$fila; //no uso $fila como array porque el último elemento va a ser un FALSE
//primera funcion que se encarga de hacer la estructura del <ul> main
function primerNivel($elementos){
$cursor=1; //inicializamos el cursor que va a recorrer el array
$tamano=count($elementos); //el tamaño del array $html='';
if($tamano>0){ //procedemos si hay elementos, si no hay, no hacemos nada
$html.='<ul class="main">'; //empezamos el main
for($i=0;$i<ceil($tamano/2);$i++){ //hacemos solo la mitad de ciclos porque imprimimos los valores de 2 en 2 $html.='<li>';
$html.=segundoNivel($elementos, $cursor); //aquí llamamos a la funcion que genera el segundo <ul>
$html.='</li>'; //cerramos li
}
$html.='</ul>'; //cerramos el <ul> main
}
return $html;
}
//segunda funcion que hace la estructura del <ul> items
function segundoNivel($elementos, &$cursor){
$html='<ul class="items left clearfix">'; //empezamos el <ul> items
$html.='<li>'.$elementos[$cursor][0].'</li>'; //imprimimos el primer elemento del par
if(isset($elementos[$cursor+1])) $html.='<li>'.$elementos[$cursor+1][0].'</li>'; //aquí es posible que no tengamos segundo elemento cuando se trate del último par de valores $html.='</ul>'; //cerramos el <ul>
$cursor+=2; //incrementamos el cursor en 2
return $html;
}
//se usa así:
echo primerNivel($elementos);