Foros del Web » Programando para Internet » PHP »

mostrar datos en columnas

Estas en el tema de mostrar datos en columnas en el foro de PHP en Foros del Web. hola estoy armando un script para mostrar los datos en x numeros de columnas y he pensado en la division del total de registros para ...
  #1 (permalink)  
Antiguo 11/11/2012, 06:57
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
mostrar datos en columnas

hola estoy armando un script para mostrar los datos en x numeros de columnas y he pensado en la division del total de registros para añadir el numero exacto en cada columna

el sistema seria por ejemplo

total 30 registros

columna 1 (colocar el registro del 0 al 9)

columna 2 (colocar el registro del 10 a 19)

columna 3 (colocar el registro del 20 al 29)


el problema es cuando el residuo de la division no sea entero por ejemplo 31 registros

tendria que poner asi

columna 1 (colocar el registro del 0 al 10)

columna 2 (colocar el registro del 11 al 20)

columna 3 (colocar el registro del 21 al 30)

teniendo en cuenta que los arrays empiezan desde 0

alguien me puede guiar de como crear el script?
  #2 (permalink)  
Antiguo 11/11/2012, 07:01
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 9 meses
Puntos: 1012
Respuesta: mostrar datos en columnas

a ver si esto te ayuda
Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; http-equiv="Content-Type" charset=utf-8"/>
<title></title>
</head>
<body>
<?php
$total_registros_encontrados = 52;

for ($j = 0 ; $j < $total_registros_encontrados; $j+=5) {
$temp .= " " .$j;
}

$arreglo = explode(" ", trim($temp));
$arr = Array();
for ($x = 0; $x< sizeof($arreglo); $x++) {
$arr[$x] = $arreglo[$x];
}
?>

<table border="1">
<tr>

<?php
for ($i = 1; $i <= $total_registros_encontrados; $i++) {
echo "<td>" .$i. "</td>";

// ==== Se puede hacer de
// -------- Esta manera
if ($i % 5 == 0) {
echo "</tr><tr>";
}
// ------
// ------ O de esta otra
//$cad = "\$valores=\$i == " .implode(" || \$i == ", $arr).";";
//eval($cad);
//if ($valores) {
//echo "</tr><tr>";
//}
// ---------
// ==============
}
?>
</tr>
</table>
</body>
</html>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 11/11/2012, 07:21
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: mostrar datos en columnas

Hola IsaBelM funciona el scirpt que me pasaste pero va haciendo filas


y yo quiero que me haga columnas, no una fila que me la llene por ejemplo de tres registros y me haga otra fila


por ejemplo que me cree un div con 10 registros y me cierre este div y despues otro div con 10registros mas y asi dependeindo del numero de resultados y columnas que quiera
  #4 (permalink)  
Antiguo 11/11/2012, 08:48
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: mostrar datos en columnas

ya lo solucioné

pego el codigo para que puede servir para otra vez

cargamos los datos
Código PHP:
  $SQLHoteles "SELECT * FROM hoteles ORDER BY id ASC";
    
$RHoteles mysql_query($SQLHoteles$conexion) or die(mysql_error());
   
$total_resultados mysql_num_rows($RHoteles); 
es este punto le puedes poner un LIMIT Y UN NUMERO para mostrar un numero de registros en concreto

Código PHP:
      // calculo el numero de registros que hay que poner
            
$t_r =  $total_resultados;
            
$columnas 3;

            
$residuo $t_r $columnas;
            
$residuoEntero ceil($residuo); // siem
                
echo "el residuo es: " .$residuo"<br>";
                
// el ceil redondea para arriba 
                
echo "el residuo entero es: ".$residuoEntero."<br><br>"
         
// final de calculos
       
       
echo '<div class="columna">';
       
$num 0;
       while (
$row mysql_fetch_array($RHoteles)) {
          echo 
"<p><strong>".$row[id]."</strong>";
          echo 
"  ".$row[nombreHotel]."(".$num.")</p>";
         
          
$num $num 1;
              if (
$num >=$residuoEntero){
                echo 
'</div><div class="columna">';
                
$num 0;
            }  
       }
// tanco el while
       
echo '</div>';
       
    } 
esto lo que hace es columnizar por grupos de div


ya se que es mejorable, quien quiera colaborar en el aporte... bienvenido
  #5 (permalink)  
