Foros del Web » Programando para Internet » PHP »

dividir cantidad de registros por partes iguales

Estas en el tema de dividir cantidad de registros por partes iguales en el foro de PHP en Foros del Web. Buenas tardes tengo un problema y aun no logro encontral la logica de desarrollo, el problema es el siguiente: tengo 12 registros en un while, ...
  #1 (permalink)  
Antiguo 05/01/2016, 13:07
 
Fecha de Ingreso: junio-2013
Ubicación: santiago
Mensajes: 34
Antigüedad: 11 años, 5 meses
Puntos: 0
dividir cantidad de registros por partes iguales

Buenas tardes tengo un problema y aun no logro encontral la logica de desarrollo, el problema es el siguiente:

tengo 12 registros en un while, pero esos 12 registros quiero que cada 3 registros se guaden en un div diferente ejemplo:
Código PHP:

while{

<
div>
   <
p>registro 1</p>
   <
p>registro 2</p>
   <
p>registro 3</p>
</
div>

<
div>
   <
p>registro 4</p>
   <
p>registro 5</p>
   <
p>registro 6</p>
</
div>

<
div>
   <
p>registro 7</p>
   <
p>registro 8</p>
   <
p>registro 9</p>
</
div>

<
div>
   <
p>registro 10</p>
   <
p>registro 11</p>
   <
p>registro 12</p>
</
div>


}

espero que se entienda lo que quiero hacer y me den una ideasaludos 
  #2 (permalink)  
Antiguo 05/01/2016, 13:28
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 11 meses
Puntos: 39
Respuesta: dividir cantidad de registros por partes iguales

Puedes meterlo en un for, dentro del for pones como limite 12 y en cada iteración le sumas +3.
Así te creará 4 veces lo que necesitas, y dentro pondrías unicamente

Código HTML:
Ver original
  1. <div>
  2.    <p>registro x</p>
  3.    <p>registro x</p>
  4.    <p>registro x</p>
  5. </div>
  #3 (permalink)  
Antiguo 06/01/2016, 10:07
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 11 meses
Puntos: 20
Respuesta: dividir cantidad de registros por partes iguales

Hola amigo, la respuesta de rodocoyote 15 está bien,
pero queda la parte de imprimir esa "x" al formato que quieres,
Hace tiempo hice algo parecido, para un calendario (supongo q para algo parecido lo quieres :p)
Te dejo una formulita q hice en su momento, está algo enredada, supongo q a de haber una manera más sencilla, seguro la hay, pero de momento tal vez te pueda servir
(le sume 1 al final ya que como yo recorria un arreglo, iba de 0 a 11, le sumo 1 para que te aparezca el texto de 1 a 12) :

Código PHP:
Ver original
  1. for($i=0;$i<4;$i++){
  2.             echo "<div>";
  3.             echo "<p>Parrafo ".(($i+(2*$i))+1)."</p>";
  4.             echo "<p>Parrafo ".(($i+(1+(2*$i)))+1)."</p>";
  5.             echo "<p>Parrafo ".(($i+(2+(2*$i)))+1)."</p>";
  6.             echo "</div>";
  7. }

Saludos!
  #4 (permalink)  
Antiguo 06/01/2016, 12:09
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: dividir cantidad de registros por partes iguales

Si no es imprescindible hacerlo así, maqueta tu HTML y CSS de otra forma que no requiera alterar un for para meter y cerrar elementos "extraños" cada X posiciones..
Si es imprescible, mejor un doble for para hacer mas sencillo el control de que el numero de elementos a imprimir no sea múltiplo de 3 en tu caso.

Código PHP:
Ver original
  1. $elementos = 12;
  2. $elementos_linea = 3;
  3. for ($i = 0 ; $i < $elementos / $elementos_linea; $i++) {
  4.     echo '<div>';
  5.     for ($j = 1; $j <= min($elementos_linea, $elementos - $elementos_linea * $i); $j++) {
  6.         echo 'parrafo ' .  $i * $elementos_linea + $j;
  7.     }
  8.     echo '</div>';
  9. }
  #5 (permalink)  
Antiguo 06/01/2016, 14:05
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: dividir cantidad de registros por partes iguales

Utiliza la función array_chunk() que separa un array en partes iguales.

Código PHP:
Ver original
  1. foreach (array_chunk($array, 3) as $parte){
  2.     echo '<div>';
  3.     echo '<p>' . implode('</p><p>', $parte) . '</p>';
  4.     echo '</div>';
  5. }

La función implode() une a los elementos de un array con la cadena que se le pase como primer o segundo argumento (lee la documentación al respecto).

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: cantidad, dividir, iguales, partes, registro, registros
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 02:21.