Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] mostrar x cantidad de registros en diferentes divs

Estas en el tema de mostrar x cantidad de registros en diferentes divs en el foro de PHP en Foros del Web. Buen dia para todos. Tengo una tabla con cierta cantidad de registros.. y me gustaria poder visualizar estos registros en un div principal pero solo ...
  #1 (permalink)  
Antiguo 08/01/2014, 21:34
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 11 años, 5 meses
Puntos: 0
mostrar x cantidad de registros en diferentes divs

Buen dia para todos.

Tengo una tabla con cierta cantidad de registros.. y me gustaria poder visualizar estos registros en un div principal pero solo 6 registros en el div principal, y en el caso de haber mas de 6 registros automaticamente crear otro div para guardar los otros registros. que me imagino que sera usando un una estructura de repeticion como un siclo..

ejemplo:
$query = mysql_query(SELECT * FROM registros);
$num_registros = mysql_num_rows($query); // para saber cuantos registros hay,
suponiendo que hay 16 registros.

<div class="div_principal">
<div>registro 1 </div>
<div>registro 2 </div>
<div>registro 3 </div>
<div>registro 4 </div>
<div>registro 5 </div>
<div>registro 6 </div>
</div>

<div class="div_principal">
<div>registro 7 </div>
<div>registro 8 </div>
<div>registro 9 </div>
<div>registro 10 </div>
<div>registro 11</div>
<div>registro 12</div>
</div>

<div class="div_principal">
<div>registro 13 </div>
<div>registro 14 </div>
<div>registro 15</div>
<div>registro 16 </div>
</div>

como se observa solo son 6 registros maximos en un div_prinpal ya que si hay mas se tendria que crear otro div_principal asi sea solo para contener 1 solo rgistro.

el caso de ser 16 registros creo que seria asi.

$num_div_principal = ceil ($num_registros/6);

// uso del ceil para redondear el numero al siguiente ejem: 2.3 con la funcion ceil seria = 3

entonces creo que seria asi.

for($i=1 ; $i <= $num_div_principal ; $i++) // para crear el numero de divs principal
{

}
pero no se me ocurre como meter los 6 primeros registros y luego crear otro div_principal para meter los otros 6 ... y asi sucesivamente..


alguna idea ?? ?
  #2 (permalink)  
Antiguo 08/01/2014, 22:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: mostrar x cantidad de registros en diferentes divs

La idea, es que el recurso devuelto por mysql_query() se puede consumir, similar a un arreglo.

Y la función para fetching hace lo mismo que array_shift(), es decir, consume el primer elemento de la colección.

Usando el principio de pila puedes ir consumiendo la colección y a su vez ir creando el markup necesario, y dado a que es un problema de "elementos anidados" pues también necesitas meter otro loop por cada nivel a ingresar de la estructura.

Código PHP:
Ver original
  1. for ($i = 1; $i <= 3; $i++) {
  2.   $j = 6;
  3.   echo '<list>';
  4.   while ($j--) {
  5.     echo '<item>';
  6.     $x = fn($y); // fetching, etc.
  7.     echo '<item>';
  8.   }
  9.   echo '</list>';
  10. }
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/01/2014, 23:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: mostrar x cantidad de registros en diferentes divs

Puedes dividir el array en bloques de 6 (o la cantidad que desees) con la función array_chunk.

Un ejemplo:

Código PHP:
Ver original
  1. $array = array(
  2.                 "uno", "dos", "tres", "cuatro",
  3.                 "cinco", "seis", "siete", "ocho",
  4.                 "nueve", "diez", "once", "doce",
  5.                 "trece", "catorce", "quince", "dieciseis"
  6.         );
  7.  
  8. $newArray = array_chunk($array, 6);
  9.  
  10. foreach ($newArray as $arr) {
  11.     echo "<div>";
  12.     foreach ($arr as $a) {
  13.         echo $a . "<br />";
  14.     }
  15.     echo "</div>";
  16. }