Antiguo 11/11/2012, 09:04
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: mostrar datos en columnas

existe un error

y esta en este punto

Código PHP:
if ($num >=$residuoEntero){
                echo 
'</div><div class="columna">';
                
$num 0;
            } 
por ejemplo si tenemos 57 registros el resultado de la division es 19

te crea tres columnas pero te añade una mas pero vacia

si lo modificas así

Código PHP:
if ($num >$residuoEntero){
                echo 
'</div><div class="columna">';
                
$num 0;
            } 
te crea las tres columnas pero en las dos primeras te pone un registro mas

osease 20 registros en las dos primeras columnas y 17 en la última columna

si alguien lo puede arreglar se le agradecerá

muchas gracias de antemano
  #6 (permalink)  
Antiguo 11/11/2012, 09:05
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 9 meses
Puntos: 1012
Respuesta: mostrar datos en columnas

veamos si es esto lo que quieres
Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; http-equiv="Content-Type" charset=utf-8"/>
<title></title>
<style type="text/css">
#cont {
border: 1px solid blue;
width: 500px;
height: 300px;
}

div {
display: inline-block;
vertical-align: top;
border: 1px solid red;
margin-right: 10px;
padding: 0 3px;
height: 100%;
}
</style>
</head>
<body>
<?php
$total_registros_encontrados = 17;
$registroxbloque = 11;
?>



<div id="cont">
<?php
for ($i = 0; $i <= $total_registros_encontrados; $i++) {

if ($i % $registroxbloque == 0) {echo '<div>';}

echo $i. '<br />';

if ($i % $registroxbloque == 10) {echo '</div>';}
}
?>

</div>


</body>
</html>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 11/11/2012, 09:18
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: mostrar datos en columnas

si IsaBelM es lo que quiero pero con el script quue puse ya funciona pero con el tuyo si le pones otros numeros por ejemplo

total_registros_encontrados = 51
registros_bloque = 17

se desarma todo... y no hace el efecto

ya te digo que con el que puse yo funciona perfectamente pero solo pasa lo del final que añade un div más
  #8 (permalink)  
Antiguo 11/11/2012, 09:27
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: mostrar datos en columnas

IsaBelM ya encontré la solcion

Código PHP:
<div id="cont">
<?php
for ($i 0$i $total_registros_encontrados$i++) {

if (
$i $registroxbloque == 0) {echo '<div>';}

echo 
$i'<br />';

    
    if (
$i $registroxbloque == $registroxbloque-1) {echo '</div>';}
    }
?>
</div>
es en la linea for ($i = 0; $i < $total_registros_encontrados; $i++) { ya que me añadía un registro mas por que contaba hasta el numero total de registros
  #9 (permalink)  
Antiguo 11/11/2012, 09:27
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: mostrar datos en columnas

ahora tengo que ver como lo implemento para que me muestre los datos de la base de datos
  #10 (permalink)  
Antiguo 11/11/2012, 09:28
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 9 meses
Puntos: 1012
Respuesta: mostrar datos en columnas

no se desarma. es que no has sabido interpretar el código
cambia el resultado del 2º mod por el de $registros_bloque-1. en el acaso que apuntas (16)
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #11 (permalink)  
Antiguo 11/11/2012, 09:31
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: mostrar datos en columnas

ya funciona

ahora el tema es como hacer el recorrido dentro de los registros de la base de datos

  #12 (permalink)  
Antiguo 13/11/2012, 09:26
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: mostrar datos en columnas

hola de nuevo

despues de hacer muchas pruebas el codigo tiene un fallo

Código PHP:
<?php
$total_registros_encontrados 
7;
$registroxbloque 3;
?>



<div id="cont">
<?php
for ($i 0$i <= $total_registros_encontrados$i++) {

if (
$i $registroxbloque == 0) {echo '<div>';}

echo 
$i'<br />';

if (
$i $registroxbloque == $registroxbloque-1) {echo 'fin</div>';}
}
?>
si quiero que el contenido me lo ponga en 3 columnas si o si divido el totao_registros_encontrados por tres y lo rendondeo con un ceil() que me muestre todos los registros


entonces en el if

Código HTML:
if ($i % $registroxbloque == $registroxbloque-1) {echo '</div>';}
no se cumple y no me aplica el cierre del div

alguna solucion?

Etiquetas: columnas, registro
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 12:29.