Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Quiero realizar una consulta que reanude despues del último registro impreso

Estas en el tema de Quiero realizar una consulta que reanude despues del último registro impreso en el foro de PHP en Foros del Web. Buenas noches tengo la siguiente estructura HTML: <!-- Inicio de UL - Main --> <ul class"main"> <!-- Inicio de la etiqueta <li>--> <!-- Cada <li> ...
  #1 (permalink)  
Antiguo 07/09/2013, 23:07
 
Fecha de Ingreso: enero-2012
Mensajes: 24
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Quiero realizar una consulta que reanude despues del último registro impreso

Buenas noches tengo la siguiente estructura HTML:
<!-- Inicio de UL - Main -->
<ul class"main">


<!-- Inicio de la etiqueta <li>-->
<!-- Cada <li> contiene un <ul> con 2 respectivos <li>-->
<li>

<ul class="items left clearfix">
<li>
nota10
</li>
<li>
nota9
</li>
</ul>

</li>

<!-- Inicio de la etiqueta <li>-->
<li>

<ul class="items left clearfix">
<li>
nota8
</li>
<li>
nota7
</li>
</ul>

</li>
</ul>
<!-- Fin de UL - Main -->

Nota 10 y nota 9 y las demás son noticias que están guardadas en una base de datos y las imprimo con mysql_fetch_array, el slider jquery tiene esta estructura, como puedo hacer esta estructura dinamica con PHP obviamente para que cada que se agreguen 2 <li> dentro de <ul class="items left clearfix"> se genere otro <li> dentro de <ul class"main"> no se si me estoy explicando correctamente, obviamente la idea es que se generen noticias dinamincamente sin que se repitan con las que ya estan impresas.
  #2 (permalink)  
Antiguo 08/09/2013, 03:15
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 8 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
  #3 (permalink)  
Antiguo 08/09/2013, 07:42
 
Fecha de Ingreso: enero-2012
Mensajes: 24
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Quiero realizar una consulta que reanude despues del último registro impre

Buenos días Onedy, agradezco tu comentario agregare el código para ver que resultado tengo pero pienso que me ayudaste muchísimo, tenia noción de que la solución era utilizando algo de arreglos pero la segunda función era otra de mis grandes dudas como generar etiquetas cada cierto ciclo, voy a probar tu solución si no es mucha molestia y tengo alguna otra duda espero contar con tu asesoría saludos.

Etiquetas: php+bd+mysql, php+css
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:12.