El resultado es:

Código HTML:
Ver original
  1. uno
  2. dos
  3. tres
  4. cuatro
  5. cinco
  6. seis
  7.  
  8. siete
  9. ocho
  10. nueve
  11. diez
  12. once
  13. doce
  14.  
  15. trece
  16. catorce
  17. quince
  18. dieciseis

En tu caso, el array será el que formes con mysqli_fetch_array, con mysql_fetch_array (extensión obsoleta) o con cualquier otra función con la que puedas crear un array asociativo.

Como verás, aunque el último bloque no tenga 6 elementos, se forma con los que queden, que en el ejemplo son 4.

Saludos
__________________
«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
  #4 (permalink)  
Antiguo 09/01/2014, 08:01
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: mostrar x cantidad de registros en diferentes divs

listo el pollo , muchas gracias. la cosa quedo asi:

$query = mysql_query("SELECT * FROM avisos");

while($resultado = mysql_fetch_array($query)){
$array[] = $resultado['aviso'];
}


$newArray = array_chunk($array, 6);
foreach ($newArray as $arr) {
echo '<div style=" height:415px; background:red">';
foreach ($arr as $a) {
echo '<div class="aviso">'.$a.'</div>';
}
echo "</div>";
}

te cuento y me cuento que tendre que echarme una informada sobre los arreglos toy un poco menso con eso..

no se si la forma de guardar los registros en el $array[] sea la correcta, pero es la que me salio luego de echarme una medio googleada
  #5 (permalink)  
Antiguo 09/01/2014, 08:31
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: mostrar x cantidad de registros en diferentes divs

Es correcta la forma en que alimentaste a $array, pero no era necesario, pues en $resultado, ya tenías al array formado.

Saludos
__________________
«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
  #6 (permalink)  
Antiguo 09/01/2014, 13:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: mostrar x cantidad de registros en diferentes divs

Cita:
Iniciado por Alexis88 Ver Mensaje
Es correcta la forma en que alimentaste a $array, pero no era necesario, pues en $resultado, ya tenías al array formado.
¿Cual array?

Ahí $resultado es el array del item, no de la colección.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 09/01/2014, 13:49
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: mostrar x cantidad de registros en diferentes divs

Si te das cuenta, recorre el array $resultado que es el resultado de $resultado = mysql_fetch_array($query) y asigna cada uno de sus valores a $array. Por eso dije que no era necesario que lo alimente si ya tiene uno en $resultado que contiene los valores que desea mostrar.
__________________
«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
  #8 (permalink)  
Antiguo 09/01/2014, 14:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: mostrar x cantidad de registros en diferentes divs

Cita:
Iniciado por Alexis88 Ver Mensaje
Si te das cuenta, recorre el array $resultado que es el resultado de $resultado = mysql_fetch_array($query) y asigna cada uno de sus valores a $array. Por eso dije que no era necesario que lo alimente si ya tiene uno en $resultado que contiene los valores que desea mostrar.
No te equivoques, $resultado es el array de un único registro, no de la colección entera.

Código PHP:
Ver original
  1. while($resultado = mysql_fetch_array($query)){
  2.   $array[] = $resultado['aviso'];
  3. }

En dicho código agrega cada resultado a la colección.

El asunto era iterar todos los registros y no sólo uno.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 09/01/2014, 14:05
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: mostrar x cantidad de registros en diferentes divs

Es verdad, lo acabo de corroborar.

Gracias por la observación.
__________________
«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
  #10 (permalink)  
Antiguo 10/01/2014, 09:22
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: mostrar x cantidad de registros en diferentes divs

osea que como me quedo es la forma correcta ??
  #11 (permalink)  
Antiguo 10/01/2014, 11:38
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: mostrar x cantidad de registros en diferentes divs

Como solamente quieres listar los datos de una columna de la tabla de la BD, está bien.
__________________
«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, divs, mysql, registro, registros, select, tabla
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 03:57.