Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/09/2013, 03:15
Onedy
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Quiero realizar una consulta que reanude despues del último registro impre

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
  1. //$elementos=array(array('nota10'),array('nota9'),array('nota8'),array('nota7'),array('nota6'),array('nota5'));
  2. //guardamos todos las entradas recuperadas de la base de datos en un array
  3. $elementos=array();
  4. while($fila = mysql_fetch_row($result)) $elementos[]=$fila; //no uso $fila como array porque el último elemento va a ser un FALSE
  5.  
  6. //primera funcion que se encarga de hacer la estructura del <ul> main
  7. function primerNivel($elementos){
  8.     $cursor=1; //inicializamos el cursor que va a recorrer el array
  9.     $tamano=count($elementos); //el tamaño del array
  10.     $html='';
  11.     if($tamano>0){ //procedemos si hay elementos, si no hay, no hacemos nada
  12.         $html.='<ul class="main">'; //empezamos el main
  13.         for($i=0;$i<ceil($tamano/2);$i++){ //hacemos solo la mitad de ciclos porque imprimimos los valores de 2 en 2
  14.             $html.='<li>';
  15.             $html.=segundoNivel($elementos, $cursor); //aquí llamamos a la funcion que genera el segundo <ul>
  16.             $html.='</li>'; //cerramos li
  17.         }
  18.         $html.='</ul>'; //cerramos el <ul> main
  19.     }
  20.     return $html;
  21. }
  22.  
  23. //segunda funcion que hace la estructura del <ul> items
  24. function segundoNivel($elementos, &$cursor){
  25.     $html='<ul class="items left clearfix">'; //empezamos el <ul> items
  26.     $html.='<li>'.$elementos[$cursor][0].'</li>'; //imprimimos el primer elemento del par
  27.     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
  28.     $html.='</ul>'; //cerramos el <ul>
  29.     $cursor+=2; //incrementamos el cursor en 2
  30.     return $html;
  31. }
  32. //se usa así:
  33. echo primerNivel($elementos);

Última edición por Onedy; 08/09/2013 a las 03:25